psdi-data-conversion 0.0.23__tar.gz → 0.0.30__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (169) hide show
  1. psdi_data_conversion-0.0.30/.github/workflows/ci-release.yml +130 -0
  2. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/PKG-INFO +1 -1
  3. psdi_data_conversion-0.0.30/psdi_data_conversion/static/content/index-versions/psdi-common-footer.html +96 -0
  4. psdi_data_conversion-0.0.30/psdi_data_conversion/static/content/psdi-common-footer.html +96 -0
  5. psdi_data_conversion-0.0.30/psdi_data_conversion/static/img/psdi-logo-darktext-simple.png +0 -0
  6. psdi_data_conversion-0.0.30/psdi_data_conversion/static/img/psdi-logo-lighttext-simple.png +0 -0
  7. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/pyproject.toml +5 -2
  8. psdi_data_conversion-0.0.23/.github/workflows/ci-release.yml +0 -59
  9. psdi_data_conversion-0.0.23/.github/workflows/job-publish-pypi.yml +0 -74
  10. psdi_data_conversion-0.0.23/psdi_data_conversion/static/content/index-versions/psdi-common-footer.html +0 -99
  11. psdi_data_conversion-0.0.23/psdi_data_conversion/static/content/psdi-common-footer.html +0 -99
  12. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/.github/workflows/ci-cron.yml +0 -0
  13. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/.github/workflows/ci-deploy-production.yml +0 -0
  14. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/.github/workflows/ci-feature.yml +0 -0
  15. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/.github/workflows/ci-main.yml +0 -0
  16. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/.github/workflows/ci-pr.yml +0 -0
  17. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/.github/workflows/ci-rc-hotfix.yml +0 -0
  18. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/.github/workflows/job-anchore-scan.yml +0 -0
  19. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/.github/workflows/job-container-push.yml +0 -0
  20. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/.github/workflows/job-deploy-azure.yml +0 -0
  21. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/.github/workflows/job-deploy-k8s.yml +0 -0
  22. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/.github/workflows/job-open-pull-request.yml +0 -0
  23. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/.github/workflows/job-publish-doc.yml +0 -0
  24. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/.github/workflows/job-tag.yml +0 -0
  25. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/.github/workflows/job-test-gui.yml +0 -0
  26. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/.github/workflows/job-test-python.yml +0 -0
  27. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/.gitignore +0 -0
  28. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/CHANGELOG.md +0 -0
  29. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/CONTRIBUTING.md +0 -0
  30. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/LICENSE +0 -0
  31. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/README.md +0 -0
  32. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/psdi_data_conversion/__init__.py +0 -0
  33. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/psdi_data_conversion/app.py +0 -0
  34. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/psdi_data_conversion/bin/linux/atomsk +0 -0
  35. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/psdi_data_conversion/bin/linux/c2x +0 -0
  36. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/psdi_data_conversion/bin/mac/atomsk +0 -0
  37. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/psdi_data_conversion/bin/mac/c2x +0 -0
  38. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/psdi_data_conversion/constants.py +0 -0
  39. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/psdi_data_conversion/converter.py +0 -0
  40. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/psdi_data_conversion/converters/__init__.py +0 -0
  41. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/psdi_data_conversion/converters/atomsk.py +0 -0
  42. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/psdi_data_conversion/converters/base.py +0 -0
  43. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/psdi_data_conversion/converters/c2x.py +0 -0
  44. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/psdi_data_conversion/converters/openbabel.py +0 -0
  45. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/psdi_data_conversion/database.py +0 -0
  46. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/psdi_data_conversion/dist.py +0 -0
  47. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/psdi_data_conversion/file_io.py +0 -0
  48. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/psdi_data_conversion/log_utility.py +0 -0
  49. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/psdi_data_conversion/main.py +0 -0
  50. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/psdi_data_conversion/scripts/atomsk.sh +0 -0
  51. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/psdi_data_conversion/scripts/c2x.sh +0 -0
  52. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/psdi_data_conversion/security.py +0 -0
  53. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/psdi_data_conversion/static/content/accessibility.htm +0 -0
  54. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/psdi_data_conversion/static/content/convert.htm +0 -0
  55. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/psdi_data_conversion/static/content/convertato.htm +0 -0
  56. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/psdi_data_conversion/static/content/convertc2x.htm +0 -0
  57. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/psdi_data_conversion/static/content/documentation.htm +0 -0
  58. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/psdi_data_conversion/static/content/feedback.htm +0 -0
  59. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/psdi_data_conversion/static/content/header-links.html +0 -0
  60. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/psdi_data_conversion/static/content/index-versions/header-links.html +0 -0
  61. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/psdi_data_conversion/static/content/index-versions/psdi-common-header.html +0 -0
  62. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/psdi_data_conversion/static/content/psdi-common-header.html +0 -0
  63. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/psdi_data_conversion/static/content/report.htm +0 -0
  64. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/psdi_data_conversion/static/data/data.json +0 -0
  65. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/psdi_data_conversion/static/img/colormode-toggle-dm.svg +0 -0
  66. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/psdi_data_conversion/static/img/colormode-toggle-lm.svg +0 -0
  67. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/psdi_data_conversion/static/img/psdi-icon-dark.svg +0 -0
  68. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/psdi_data_conversion/static/img/psdi-icon-light.svg +0 -0
  69. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/psdi_data_conversion/static/img/psdi-logo-darktext.png +0 -0
  70. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/psdi_data_conversion/static/img/psdi-logo-lighttext.png +0 -0
  71. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/psdi_data_conversion/static/img/social-logo-bluesky-black.svg +0 -0
  72. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/psdi_data_conversion/static/img/social-logo-bluesky-white.svg +0 -0
  73. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/psdi_data_conversion/static/img/social-logo-instagram-black.svg +0 -0
  74. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/psdi_data_conversion/static/img/social-logo-instagram-white.svg +0 -0
  75. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/psdi_data_conversion/static/img/social-logo-linkedin-black.png +0 -0
  76. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/psdi_data_conversion/static/img/social-logo-linkedin-white.png +0 -0
  77. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/psdi_data_conversion/static/img/social-logo-mastodon-black.svg +0 -0
  78. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/psdi_data_conversion/static/img/social-logo-mastodon-white.svg +0 -0
  79. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/psdi_data_conversion/static/img/social-logo-x-black.svg +0 -0
  80. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/psdi_data_conversion/static/img/social-logo-x-white.svg +0 -0
  81. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/psdi_data_conversion/static/img/social-logo-youtube-black.png +0 -0
  82. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/psdi_data_conversion/static/img/social-logo-youtube-white.png +0 -0
  83. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/psdi_data_conversion/static/img/ukri-epsr-logo-darktext.png +0 -0
  84. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/psdi_data_conversion/static/img/ukri-epsr-logo-lighttext.png +0 -0
  85. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/psdi_data_conversion/static/img/ukri-logo-darktext.png +0 -0
  86. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/psdi_data_conversion/static/img/ukri-logo-lighttext.png +0 -0
  87. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/psdi_data_conversion/static/javascript/accessibility.js +0 -0
  88. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/psdi_data_conversion/static/javascript/common.js +0 -0
  89. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/psdi_data_conversion/static/javascript/convert.js +0 -0
  90. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/psdi_data_conversion/static/javascript/convert_common.js +0 -0
  91. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/psdi_data_conversion/static/javascript/convertato.js +0 -0
  92. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/psdi_data_conversion/static/javascript/convertc2x.js +0 -0
  93. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/psdi_data_conversion/static/javascript/data.js +0 -0
  94. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/psdi_data_conversion/static/javascript/format.js +0 -0
  95. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/psdi_data_conversion/static/javascript/load_accessibility.js +0 -0
  96. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/psdi_data_conversion/static/javascript/psdi-common.js +0 -0
  97. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/psdi_data_conversion/static/javascript/report.js +0 -0
  98. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/psdi_data_conversion/static/styles/format.css +0 -0
  99. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/psdi_data_conversion/static/styles/psdi-common.css +0 -0
  100. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/psdi_data_conversion/templates/index.htm +0 -0
  101. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/psdi_data_conversion/testing/__init__.py +0 -0
  102. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/psdi_data_conversion/testing/constants.py +0 -0
  103. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/psdi_data_conversion/testing/conversion_callbacks.py +0 -0
  104. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/psdi_data_conversion/testing/conversion_test_specs.py +0 -0
  105. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/psdi_data_conversion/testing/utils.py +0 -0
  106. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/run_local.sh +0 -0
  107. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/scripts/setup_bin.py +0 -0
  108. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/test_data/1ARJ.mmcif +0 -0
  109. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/test_data/1NE6.mmcif +0 -0
  110. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/test_data/5a9z-assembly1.cif +0 -0
  111. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/test_data/Fapatite.ins +0 -0
  112. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/test_data/aceticacid.mol +0 -0
  113. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/test_data/benzyne.molden +0 -0
  114. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/test_data/caffeine-smi.tar +0 -0
  115. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/test_data/caffeine-smi.tar.gz +0 -0
  116. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/test_data/caffeine-smi.zip +0 -0
  117. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/test_data/caffeine.inchi +0 -0
  118. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/test_data/ch3cl-esp.cub +0 -0
  119. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/test_data/cyclopropane_err.mol +0 -0
  120. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/test_data/ethanol.xyz +0 -0
  121. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/test_data/fullRhinovirus.pdb +0 -0
  122. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/test_data/hemoglobin.pdb +0 -0
  123. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/test_data/nacl.cif +0 -0
  124. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/test_data/nacl.mol +0 -0
  125. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/test_data/output/aceticacid.log.txt +0 -0
  126. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/test_data/output/aceticacid.mol2 +0 -0
  127. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/test_data/output/caffeine-2D-fastest.xyz +0 -0
  128. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/test_data/output/caffeine-3D-best.xyz +0 -0
  129. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/test_data/output/caffeine-ia-okx-oof4.smi +0 -0
  130. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/test_data/output/caffeine-ia-okx-oof4l5.smi +0 -0
  131. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/test_data/output/caffeine-ia-okx.smi +0 -0
  132. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/test_data/output/caffeine-ia-ox.smi +0 -0
  133. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/test_data/output/caffeine-ia.smi +0 -0
  134. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/test_data/output/caffeine-no-flags.smi +0 -0
  135. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/test_data/output/caffeine.smi +0 -0
  136. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/test_data/output/caffeine.xyz +0 -0
  137. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/test_data/output/caffeine_a_in.smi +0 -0
  138. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/test_data/output/caffeine_a_in_kx_f4_l5_out.smi +0 -0
  139. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/test_data/output/caffeine_a_in_kx_f4_out.smi +0 -0
  140. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/test_data/output/caffeine_a_in_kx_out.smi +0 -0
  141. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/test_data/output/caffeine_a_in_x_out.smi +0 -0
  142. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/test_data/output/error_Fapatite_ins_to_cml_OB +0 -0
  143. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/test_data/output/error_cyclopropane_mol_to_xyz_c2x +0 -0
  144. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/test_data/output/error_nacl_mol_to_xyz_atomsk +0 -0
  145. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/test_data/output/hemoglobin_Atomsk.xyz +0 -0
  146. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/test_data/output/hemoglobin_c2x.xyz +0 -0
  147. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/test_data/output/nacl.log +0 -0
  148. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/test_data/output/nacl.mol +0 -0
  149. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/test_data/output/quartz_OB.cif +0 -0
  150. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/test_data/output/quartz_OB.log.txt +0 -0
  151. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/test_data/output/quartz_atomsk.cif +0 -0
  152. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/test_data/output/quartz_atomsk.log.txt +0 -0
  153. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/test_data/output/standard_test.inchi +0 -0
  154. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/test_data/output/xyz_files-mol.zip +0 -0
  155. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/test_data/output/xyz_files.log.txt +0 -0
  156. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/test_data/periodic_dmol3.outmol +0 -0
  157. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/test_data/quartz.xyz +0 -0
  158. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/test_data/quartz_err.xyz +0 -0
  159. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/test_data/standard_test.cdxml +0 -0
  160. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/tests/cli_test.py +0 -0
  161. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/tests/converter_test.py +0 -0
  162. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/tests/database_test.py +0 -0
  163. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/tests/dist_test.py +0 -0
  164. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/tests/file_io_test.py +0 -0
  165. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/tests/logging_test.py +0 -0
  166. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/tests/security_test.py +0 -0
  167. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/tests/selenium/files/standard_test.cdxml +0 -0
  168. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/tests/selenium/run.sh +0 -0
  169. {psdi_data_conversion-0.0.23 → psdi_data_conversion-0.0.30}/tests/selenium/selenium_tests.py +0 -0
