psdi-data-conversion 0.1.6__tar.gz → 0.1.7__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 (142) hide show
  1. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/CHANGELOG.md +14 -0
  2. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/CONTRIBUTING.md +70 -10
  3. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/PKG-INFO +4 -1
  4. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/README.md +3 -0
  5. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/psdi_data_conversion/app.py +11 -1
  6. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/psdi_data_conversion/static/content/header-links.html +1 -1
  7. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/psdi_data_conversion/static/content/index-versions/header-links.html +1 -1
  8. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/psdi_data_conversion/static/content/index-versions/psdi-common-header.html +12 -9
  9. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/psdi_data_conversion/static/content/psdi-common-header.html +12 -9
  10. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/psdi_data_conversion/static/styles/format.css +2 -2
  11. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/psdi_data_conversion/static/styles/psdi-common.css +5 -0
  12. {psdi_data_conversion-0.1.6/psdi_data_conversion/static/content → psdi_data_conversion-0.1.7/psdi_data_conversion/templates}/documentation.htm +25 -5
  13. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/psdi_data_conversion/templates/index.htm +2 -2
  14. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/pyproject.toml +4 -2
  15. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/.gitignore +0 -0
  16. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/LICENSE +0 -0
  17. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/psdi_data_conversion/__init__.py +0 -0
  18. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/psdi_data_conversion/bin/LICENSE_ATOMSK +0 -0
  19. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/psdi_data_conversion/bin/LICENSE_C2X +0 -0
  20. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/psdi_data_conversion/bin/linux/atomsk +0 -0
  21. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/psdi_data_conversion/bin/linux/c2x +0 -0
  22. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/psdi_data_conversion/bin/mac/atomsk +0 -0
  23. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/psdi_data_conversion/bin/mac/c2x +0 -0
  24. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/psdi_data_conversion/constants.py +0 -0
  25. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/psdi_data_conversion/converter.py +0 -0
  26. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/psdi_data_conversion/converters/__init__.py +0 -0
  27. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/psdi_data_conversion/converters/atomsk.py +0 -0
  28. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/psdi_data_conversion/converters/base.py +0 -0
  29. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/psdi_data_conversion/converters/c2x.py +0 -0
  30. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/psdi_data_conversion/converters/openbabel.py +0 -0
  31. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/psdi_data_conversion/database.py +0 -0
  32. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/psdi_data_conversion/dist.py +0 -0
  33. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/psdi_data_conversion/file_io.py +0 -0
  34. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/psdi_data_conversion/log_utility.py +0 -0
  35. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/psdi_data_conversion/main.py +0 -0
  36. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/psdi_data_conversion/scripts/atomsk.sh +0 -0
  37. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/psdi_data_conversion/scripts/c2x.sh +0 -0
  38. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/psdi_data_conversion/security.py +0 -0
  39. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/psdi_data_conversion/static/content/accessibility.htm +0 -0
  40. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/psdi_data_conversion/static/content/convert.htm +0 -0
  41. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/psdi_data_conversion/static/content/convertato.htm +0 -0
  42. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/psdi_data_conversion/static/content/convertc2x.htm +0 -0
  43. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/psdi_data_conversion/static/content/download.htm +0 -0
  44. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/psdi_data_conversion/static/content/feedback.htm +0 -0
  45. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/psdi_data_conversion/static/content/index-versions/psdi-common-footer.html +0 -0
  46. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/psdi_data_conversion/static/content/psdi-common-footer.html +0 -0
  47. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/psdi_data_conversion/static/content/report.htm +0 -0
  48. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/psdi_data_conversion/static/data/data.json +0 -0
  49. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/psdi_data_conversion/static/img/colormode-toggle-dm.svg +0 -0
  50. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/psdi_data_conversion/static/img/colormode-toggle-lm.svg +0 -0
  51. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/psdi_data_conversion/static/img/psdi-icon-dark.svg +0 -0
  52. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/psdi_data_conversion/static/img/psdi-icon-light.svg +0 -0
  53. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/psdi_data_conversion/static/img/psdi-logo-darktext-simple.png +0 -0
  54. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/psdi_data_conversion/static/img/psdi-logo-darktext.png +0 -0
  55. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/psdi_data_conversion/static/img/psdi-logo-lighttext-simple.png +0 -0
  56. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/psdi_data_conversion/static/img/psdi-logo-lighttext.png +0 -0
  57. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/psdi_data_conversion/static/img/social-logo-bluesky-black.svg +0 -0
  58. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/psdi_data_conversion/static/img/social-logo-bluesky-white.svg +0 -0
  59. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/psdi_data_conversion/static/img/social-logo-instagram-black.svg +0 -0
  60. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/psdi_data_conversion/static/img/social-logo-instagram-white.svg +0 -0
  61. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/psdi_data_conversion/static/img/social-logo-linkedin-black.png +0 -0
  62. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/psdi_data_conversion/static/img/social-logo-linkedin-white.png +0 -0
  63. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/psdi_data_conversion/static/img/social-logo-mastodon-black.svg +0 -0
  64. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/psdi_data_conversion/static/img/social-logo-mastodon-white.svg +0 -0
  65. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/psdi_data_conversion/static/img/social-logo-x-black.svg +0 -0
  66. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/psdi_data_conversion/static/img/social-logo-x-white.svg +0 -0
  67. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/psdi_data_conversion/static/img/social-logo-youtube-black.png +0 -0
  68. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/psdi_data_conversion/static/img/social-logo-youtube-white.png +0 -0
  69. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/psdi_data_conversion/static/img/ukri-epsr-logo-darktext.png +0 -0
  70. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/psdi_data_conversion/static/img/ukri-epsr-logo-lighttext.png +0 -0
  71. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/psdi_data_conversion/static/img/ukri-logo-darktext.png +0 -0
  72. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/psdi_data_conversion/static/img/ukri-logo-lighttext.png +0 -0
  73. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/psdi_data_conversion/static/javascript/accessibility.js +0 -0
  74. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/psdi_data_conversion/static/javascript/common.js +0 -0
  75. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/psdi_data_conversion/static/javascript/convert.js +0 -0
  76. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/psdi_data_conversion/static/javascript/convert_common.js +0 -0
  77. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/psdi_data_conversion/static/javascript/convertato.js +0 -0
  78. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/psdi_data_conversion/static/javascript/convertc2x.js +0 -0
  79. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/psdi_data_conversion/static/javascript/data.js +0 -0
  80. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/psdi_data_conversion/static/javascript/format.js +0 -0
  81. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/psdi_data_conversion/static/javascript/load_accessibility.js +0 -0
  82. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/psdi_data_conversion/static/javascript/psdi-common.js +0 -0
  83. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/psdi_data_conversion/static/javascript/report.js +0 -0
  84. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/psdi_data_conversion/testing/__init__.py +0 -0
  85. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/psdi_data_conversion/testing/constants.py +0 -0
  86. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/psdi_data_conversion/testing/conversion_callbacks.py +0 -0
  87. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/psdi_data_conversion/testing/conversion_test_specs.py +0 -0
  88. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/psdi_data_conversion/testing/gui.py +0 -0
  89. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/psdi_data_conversion/testing/utils.py +0 -0
  90. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/psdi_data_conversion/utils.py +0 -0
  91. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/scripts/setup_bin.py +0 -0
  92. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/test_data/1ARJ.mmcif +0 -0
  93. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/test_data/1NE6.mmcif +0 -0
  94. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/test_data/5a9z-assembly1.cif +0 -0
  95. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/test_data/Fapatite.ins +0 -0
  96. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/test_data/aceticacid.mol +0 -0
  97. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/test_data/benzyne.molden +0 -0
  98. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/test_data/caffeine-smi.tar +0 -0
  99. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/test_data/caffeine-smi.tar.gz +0 -0
  100. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/test_data/caffeine-smi.zip +0 -0
  101. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/test_data/caffeine.inchi +0 -0
  102. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/test_data/ch3cl-esp.cub +0 -0
  103. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/test_data/cyclopropane_err.mol +0 -0
  104. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/test_data/ethanol.xyz +0 -0
  105. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/test_data/fullRhinovirus.pdb +0 -0
  106. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/test_data/hemoglobin.pdb +0 -0
  107. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/test_data/nacl.cif +0 -0
  108. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/test_data/nacl.mol +0 -0
  109. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/test_data/output/aceticacid.log.txt +0 -0
  110. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/test_data/output/aceticacid.mol2 +0 -0
  111. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/test_data/output/caffeine-2D-fastest.xyz +0 -0
  112. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/test_data/output/caffeine-3D-best.xyz +0 -0
  113. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/test_data/output/caffeine.smi +0 -0
  114. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/test_data/output/caffeine.xyz +0 -0
  115. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/test_data/output/caffeine_a_in.smi +0 -0
  116. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/test_data/output/caffeine_a_in_kx_f4_l5_out.smi +0 -0
  117. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/test_data/output/caffeine_a_in_kx_f4_out.smi +0 -0
  118. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/test_data/output/caffeine_a_in_kx_out.smi +0 -0
  119. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/test_data/output/caffeine_a_in_x_out.smi +0 -0
  120. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/test_data/output/hemoglobin_Atomsk.xyz +0 -0
  121. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/test_data/output/hemoglobin_c2x.xyz +0 -0
  122. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/test_data/output/nacl.log +0 -0
  123. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/test_data/output/nacl.mol +0 -0
  124. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/test_data/output/quartz_OB.cif +0 -0
  125. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/test_data/output/quartz_OB.log.txt +0 -0
  126. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/test_data/output/quartz_atomsk.cif +0 -0
  127. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/test_data/output/quartz_atomsk.log.txt +0 -0
  128. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/test_data/output/standard_test.inchi +0 -0
  129. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/test_data/output/xyz_files-mol.zip +0 -0
  130. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/test_data/output/xyz_files.log.txt +0 -0
  131. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/test_data/periodic_dmol3.outmol +0 -0
  132. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/test_data/quartz.xyz +0 -0
  133. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/test_data/quartz_err.xyz +0 -0
  134. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/test_data/standard_test.cdxml +0 -0
  135. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/tests/gui/gui_test.py +0 -0
  136. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/tests/python/cli_test.py +0 -0
  137. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/tests/python/converter_test.py +0 -0
  138. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/tests/python/database_test.py +0 -0
  139. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/tests/python/dist_test.py +0 -0
  140. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/tests/python/file_io_test.py +0 -0
  141. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/tests/python/logging_test.py +0 -0
  142. {psdi_data_conversion-0.1.6 → psdi_data_conversion-0.1.7}/tests/python/security_test.py +0 -0