@@ -0,0 +1,130 @@
1
+ # Workflow for continuous integration tasks triggered on push to release
2
+
3
+ name: CI - Release
4
+ run-name: CI - Release
5
+ on:
6
+ workflow_dispatch:
7
+ push:
8
+ branches: ["release"]
9
+
10
+ jobs:
11
+ test-python:
12
+ uses: ./.github/workflows/job-test-python.yml
13
+ test-gui:
14
+ uses: ./.github/workflows/job-test-gui.yml
15
+
16
+ # The commented out code below runs a code vulnerability scan on the
17
+ # containerised app. This will not work on the free GitHub plan, since
18
+ # for that plan code scanning is not supported for private repos - and
19
+ # this is a private repo. There may be a work-around.
20
+ #
21
+ # NOTE: If you uncomment this job to use it you may wish to change the
22
+ # 'needs' in the below 'tag-container-push' job from 'test-package'
23
+ # to 'anchore-scan' if you want to make a release dependent on a successful
24
+ # scan.
25
+ #
26
+ #anchore-scan:
27
+ # uses: ./.github/workflows/anchore-scan.yml
28
+ # needs: [test-package, test-gui]
29
+
30
+ tag:
31
+ uses: ./.github/workflows/job-tag.yml
32
+ needs: [test-python, test-gui]
33
+
34
+ container-push:
35
+ uses: ./.github/workflows/job-container-push.yml
36
+ needs: [tag]
37
+ with:
38
+ container_tag: ${{ needs.tag.outputs.container_tag }}
39
+
40
+ publish-doc:
41
+ needs: [tag]
42
+ uses: ./.github/workflows/job-publish-doc.yml
43
+
44
+ # Deploy to Kubernetes Job
45
+ # Requires an environment, which must reflect the target environment as defined in the
46
+ # GitHub repository: https://github.com/PSDI-UK/psdi-data-conversion/settings/environments
47
+ # The downstream deploy job leverages on Environment specific secrets, which also must be defined
48
+ deploy-stfc-staging-k8s:
49
+ needs: [tag]
50
+ uses: ./.github/workflows/job-deploy-k8s.yml # use the callable deploy job
51
+ secrets: inherit # pass all secrets for the environment
52
+ with:
53
+ container_tag: ${{ needs.tag.outputs.container_tag }}
54
+ environment: staging
55
+
56
+ build:
57
+ needs: [tag]
58
+ name: Build distribution 📦
59
+ runs-on: ubuntu-latest
60
+
61
+ steps:
62
+ - uses: actions/checkout@v4
63
+ with:
64
+ fetch-depth: 0
65
+ persist-credentials: false
66
+ - name: Set up Python
67
+ uses: actions/setup-python@v5
68
+ with:
69
+ python-version: "3.x"
70
+ - name: Install pypa/build
71
+ run: >-
72
+ python3 -m
73
+ pip install
74
+ build
75
+ --user
76
+ - name: Build a binary wheel and a source tarball
77
+ run: python3 -m build
78
+ - name: Store the distribution packages
79
+ uses: actions/upload-artifact@v4
80
+ with:
81
+ name: python-package-distributions
82
+ path: dist/
83
+
84
+ publish-to-testpypi:
85
+ name: Publish Python 🐍 distribution 📦 to TestPyPI
86
+ needs:
87
+ - build
88
+ runs-on: ubuntu-latest
89
+
90
+ environment:
91
+ name: testpypi
92
+ url: https://test.pypi.org/p/psdi-data-conversion
93
+
94
+ permissions:
95
+ id-token: write # IMPORTANT: mandatory for trusted publishing
96
+
97
+ steps:
98
+ - name: Download all the dists
99
+ uses: actions/download-artifact@v4
100
+ with:
101
+ name: python-package-distributions
102
+ path: dist/
103
+ - name: Publish distribution 📦 to TestPyPI
104
+ uses: pypa/gh-action-pypi-publish@release/v1
105
+ with:
106
+ repository-url: https://test.pypi.org/legacy/
107
+ verbose: true
108
+
109
+ publish-to-pypi:
110
+ name: >-
111
+ Publish Python 🐍 distribution 📦 to PyPI
112
+ needs:
113
+ - publish-to-testpypi
114
+ runs-on: ubuntu-latest
115
+ environment:
116
+ name: pypi
117
+ url: https://pypi.org/p/psdi-data-conversion
118
+ permissions:
119
+ id-token: write # IMPORTANT: mandatory for trusted publishing
120
+
121
+ steps:
122
+ - name: Download all the dists
123
+ uses: actions/download-artifact@v4
124
+ with:
125
+ name: python-package-distributions
126
+ path: dist/
127
+ - name: Publish distribution 📦 to PyPI
128
+ uses: pypa/gh-action-pypi-publish@release/v1
129
+ with:
130
+ verbose: true
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: psdi_data_conversion
3
- Version: 0.0.23
3
+ Version: 0.0.30
4
4
  Summary: Chemistry file format conversion service, provided by PSDI
5
5
  Project-URL: Homepage, https://psdidev2.azurewebsites.net/
6
6
  Project-URL: Documentation, https://psdi-uk.github.io/psdi-data-conversion/
@@ -0,0 +1,96 @@
1
+ <!-- This is the common footer which will be added to all pages. Everything in this file will be added within the div
2
+ that loads it. -->
3
+
4
+ <div class="max-width-box">
5
+ <div class="footer__links">
6
+ <div id="footer__links__left">
7
+ <div class="footer__title">
8
+ <h6>Funding</h6>
9
+ </div>
10
+ <h6 class="footer__title"><br></h6>
11
+ <div class="footer__hline">
12
+ <hr>
13
+ </div>
14
+ <ul class="footer__col footer__items clean-list">
15
+ <li class="funding-text">PSDI acknowledges the funding support by the EPSRC grants EP/X032701/1, EP/X032663/1
16
+ and EP/W032252/1</li>
17
+ </ul>
18
+ <ul class="footer__col footer__items clean-list">
19
+ <li>
20
+ <img class="lm-only" src="static/img/ukri-logo-lighttext.png"
21
+ alt="UKRI logo">
22
+ <img class="dm-only" src="static/img/ukri-logo-darktext.png"
23
+ alt="UKRI logo">
24
+ </li>
25
+ <li>
26
+ <img class="lm-only" src="static/img/ukri-epsr-logo-lighttext.png"
27
+ alt="UKRI EPSR logo">
28
+ <img class="dm-only" src="static/img/ukri-epsr-logo-darktext.png"
29
+ alt="UKRI EPSR logo">
30
+ </li>
31
+ </ul>
32
+ <div class="footer__hline small-screen-only">
33
+ <hr>
34
+ </div>
35
+ </div>
36
+ <div id="footer__links__right">
37
+ <div class="footer__title">
38
+ <h6>Useful Links</h6>
39
+ </div>
40
+ <div class="footer__title">
41
+ <h6>Connect</h6>
42
+ </div>
43
+ <div class="footer__hline">
44
+ <hr>
45
+ </div>
46
+ <ul class="footer__col footer__items clean-list">
47
+ <li><a href="https://psdi.ac.uk/">PSDI Home</a></li>
48
+ <li><a href="mailto:support@psdi.ac.uk">Contact Us</a></li>
49
+ <li><a href="https://www.psdi.ac.uk/privacy/">Privacy</a></li>
50
+ <li><a href="https://www.psdi.ac.uk/terms-and-conditions/">Terms and Conditions</a></li>
51
+ </ul>
52
+ <ul class="footer__col footer__items clean-list" id="footer-connect">
53
+ <li><a href="https://www.jiscmail.ac.uk/cgi-bin/wa-jisc.exe?SUBED1=PSDI&A=1">Mailing List</a></li>
54
+ <li id="footer-icon-list">
55
+ <a href="https://www.linkedin.com/company/psdiuk/" class="footer-icon">
56
+ <img src="static/img/social-logo-linkedin-white.png"
57
+ alt="LinkedIn icon" class="lm-only">
58
+ <img src="static/img/social-logo-linkedin-black.png"
59
+ alt="LinkedIn icon" class="dm-only">
60
+ </a>
61
+ <a href="https://twitter.com/psdi_uk" class="footer-icon">
62
+ <img src="static/img/social-logo-x-white.svg" alt="X icon"
63
+ class="lm-only">
64
+ <img src="static/img/social-logo-x-black.svg" alt="X icon"
65
+ class="dm-only">
66
+ </a>
67
+ <a href="https://www.youtube.com/@PSDI_UK" class="footer-icon">
68
+ <img src="static/img/social-logo-youtube-white.png" alt="YouTube icon"
69
+ class="lm-only">
70
+ <img src="static/img/social-logo-youtube-black.png" alt="YouTube icon"
71
+ class="dm-only">
72
+ </a>
73
+ <a href="https://bsky.app/profile/psdi-uk.bsky.social" class="footer-icon">
74
+ <img src="static/img/social-logo-bluesky-white.svg" alt="Bluesky icon"
75
+ class="lm-only">
76
+ <img src="static/img/social-logo-bluesky-black.svg" alt="Bluesky icon"
77
+ class="dm-only">
78
+ </a>
79
+ <a href="https://mstdn.science/@PSDI" class="footer-icon">
80
+ <img src="static/img/social-logo-mastodon-white.svg"
81
+ alt="Mastodon icon" class="lm-only">
82
+ <img src="static/img/social-logo-mastodon-black.svg"
83
+ alt="Mastodon icon" class="dm-only">
84
+ </a>
85
+ </li>
86
+ </ul>
87
+ <div class="footer__hline small-screen-only">
88
+ <hr>
89
+ </div>
90
+ </div>
91
+ </div>
92
+ <div class="footer__hline big-screen-only">
93
+ <hr>
94
+ </div>
95
+ <div class="footer__copyright__text text--center">Copyright © 2025 Physical Sciences Data Infrastructure (PSDI)</div>
96
+ </div>
@@ -0,0 +1,96 @@
1
+ <!-- This is the common footer which will be added to all pages. Everything in this file will be added within the div
2
+ that loads it. -->
3
+
4
+ <div class="max-width-box">
5
+ <div class="footer__links">
6
+ <div id="footer__links__left">
7
+ <div class="footer__title">
8
+ <h6>Funding</h6>
9
+ </div>
10
+ <h6 class="footer__title"><br></h6>
11
+ <div class="footer__hline">
12
+ <hr>
13
+ </div>
14
+ <ul class="footer__col footer__items clean-list">
15
+ <li class="funding-text">PSDI acknowledges the funding support by the EPSRC grants EP/X032701/1, EP/X032663/1
16
+ and EP/W032252/1</li>
17
+ </ul>
18
+ <ul class="footer__col footer__items clean-list">
19
+ <li>
20
+ <img class="lm-only" src="../img/ukri-logo-lighttext.png"
21
+ alt="UKRI logo">
22
+ <img class="dm-only" src="../img/ukri-logo-darktext.png"
23
+ alt="UKRI logo">
24
+ </li>
25
+ <li>
26
+ <img class="lm-only" src="../img/ukri-epsr-logo-lighttext.png"
27
+ alt="UKRI EPSR logo">
28
+ <img class="dm-only" src="../img/ukri-epsr-logo-darktext.png"
29
+ alt="UKRI EPSR logo">
30
+ </li>
31
+ </ul>
32
+ <div class="footer__hline small-screen-only">
33
+ <hr>
34
+ </div>
35
+ </div>
36
+ <div id="footer__links__right">
37
+ <div class="footer__title">
38
+ <h6>Useful Links</h6>
39
+ </div>
40
+ <div class="footer__title">
41
+ <h6>Connect</h6>
42
+ </div>
43
+ <div class="footer__hline">
44
+ <hr>
45
+ </div>
46
+ <ul class="footer__col footer__items clean-list">
47
+ <li><a href="https://psdi.ac.uk/">PSDI Home</a></li>
48
+ <li><a href="mailto:support@psdi.ac.uk">Contact Us</a></li>
49
+ <li><a href="https://www.psdi.ac.uk/privacy/">Privacy</a></li>
50
+ <li><a href="https://www.psdi.ac.uk/terms-and-conditions/">Terms and Conditions</a></li>
51
+ </ul>
52
+ <ul class="footer__col footer__items clean-list" id="footer-connect">
53
+ <li><a href="https://www.jiscmail.ac.uk/cgi-bin/wa-jisc.exe?SUBED1=PSDI&A=1">Mailing List</a></li>
54
+ <li id="footer-icon-list">
55
+ <a href="https://www.linkedin.com/company/psdiuk/" class="footer-icon">
56
+ <img src="../img/social-logo-linkedin-white.png"
57
+ alt="LinkedIn icon" class="lm-only">
58
+ <img src="../img/social-logo-linkedin-black.png"
59
+ alt="LinkedIn icon" class="dm-only">
60
+ </a>
61
+ <a href="https://twitter.com/psdi_uk" class="footer-icon">
62
+ <img src="../img/social-logo-x-white.svg" alt="X icon"
63
+ class="lm-only">
64
+ <img src="../img/social-logo-x-black.svg" alt="X icon"
65
+ class="dm-only">
66
+ </a>
67
+ <a href="https://www.youtube.com/@PSDI_UK" class="footer-icon">
68
+ <img src="../img/social-logo-youtube-white.png" alt="YouTube icon"
69
+ class="lm-only">
70
+ <img src="../img/social-logo-youtube-black.png" alt="YouTube icon"
71
+ class="dm-only">
72
+ </a>
73
+ <a href="https://bsky.app/profile/psdi-uk.bsky.social" class="footer-icon">
74
+ <img src="../img/social-logo-bluesky-white.svg" alt="Bluesky icon"
75
+ class="lm-only">
76
+ <img src="../img/social-logo-bluesky-black.svg" alt="Bluesky icon"
77
+ class="dm-only">
78
+ </a>
79
+ <a href="https://mstdn.science/@PSDI" class="footer-icon">
80
+ <img src="../img/social-logo-mastodon-white.svg"
81
+ alt="Mastodon icon" class="lm-only">
82
+ <img src="../img/social-logo-mastodon-black.svg"
83
+ alt="Mastodon icon" class="dm-only">
84
+ </a>
85
+ </li>
86
+ </ul>
87
+ <div class="footer__hline small-screen-only">
88
+ <hr>
89
+ </div>
90
+ </div>
91
+ </div>
92
+ <div class="footer__hline big-screen-only">
93
+ <hr>
94
+ </div>
95
+ <div class="footer__copyright__text text--center">Copyright © 2025 Physical Sciences Data Infrastructure (PSDI)</div>
96
+ </div>
@@ -56,8 +56,11 @@ Changelog = "https://github.com/PSDI-UK/psdi-data-conversion/blob/main/CHANGELOG
56
56
  Download = "https://github.com/PSDI-UK/psdi-data-conversion/releases/latest"