@@ -1,5 +1,19 @@
1
1
  # Changelog for PSDI Data Conversion
2
2
 
3
+ ## v0.1.7
4
+
5
+ ### New and Changed Functionality
6
+
7
+ - Version, SHA, and service/prod modes now always shown in new About section on the Documentation page
8
+
9
+ ### Documentation Changes
10
+
11
+ - Added information about deployment to CONTRIBUTING.md
12
+
13
+ ### Bugfixes
14
+
15
+ - Environmental variable indicating dev or production mode should now be properly set for the deployed service
16
+
3
17
  ## v0.1.6
4
18
 
5
19
  ### New and Changed Functionality
@@ -15,7 +15,7 @@ This project uses a version of [GitLab Flow](https://about.gitlab.com/topics/ver
15
15
 
16
16
  The following tasks should be completed before merging a release candidate branch to `release`:
17
17
 
18
- - Detemine the target version based on the changes made:
18
+ - Determine the target version based on the changes made:
19
19
 
20
20
  - If any breaking changes have been made (after version 1.0.0), the version will advance to the next major version - `X.Y.Z` to `(X+1).0.0`
21
21
  - Otherwise, if any features are added, or any breaking changes are made before version 1.0.0, the version will advance to the next minor version - `X.Y.Z` to `X.(Y+1).0`.
@@ -193,13 +193,13 @@ class MyFileConverter(FileConverter):
193
193
  converter = MyFileConverter
194
194
  ```
195
195
 
196
- That's all you need to do! The `psdi_data_conversion.converter` module parses all modules in the `converters` package to find converters, so if you've done everything correctly, it will find the new converter and register it for you. You can test that it is properly registered by using the CLA to run:
196
+ That's all you need to do! The `psdi_data_conversion.converter` module parses all modules in the `converters` package to find converters, so if you've done everything correctly, it will find the new converter and register it for you. You can test that it is properly registered by using the CLI to run:
197
197
 
198
198
  ```bash
199
199
  psdi-data-convert -l
200
200
  ```
201
201
 
202
- Your new converter should appear, or else you will probably see an error message which will detail an exception raised when trying to register it. Note that until the converter's information is added to the database (the file `psdi_data_conversion/static/data/data.json`), the CLA will show that it is unable to perform any conversions, and it will fail on any conversion (believing it to be impossible) unless you provide the `--nc/--no-check` command-line flag.
202
+ Your new converter should appear, or else you will probably see an error message which will detail an exception raised when trying to register it. Note that until the converter's information is added to the database (the file `psdi_data_conversion/static/data/data.json`), the CLI will show that it is unable to perform any conversions, and it will fail on any conversion (believing it to be impossible) unless you provide the `--nc/--no-check` command-line flag.
203
203
 
204
204
  For file converters which can be run with a call to a script, this can be streamlined even further by taking advantage of the `ScriptFileConverter` subclass. With this, the converter's subclass can be defined even more succinctly:
205
205
 
@@ -273,7 +273,7 @@ pip install --editable .[test]
273
273
  pytest
274
274
  ```
275
275
 
276
- This installs the project in a virtual environment in "editable" mode (which means the source files will be used from where they are rather than being copied, so any changes to them will be directly reflected in tests and uses of the CLA) and then calls `pytest` to run the unit tests in the project. `pytest` will automatically pick up any extra tests you add and run them as well.
276
+ This installs the project in a virtual environment in "editable" mode (which means the source files will be used from where they are rather than being copied, so any changes to them will be directly reflected in tests and uses of the CLI) and then calls `pytest` to run the unit tests in the project. `pytest` will automatically pick up any extra tests you add and run them as well.
277
277
 
278
278
  #### Web App Integration
279
279
 
@@ -320,13 +320,13 @@ This project uses various GitHub workflows to perform Continuous Integration tas
320
320
  - Testing and scanning (triggered by pushes to `main`, `release`, `feature*`, and `rc*` branches)
321
321
  - Periodic checks for updates to common assets
322
322
  - Automatic creation of pull requests for `feature*` and `rc*` branches
323
- - Automatic tagging, publishing, and deployment of the `release` branch
323
+ - Automatic tagging, publishing, and deployment of the `main` and `release` branches to the development, staging and production environments
324
324
 
325
- See the commons within the files for further details.
325
+ See the comments within the files for further details. See also the [section on deployment](#deployment) for details specific to deployment tasks.
326
326
 
327
327
  ## Publishing
328
328
 
329
- The Python library, CLA, and local GUI are published as a Python package via PyPI. This section describes how the package is set up and how it's published.
329
+ The Python library, CLI, and local GUI are published as a Python package via PyPI. This section describes how the package is set up and how it's published.
330
330
 
331
331
  ### Package Setup
332
332
 
@@ -338,7 +338,7 @@ The version of the package is set to be determined from the version control syst
338
338
 
339
339
  ### Initial Publication
340
340
 
341
- This section details the proceduce for the initial publication of this package - now that this is complete, this section is left in for reference in case of future need.
341
+ This section details the procedure for the initial publication of this package - now that this is complete, this section is left in for reference in case of future need.
342
342
 
343
343
  First, it's necessary to install a couple required packages in order to build a Python package: `build` to build it and `twine` to upload it. These can be installed with pip via:
344
344
 
@@ -376,8 +376,68 @@ The management page can also be used to add or remove collaborators through the
376
376
 
377
377
  ## Deployment
378
378
 
379
- Deployment is handled by the `job-deploy-k8s.yml` reusable workflow, which is triggered from `ci-main.yml` to deploy to dev on each push to `main` and `ci-release.yml` to deploy to staging on each push to `release`. When a push to production is desired, it must be triggered manually by calling the `ci-deploy-production.yml` workflow on the `release` branch (it's set up to fail if run on any other branch).
379
+ The `ci-main.yml`, `ci-release.yml` and `ci-deploy-production.yml` files in the `.github/workflows` directory house workflows which deploy
380
+ the data conversion service to [Kubernetes](https://kubernetes.io/) clusters hosted in STFC. There are three clusters, each of which correspond
381
+ to a different deployment _environment_ for the data conversion service. The three environments are `development`, `staging` and `production`.
382
+ Deployment to `development`, `staging` and `production` is done from either the `main` or `release` branch. The table below indicates which
383
+ branch deploys to which environment. The table also shows, for each environment:
384
+ - the URL on which the service is exposed once it is successfully deployed
385
+ - the accessibility of the service. Depending on the environment the service is either accessible to the _public_ at the specified URL,
386
+ or accessible only to IP addresses within the _STFC and University of Southampton subnets_
387
+ - the trigger used to invoke the workflow which deploys the service from the source branch. Deployment is either _automatic_
388
+ upon a commit to the source branch which passes the unit-tests job; or results from a _manual_ invocation of a workflow by a
389
+ developer.
390
+
391
+ | Environment | URL | Accessibility | Source branch | Deployment trigger |
392
+ |------------------|--------------------------------------------|--------------------------------------------|----------------|-----------------------|
393
+ | `development` | https://data-conversion-dev.psdi.ac.uk | STFC and University of Southampton subnets | `main` | Automatic |
394
+ | `staging` | https://data-conversion-staging.psdi.ac.uk | STFC and University of Southampton subnets | `release` | Automatic |
395
+ | `production` | https://data-conversion.psdi.ac.uk | public | `release` | Manual |
396
+
397
+ Thus the `main` is automatically deployed to the `development` environment, and the `release` branch is automatically deployed to the `staging`
398
+ environment. However deployment from the `release` branch to the `production` environment is a manual process. This is to allow developers to
399
+ manually check that the `release` version works correctly in the `staging` environment before deploying it to the `production` environment.
400
+ The checks to `staging` before deployment to `production` should echo those described in the above
401
+ section [Release Checklist and Procedure](#release-checklist-and-procedure).
402
+
403
+ ### How to deploy to the `production` environment
404
+
405
+ To trigger the workflow which deploys the service to the `production` environment, from the [main page of the repo](https://github.com/PSDI-UK/psdi-data-conversion)
406
+ navigate to [Actions](https://github.com/PSDI-UK/psdi-data-conversion/actions). Here you should see on the right a list of recent workflow
407
+ runs, including whether or not they are successful (as indicated by a green tick); and on the left you should see a list of all workflows.
408
+
409
+ The workflow which deploys the `release` branch to the `staging` environment is named `CI - Release`. As mentioned above, you should verify
410
+ that this workflow successfully deployed the `release` version to `staging` before considering deploying to `production`. If you click on the
411
+ latest workflow run of `CI - Release` then you can see a breakdown of the workflow into its constituent workflows. Note the `deploy-stfc-staging-k8s`
412
+ job. If this job is successful then the `release` version has been successfully deployed to `staging`.
413
+
414
+ Assuming this is the case, navigating back to [Actions](https://github.com/PSDI-UK/psdi-data-conversion/actions), note that there is a workflow
415
+ listed on the left named `CI - Deploy to production cluster`. This is the workflow which must be invoked manually to deploy the `release`
416
+ version to the `production` environment. Clicking on the link to this workflow gives
417
+ [a list of recent invocations](https://github.com/PSDI-UK/psdi-data-conversion/actions/workflows/ci-deploy-production.yml) of the workflow.
418
+ Moreover, a light blue banner appears which says `This workflow has a workflow_dispatch event trigger` on the left and has a `Run workflow` button
419
+ on the right. To invoke the workflow, press this button, *select the `release` branch* as the option for `Use workflow from` dropdown menu, and
420
+ then finally click the green `Run workflow` button. Once the workflow has been invoked you should be able to see its progress in real time on the
421
+ same page.
422
+
423
+ ### Further technical details
424
+
425
+ The `ci-main.yml`, `ci-release.yml` and `ci-deploy-production.yml` workflows leverage the `job-deploy-k8s.yml` callable workflow to do the heavy
426
+ lifting with regards to deployment to STFC Kubernetes environments. The `job-deploy-k8s.yml` workflow is coded to be invoked on PSDI's GitHub
427
+ runners. These runners are hosted within STFC's network, providing a means to access the three STFC Kubernetes clusters corresponding to the
428
+ `development`, `staging` and `production` environments. The environment to be targeted for deployment is passed to the `job-deploy-k8s.yml`
429
+ workflow as an input parameter. Given a target environment `<env>`, the `job-deploy-k8s.yml` workflow will deploy the service to the
430
+ the `<env>` environment using the Kubernetes manifests stored in the `deploy`/<env>` directory of this repository.
431
+
432
+ The workflow relies on several repository secrets, namely `KUBECONF`, `IMAGEPULLSECRET`, `CERTIFICATE_PRIVATE_KEY` and `CERTIFICATE_PEM` for
433
+ various purposes.
434
+ - `KUBECONF` provides Kubernetes-specific information pertaining to the the Kubernetes cluster for the target environment. Note that
435
+ `KUBECONF` is an _environment_-dependent secret, taking different values for each of the environments.
436
+ - `IMAGEPULLSECRET` enables the container image housing the data conversion service to be pulled from this GitHub repo to the PSDI runner
437
+ - `CERTIFICATE_PRIVATE_KEY` and `CERTIFICATE_PEM` pertain to the TLS certificates for the service
438
+ For further information see the `job-deploy-k8s.yml` file and aforementioned Kubernetes manifests.
439
+
440
+
380
441
 
381
- TODO - Describe details of setup
382
442
 
383
443
  The server can be configured by editing the environmental variables set in `Dockerfile`.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: psdi_data_conversion
3
- Version: 0.1.6
3
+ Version: 0.1.7
4
4
  Summary: Chemistry file format conversion service, provided by PSDI
5
5
  Project-URL: Homepage, https://data-conversion.psdi.ac.uk/
6
6
  Project-URL: Documentation, https://psdi-uk.github.io/psdi-data-conversion/
@@ -243,6 +243,9 @@ Description-Content-Type: text/markdown
243
243
 
244
244
  # PSDI Data Conversion
245
245
 
246
+ [![License Badge](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
247
+ ![Coverage Badge](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/brgillis/dbd938192dc4de9b7779978e515c0e79/raw/covbadge.json)
248
+
246
249
  Release date: 2024-04-29
247
250
 
248
251
  This is the repository for the PSDI PF2 Chemistry File Format Conversion project. The goal of this project is to provide utilities to assist in converting files between the many different file formats used in chemistry, providing information on what converters are available for a given conversion and the expected quality of it, and providing multiple interfaces to perform these conversions. These interfaces are:
@@ -1,5 +1,8 @@
1
1
  # PSDI Data Conversion
2
2
 
3
+ [![License Badge](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
4
+ ![Coverage Badge](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/brgillis/dbd938192dc4de9b7779978e515c0e79/raw/covbadge.json)
5
+
3
6
  Release date: 2024-04-29
4
7
 
5
8
  This is the repository for the PSDI PF2 Chemistry File Format Conversion project. The goal of this project is to provide utilities to assist in converting files between the many different file formats used in chemistry, providing information on what converters are available for a given conversion and the expected quality of it, and providing multiple interfaces to perform these conversions. These interfaces are:
@@ -197,7 +197,7 @@ def get_tag_and_sha() -> str:
197
197
 
198
198
  @app.route('/')
199
199
  def website():
200
- """Return the web page along with the token
200
+ """Return the web page along with relevant data
201
201
  """
202
202
  tag, sha = get_tag_and_sha()
203
203
  return render_template("index.htm",
@@ -210,6 +210,16 @@ def website():
210
210
  sha=sha)
211
211
 
212
212
 
213
+ @app.route('/documentation.htm')
214
+ def documentation():
215
+ """Return the documentation page
216
+ """
217
+ tag, sha = get_tag_and_sha()
218
+ return render_template("documentation.htm",
219
+ tag=tag,
220
+ sha=sha)
221
+
222
+
213
223
  @app.route('/convert/', methods=['POST'])
214
224
  def convert():
215
225
  """Convert file to a different format and save to folder 'downloads'. Delete original file. Note that downloading is
@@ -3,7 +3,7 @@
3
3
  <a href="../../" class="navbar__item navbar__link">Home</a>
4
4
  <a href="report.htm" class="navbar__item navbar__link">Report Missing Format/Conversion</a>
5
5
  <a href="feedback.htm" class="navbar__item navbar__link">Provide Feedback</a>
6
- <a href="documentation.htm" class="navbar__item navbar__link">Documentation</a>
6
+ <a href="../../documentation.htm" class="navbar__item navbar__link">Documentation</a>
7
7
  <a href="download.htm" class="navbar__item navbar__link service-only">Download</a>
8
8
  <a href="accessibility.htm" class="navbar__item navbar__link">Accessibility</a>
9
9
  <a href="mailto:support@psdi.ac.uk" class="navbar__item navbar__link" id="mail">Contact Us</a>
@@ -3,7 +3,7 @@
3
3
  <a href="./" class="navbar__item navbar__link">Home</a>
4
4
  <a href="static/content/report.htm" class="navbar__item navbar__link">Report Missing Format/Conversion</a>
5
5
  <a href="static/content/feedback.htm" class="navbar__item navbar__link">Provide Feedback</a>
6
- <a href="static/content/documentation.htm" class="navbar__item navbar__link">Documentation</a>
6
+ <a href="./documentation.htm" class="navbar__item navbar__link">Documentation</a>
7
7
  <a href="static/content/download.htm" class="navbar__item navbar__link service-only">Download</a>
8
8
  <a href="static/content/accessibility.htm" class="navbar__item navbar__link">Accessibility</a>
9
9
  <a href="mailto: psdi@soton.ac.uk" class="navbar__item navbar__link" id="mail">Contact</a>
@@ -5,10 +5,8 @@
5
5
  <div class="header-left">
6
6
  <div class="navbar__brand">
7
7
  <a class="navbar__logo" href="https://psdi.ac.uk/">
8
- <img src="static/img/psdi-logo-darktext.png" alt="PSDI logo"
9
- class="lm-only">
10
- <img src="static/img/psdi-logo-lighttext.png" alt="PSDI logo"
11
- class="dm-only">
8
+ <img src="static/img/psdi-logo-darktext.png" alt="PSDI logo" class="lm-only">
9
+ <img src="static/img/psdi-logo-lighttext.png" alt="PSDI logo" class="dm-only">
12
10
  </a>
13
11
  <a class="navbar__title" href=".">
14
12
  <h5>Data Conversion Service</h5>
@@ -16,13 +14,18 @@
16
14
  </div>
17
15
  </div>
18
16
  <div class="navbar__items navbar__items--right">
19
- <!-- This file contains the links that will appear in the top-right of the header bar for .html files in the index.htm page. --> <a href="./" class="navbar__item navbar__link">Home</a> <a href="static/content/report.htm" class="navbar__item navbar__link">Report Missing Format/Conversion</a> <a href="static/content/feedback.htm" class="navbar__item navbar__link">Provide Feedback</a> <a href="static/content/documentation.htm" class="navbar__item navbar__link">Documentation</a> <a href="static/content/download.htm" class="navbar__item navbar__link service-only">Download</a> <a href="static/content/accessibility.htm" class="navbar__item navbar__link">Accessibility</a> <a href="mailto: psdi@soton.ac.uk" class="navbar__item navbar__link" id="mail">Contact</a>
17
+ <!-- This file contains the links that will appear in the top-right of the header bar for .html files in the index.htm page. -->
18
+ <a href="./" class="navbar__item navbar__link">Home</a> <a href="static/content/report.htm"
19
+ class="navbar__item navbar__link">Report Missing Format/Conversion</a> <a href="static/content/feedback.htm"
20
+ class="navbar__item navbar__link">Provide Feedback</a> <a href="./documentation.htm"
21
+ class="navbar__item navbar__link">Documentation</a> <a href="static/content/download.htm"
22
+ class="navbar__item navbar__link service-only">Download</a> <a href="static/content/accessibility.htm"
23
+ class="navbar__item navbar__link">Accessibility</a> <a href="mailto: psdi@soton.ac.uk"
24
+ class="navbar__item navbar__link" id="mail">Contact</a>
20
25
  <button class="clean-btn color-mode-toggle" title="Switch between dark and light mode"
21
26
  aria-label="Lightmode/darkmode toggle button">
22
- <img src="static/img/colormode-toggle-lm.svg" alt="Lightmode toggle icon"
23
- class="lm-only">
24
- <img src="static/img/colormode-toggle-dm.svg" alt="Darkmode toggle icon"
25
- class="dm-only">
27
+ <img src="static/img/colormode-toggle-lm.svg" alt="Lightmode toggle icon" class="lm-only">
28
+ <img src="static/img/colormode-toggle-dm.svg" alt="Darkmode toggle icon" class="dm-only">
26
29
  </button>
27
30
  </div>
28
31
  </div>
@@ -5,10 +5,8 @@
5
5
  <div class="header-left">
6
6
  <div class="navbar__brand">
7
7
  <a class="navbar__logo" href="https://psdi.ac.uk/">
8
- <img src="../img/psdi-logo-darktext.png" alt="PSDI logo"
9
- class="lm-only">
10
- <img src="../img/psdi-logo-lighttext.png" alt="PSDI logo"
11
- class="dm-only">
8
+ <img src="../img/psdi-logo-darktext.png" alt="PSDI logo" class="lm-only">
9
+ <img src="../img/psdi-logo-lighttext.png" alt="PSDI logo" class="dm-only">
12
10
  </a>
13
11
  <a class="navbar__title" href="../../">
14
12
  <h5>Data Conversion Service</h5>
@@ -16,13 +14,18 @@
16
14
  </div>
17
15
  </div>
18
16
  <div class="navbar__items navbar__items--right">
19
- <!-- This file contains the links that will appear in the top-right of the header bar for .html files in this directory. --> <a href="../../" class="navbar__item navbar__link">Home</a> <a href="report.htm" class="navbar__item navbar__link">Report Missing Format/Conversion</a> <a href="feedback.htm" class="navbar__item navbar__link">Provide Feedback</a> <a href="documentation.htm" class="navbar__item navbar__link">Documentation</a> <a href="download.htm" class="navbar__item navbar__link service-only">Download</a> <a href="accessibility.htm" class="navbar__item navbar__link">Accessibility</a> <a href="mailto:support@psdi.ac.uk" class="navbar__item navbar__link" id="mail">Contact Us</a>
17
+ <!-- This file contains the links that will appear in the top-right of the header bar for .html files in this directory. -->
18
+ <a href="../../" class="navbar__item navbar__link">Home</a> <a href="report.htm"
19
+ class="navbar__item navbar__link">Report Missing Format/Conversion</a> <a href="feedback.htm"
20
+ class="navbar__item navbar__link">Provide Feedback</a> <a href="../../documentation.htm"
21
+ class="navbar__item navbar__link">Documentation</a> <a href="download.htm"
22
+ class="navbar__item navbar__link service-only">Download</a> <a href="accessibility.htm"
23
+ class="navbar__item navbar__link">Accessibility</a> <a href="mailto:support@psdi.ac.uk"
24
+ class="navbar__item navbar__link" id="mail">Contact Us</a>
20
25
  <button class="clean-btn color-mode-toggle" title="Switch between dark and light mode"
21
26
  aria-label="Lightmode/darkmode toggle button">
22
- <img src="../img/colormode-toggle-lm.svg" alt="Lightmode toggle icon"
23
- class="lm-only">
24
- <img src="../img/colormode-toggle-dm.svg" alt="Darkmode toggle icon"
25
- class="dm-only">
27
+ <img src="../img/colormode-toggle-lm.svg" alt="Lightmode toggle icon" class="lm-only">
28
+ <img src="../img/colormode-toggle-dm.svg" alt="Darkmode toggle icon" class="dm-only">
26
29
  </button>
27
30
  </div>
28
31
  </div>
@@ -145,11 +145,11 @@ select#dark-background option {
145
145
 
146
146
  /* We use the production-mode variable to control whether elements with the "prod-only" or "dev-only" class are shown
147
147
  */
148
- [production-mode=True] .prod-only {
148
+ [production-mode=False] .prod-only {
149
149
  display: none;
150
150
  }
151
151
 
152
- [production-mode=False] .dev-only {
152
+ [production-mode=True] .dev-only {
153
153
  display: none;
154
154
  }
155
155
 
@@ -344,6 +344,11 @@ body>* {
344
344
  align-items : center;
345
345
  }
346
346
 
347
+ /* Applies only to buttons with this class not in the PSDI header, to not break docusaurus sites */
348
+ .clean-btn {
349
+ margin: 0;
350
+ }
351
+
347
352
  #psdi-header .clean-btn {
348
353
  background : none;
349
354
  border : none;
@@ -9,17 +9,20 @@
9
9
  <head>
10
10
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
11
11
  <title>PSDI Data Conversion Service</title>
12
- <link rel="icon" type="image/x-icon" href="../img/psdi-icon-dark.svg">
12
+ <link rel="icon" type="image/x-icon" href="./static/img/psdi-icon-dark.svg">
13
13
  <link href="https://fonts.googleapis.com/css?family=Lato:400" rel="stylesheet" type="text/css">
14
14
  <link href="https://fonts.googleapis.com/css?family=Open+Sans+Condensed:700" rel="stylesheet" type="text/css">
15
- <link rel="stylesheet" href="../styles/format.css">
15
+ <link href="https://fonts.googleapis.com/css?family=Open+Sans:400" rel="stylesheet" type="text/css">
16
+ <link href="https://fonts.googleapis.com/css?family=Lexend:400" rel="stylesheet" type="text/css">
17
+ <link rel="stylesheet" href="{{url_for('static', filename='styles/format.css')}}">
16
18
 
17
19
  <script src="https://code.jquery.com/jquery-3.7.1.js" integrity="sha256-eKhayi8LEQwp4NKxN+CfCh+3qOVUtJn3QNZ0TciWLP4="
18
20
  crossorigin="anonymous"></script>
21
+ <script src="https://cdn.jsdelivr.net/jquery.dirtyforms/2.0.0/jquery.dirtyforms.min.js"></script>
19
22
 
20
- <script src="../javascript/load_accessibility.js"></script>
21
- <script src="../javascript/common.js" type="module"></script>
22
- <script src="../javascript/psdi-common.js" type="module"></script>
23
+ <script src="static/javascript/load_accessibility.js"></script>
24
+ <script src="static/javascript/common.js" type="module"></script>
25
+ <script src="static/javascript/psdi-common.js" type="module"></script>
23
26
  </head>
24
27
 
25
28
  <body marginwidth="0">
@@ -28,6 +31,14 @@
28
31
  <div id="cover"></div>
29
32
 
30
33
  <header class="header" id="psdi-header"></header>
34
+ <script type="module">
35
+ import { setHeaderLinksSource, setHeaderSource, setFooterSource } from "./static/javascript/psdi-common.js";
36
+ // Due to the index being a template which will exist in a different directory once rendered, we need to set
37
+ // a non-default location of the header links file
38
+ setHeaderSource("{{url_for('static', filename='content/index-versions/psdi-common-header.html')}}");
39
+ setFooterSource("{{url_for('static', filename='content/index-versions/psdi-common-footer.html')}}");
40
+ setHeaderLinksSource("{{url_for('static', filename='content/index-versions/header-links.html')}}");
41
+ </script>
31
42
 
32
43
  <div class="hero">
33
44
  <div class="max-width-box">
@@ -84,6 +95,15 @@
84
95
  in the changes being lost. Note that page appearance may vary slightly according to the browser used.</p>
85
96
  <p>The colour options here are not compatible with the dark-mode toggle in the header bar. If a custom dark scheme
86
97
  is desired, the appropriate colours can be selected in light-mode.</p>
98
+ <h3>About</h3>
99
+ <p><strong>PSDI Data Conversion service</strong><br>
100
+ <span class="local-only">Local GUI</span><span class="service-only">Public web service</span> mode -
101
+ <span class="dev-only">Development</span><span class="prod-only">Production</span> build<br>
102
+ {% if tag %}<strong>Version:</strong> {{ tag }}<br>{% endif %}
103
+ {% if sha %}<span class="dev-only"><strong>SHA of latest commit:</strong> {{ sha }}<br></span>{% endif %}
104
+ <strong>Project source:</strong> <a
105
+ href="https://github.com/PSDI-UK/psdi-data-conversion">https://github.com/PSDI-UK/psdi-data-conversion</a><br>
106
+ </p>
87
107
  <div class="medGap"></div>
88
108
  </div>
89
109
  </form>
@@ -59,7 +59,7 @@
59
59
  <p>Your one-stop shop for file format conversion, PSDI's Data Conversion Service enables users to seamlessly
60
60
  convert between different file formats and assess the quality of proposed conversions. This is the web version
61
61
  of our service. To find out more about Data Conversion and our other tools, click
62
- <a href="https://resources.psdi.ac.uk/resource-themes/7bcc430a-fdc9-413e-bf32-bf163236430b" id="more"
62
+ <a href="https://resources.psdi.ac.uk/service/8334f94b-1c6e-4034-a5ab-71c6df375cba" id="more"
63
63
  target="_blank">here.</a>
64
64
  </p>
65
65
  <div id="format-selection">
@@ -121,7 +121,7 @@
121
121
  </div>
122
122
  </form>
123
123
  {% if tag %}
124
- <div class="secondary prod-only">
124
+ <div class="secondary dev-only">
125
125
  <div class="max-width-box">PSDI Data Conversion {{ tag }} {% if sha %} (SHA: {{ sha }}) {% endif %}</div>
126
126
  </div>
127
127
  {% endif %}
@@ -93,9 +93,11 @@ exclude = [
93
93
  pythonpath = ["."]
94
94
 
95
95
  [tool.coverage.run]
96
- source_pkgs = ["psdi_data_conversion", "tests"]
96
+ source_pkgs = ["psdi_data_conversion"]
97
97
  branch = true
98
- omit = []
98
+ # app.py is tested via the Selenium tests, which are indirect enough that the coverage tool doesn't pick up that the
99
+ # lines are being tested, so we exclude it from the coverage % calculation
100
+ omit = ["*/testing/*", "app.py"]
99
101
 
100
102
  [tool.coverage.paths]
101
103
  tests = ["tests/python"]