57
57
 
58
58
  # Hatch-specific configuration
59
- [tool.hatch]
60
- version = { source = "vcs" } # Use version Git tags
59
+ [tool.hatch.version]
60
+ source = "vcs"
61
+
62
+ [tool.hatch.version.raw-options]
63
+ local_scheme = "no-local-version"
61
64
 
62
65
  [tool.hatch.build]
63
66
  exclude = [
@@ -1,59 +0,0 @@
1
- # Workflow for continuous integration tasks triggered on push to release
2
-
3
- name: CI - Release
4
- run-name: CI - Release
5
- on:
6
- workflow_dispatch:
7
- push:
8
- branches: ["release"]
9
-
10
- jobs:
11
- test-python:
12
- uses: ./.github/workflows/job-test-python.yml
13
- test-gui:
14
- uses: ./.github/workflows/job-test-gui.yml
15
-
16
- # The commented out code below runs a code vulnerability scan on the
17
- # containerised app. This will not work on the free GitHub plan, since
18
- # for that plan code scanning is not supported for private repos - and
19
- # this is a private repo. There may be a work-around.
20
- #
21
- # NOTE: If you uncomment this job to use it you may wish to change the
22
- # 'needs' in the below 'tag-container-push' job from 'test-package'
23
- # to 'anchore-scan' if you want to make a release dependent on a successful
24
- # scan.
25
- #
26
- #anchore-scan:
27
- # uses: ./.github/workflows/anchore-scan.yml
28
- # needs: [test-package, test-gui]
29
-
30
- tag:
31
- uses: ./.github/workflows/job-tag.yml
32
- needs: [test-python, test-gui]
33
-
34
- container-push:
35
- uses: ./.github/workflows/job-container-push.yml
36
- needs: [tag]
37
- with:
38
- container_tag: ${{ needs.tag.outputs.container_tag }}
39
-
40
- publish-doc:
41
- needs: [tag]
42
- uses: ./.github/workflows/job-publish-doc.yml
43
-
44
- # Deploy to Kubernetes Job
45
- # Requires an environment, which must reflect the target environment as defined in the
46
- # GitHub repository: https://github.com/PSDI-UK/psdi-data-conversion/settings/environments
47
- # The downstream deploy job leverages on Environment specific secrets, which also must be defined
48
- deploy-stfc-staging-k8s:
49
- needs: [tag]
50
- uses: ./.github/workflows/job-deploy-k8s.yml # use the callable deploy job
51
- secrets: inherit # pass all secrets for the environment
52
- with:
53
- container_tag: ${{ needs.tag.outputs.container_tag }}
54
- environment: staging
55
-
56
- # Publish to PyPI - uncomment once ready for regular publishing
57
- # publish-pypi:
58
- # needs: [tag]
59
- # uses: ./.github/workflows/job-publish-pypi.yml
@@ -1,74 +0,0 @@
1
- # Reusable workflow to upload a Python Package to PyPI
2
-
3
- # For more information see: https://docs.github.com/en/actions/use-cases-and-examples/building-and-testing/building-and-testing-python#publishing-to-pypi
4
-
5
- # This workflow uses actions that are not certified by GitHub.
6
- # They are provided by a third-party and are governed by
7
- # separate terms of service, privacy policy, and support
8
- # documentation.
9
-
10
- name: Job - Publish to PyPI
11
- run-name: Publish to PyPI
12
-
13
- on:
14
- workflow_call:
15
- workflow_dispatch:
16
-
17
- permissions:
18
- contents: read
19
-
20
- jobs:
21
- release-build:
22
- runs-on: ubuntu-latest
23
-
24
- steps:
25
- - uses: actions/checkout@v4
26
-
27
- - uses: actions/setup-python@v5
28
- with:
29
- python-version: "3.x"
30
-
31
- - name: Build release distributions
32
- run: |
33
- # NOTE: put your own distribution build steps here.
34
- python -m pip install build
35
- python -m build
36
-
37
- - name: Upload distributions
38
- uses: actions/upload-artifact@v4
39
- with:
40
- name: release-dists
41
- path: dist/
42
-
43
- pypi-publish:
44
- runs-on: ubuntu-latest
45
- needs:
46
- - release-build
47
- permissions:
48
- # IMPORTANT: this permission is mandatory for trusted publishing
49
- id-token: write
50
-
51
- # Dedicated environments with protections for publishing are strongly recommended.
52
- # For more information, see: https://docs.github.com/en/actions/deployment/targeting-different-environments/using-environments-for-deployment#deployment-protection-rules
53
- environment:
54
- name: "Production"
55
- # OPTIONAL: uncomment and update to include your PyPI project URL in the deployment status:
56
- # url: https://pypi.org/p/psdi-data-conversion
57
- #
58
- # ALTERNATIVE: if your GitHub Release name is the PyPI project version string
59
- # ALTERNATIVE: exactly, uncomment the following line instead:
60
- url: https://pypi.org/project/psdi-data-conversion/${{ github.event.release.name }}
61
-
62
- steps:
63
- - name: Retrieve release distributions
64
- uses: actions/download-artifact@v4
65
- with:
66
- name: release-dists
67
- path: dist/
68
-
69
- # This workflow uses Trustred Publishing to authenticate, which requires some setup on PyPI. For details, see:
70
- # https://docs.github.com/en/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-pypi
71
- - name: Publish release distributions to PyPI
72
- uses: pypa/gh-action-pypi-publish@release/v1
73
- with:
74
- packages-dir: dist/
@@ -1,99 +0,0 @@
1
- <!-- This is the common footer which will be added to all pages. Everything in this file will be added within the div
2
- that loads it. -->
3
-
4
- <div class="max-width-box">
5
- <div class="footer__links">
6
- <div id="footer__links__left">
7
- <div class="footer__title">
8
- <h6>Funding</h6>
9
- </div>
10
- <h6 class="footer__title"><br></h6>
11
- <div class="footer__hline">
12
- <hr>
13
- </div>
14
- <ul class="footer__col footer__items clean-list">
15
- <li class="funding-text">PSDI acknowledges the funding support by the EPSRC grants EP/X032701/1, EP/X032663/1
16
- and EP/W032252/1</li>
17
- </ul>
18
- <ul class="footer__col footer__items clean-list">
19
- <li>
20
- <img class="lm-only" src="static/img/ukri-logo-lighttext.png"
21
- alt="UKRI logo">
22
- <img class="dm-only" src="static/img/ukri-logo-darktext.png"
23
- alt="UKRI logo">
24
- </li>
25
- <li>
26
- <img class="lm-only" src="static/img/ukri-epsr-logo-lighttext.png"
27
- alt="UKRI EPSR logo">
28
- <img class="dm-only" src="static/img/ukri-epsr-logo-darktext.png"
29
- alt="UKRI EPSR logo">
30
- </li>
31
- </ul>
32
- <div class="footer__hline small-screen-only">
33
- <hr>
34
- </div>
35
- </div>
36
- <div id="footer__links__right">
37
- <div class="footer__title">
38
- <h6>Useful Links</h6>
39
- </div>
40
- <div class="footer__title">
41
- <h6>Connect</h6>
42
- </div>
43
- <div class="footer__hline">
44
- <hr>
45
- </div>
46
- <ul class="footer__col footer__items clean-list">
47
- <li><a href="https://psdi.ac.uk/">PSDI Home</a></li>
48
- <li><a href="mailto:support@psdi.ac.uk">Contact Us</a></li>
49
- <li><a href="#">Privacy</a></li>
50
- <li><a href="#">Terms and Conditions</a></li>
51
- </ul>
52
- <p class="footer__col" id="footer-icon-list">
53
- <a href="https://www.linkedin.com/company/psdiuk/" class="footer-icon">
54
- <img src="static/img/social-logo-linkedin-white.png" alt="LinkedIn icon"
55
- class="lm-only">
56
- <img src="static/img/social-logo-linkedin-black.png" alt="LinkedIn icon"
57
- class="dm-only">
58
- </a>
59
- <a href="https://twitter.com/psdi_uk" class="footer-icon">
60
- <img src="static/img/social-logo-x-white.svg" alt="X icon"
61
- class="lm-only">
62
- <img src="static/img/social-logo-x-black.svg" alt="X icon"
63
- class="dm-only">
64
- </a>
65
- <a href="https://www.instagram.com/psdi_uk" class="footer-icon">
66
- <img src="static/img/social-logo-instagram-white.svg"
67
- alt="Instagram icon" class="lm-only">
68
- <img src="static/img/social-logo-instagram-black.svg"
69
- alt="Instagram icon" class="dm-only">
70
- </a>
71
- <a href="https://www.youtube.com/@PSDI_UK" class="footer-icon">
72
- <img src="static/img/social-logo-youtube-white.png" alt="YouTube icon"
73
- class="lm-only">
74
- <img src="static/img/social-logo-youtube-black.png" alt="YouTube icon"
75
- class="dm-only">
76
- </a>
77
- <a href="https://bsky.app/profile/psdi-uk.bsky.social" class="footer-icon">
78
- <img src="static/img/social-logo-bluesky-white.svg" alt="Bluesky icon"
79
- class="lm-only">
80
- <img src="static/img/social-logo-bluesky-black.svg" alt="Bluesky icon"
81
- class="dm-only">
82
- </a>
83
- <a href="https://mstdn.science/@PSDI" class="footer-icon">
84
- <img src="static/img/social-logo-mastodon-white.svg" alt="Mastodon icon"
85
- class="lm-only">
86
- <img src="static/img/social-logo-mastodon-black.svg" alt="Mastodon icon"
87
- class="dm-only">
88
- </a>
89
- </p>
90
- <div class="footer__hline small-screen-only">
91
- <hr>
92
- </div>
93
- </div>
94
- </div>
95
- <div class="footer__hline big-screen-only">
96
- <hr>
97
- </div>
98
- <div class="footer__copyright__text text--center">Copyright © 2024 PSDI</div>
99
- </div>