psdi-data-conversion 0.1.0__tar.gz → 0.1.2__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.0 → psdi_data_conversion-0.1.2}/PKG-INFO +1 -1
  2. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/psdi_data_conversion/app.py +56 -16
  3. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/psdi_data_conversion/templates/index.htm +2 -2
  4. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/.gitignore +0 -0
  5. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/CHANGELOG.md +0 -0
  6. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/CONTRIBUTING.md +0 -0
  7. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/LICENSE +0 -0
  8. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/README.md +0 -0
  9. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/psdi_data_conversion/__init__.py +0 -0
  10. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/psdi_data_conversion/bin/LICENSE_ATOMSK +0 -0
  11. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/psdi_data_conversion/bin/LICENSE_C2X +0 -0
  12. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/psdi_data_conversion/bin/linux/atomsk +0 -0
  13. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/psdi_data_conversion/bin/linux/c2x +0 -0
  14. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/psdi_data_conversion/bin/mac/atomsk +0 -0
  15. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/psdi_data_conversion/bin/mac/c2x +0 -0
  16. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/psdi_data_conversion/constants.py +0 -0
  17. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/psdi_data_conversion/converter.py +0 -0
  18. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/psdi_data_conversion/converters/__init__.py +0 -0
  19. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/psdi_data_conversion/converters/atomsk.py +0 -0
  20. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/psdi_data_conversion/converters/base.py +0 -0
  21. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/psdi_data_conversion/converters/c2x.py +0 -0
  22. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/psdi_data_conversion/converters/openbabel.py +0 -0
  23. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/psdi_data_conversion/database.py +0 -0
  24. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/psdi_data_conversion/dist.py +0 -0
  25. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/psdi_data_conversion/file_io.py +0 -0
  26. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/psdi_data_conversion/log_utility.py +0 -0
  27. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/psdi_data_conversion/main.py +0 -0
  28. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/psdi_data_conversion/scripts/atomsk.sh +0 -0
  29. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/psdi_data_conversion/scripts/c2x.sh +0 -0
  30. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/psdi_data_conversion/security.py +0 -0
  31. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/psdi_data_conversion/static/content/accessibility.htm +0 -0
  32. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/psdi_data_conversion/static/content/convert.htm +0 -0
  33. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/psdi_data_conversion/static/content/convertato.htm +0 -0
  34. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/psdi_data_conversion/static/content/convertc2x.htm +0 -0
  35. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/psdi_data_conversion/static/content/documentation.htm +0 -0
  36. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/psdi_data_conversion/static/content/download.htm +0 -0
  37. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/psdi_data_conversion/static/content/feedback.htm +0 -0
  38. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/psdi_data_conversion/static/content/header-links.html +0 -0
  39. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/psdi_data_conversion/static/content/index-versions/header-links.html +0 -0
  40. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/psdi_data_conversion/static/content/index-versions/psdi-common-footer.html +0 -0
  41. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/psdi_data_conversion/static/content/index-versions/psdi-common-header.html +0 -0
  42. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/psdi_data_conversion/static/content/psdi-common-footer.html +0 -0
  43. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/psdi_data_conversion/static/content/psdi-common-header.html +0 -0
  44. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/psdi_data_conversion/static/content/report.htm +0 -0
  45. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/psdi_data_conversion/static/data/data.json +0 -0
  46. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/psdi_data_conversion/static/img/colormode-toggle-dm.svg +0 -0
  47. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/psdi_data_conversion/static/img/colormode-toggle-lm.svg +0 -0
  48. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/psdi_data_conversion/static/img/psdi-icon-dark.svg +0 -0
  49. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/psdi_data_conversion/static/img/psdi-icon-light.svg +0 -0
  50. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/psdi_data_conversion/static/img/psdi-logo-darktext-simple.png +0 -0
  51. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/psdi_data_conversion/static/img/psdi-logo-darktext.png +0 -0
  52. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/psdi_data_conversion/static/img/psdi-logo-lighttext-simple.png +0 -0
  53. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/psdi_data_conversion/static/img/psdi-logo-lighttext.png +0 -0
  54. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/psdi_data_conversion/static/img/social-logo-bluesky-black.svg +0 -0
  55. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/psdi_data_conversion/static/img/social-logo-bluesky-white.svg +0 -0
  56. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/psdi_data_conversion/static/img/social-logo-instagram-black.svg +0 -0
  57. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/psdi_data_conversion/static/img/social-logo-instagram-white.svg +0 -0
  58. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/psdi_data_conversion/static/img/social-logo-linkedin-black.png +0 -0
  59. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/psdi_data_conversion/static/img/social-logo-linkedin-white.png +0 -0
  60. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/psdi_data_conversion/static/img/social-logo-mastodon-black.svg +0 -0
  61. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/psdi_data_conversion/static/img/social-logo-mastodon-white.svg +0 -0
  62. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/psdi_data_conversion/static/img/social-logo-x-black.svg +0 -0
  63. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/psdi_data_conversion/static/img/social-logo-x-white.svg +0 -0
  64. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/psdi_data_conversion/static/img/social-logo-youtube-black.png +0 -0
  65. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/psdi_data_conversion/static/img/social-logo-youtube-white.png +0 -0
  66. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/psdi_data_conversion/static/img/ukri-epsr-logo-darktext.png +0 -0
  67. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/psdi_data_conversion/static/img/ukri-epsr-logo-lighttext.png +0 -0
  68. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/psdi_data_conversion/static/img/ukri-logo-darktext.png +0 -0
  69. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/psdi_data_conversion/static/img/ukri-logo-lighttext.png +0 -0
  70. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/psdi_data_conversion/static/javascript/accessibility.js +0 -0
  71. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/psdi_data_conversion/static/javascript/common.js +0 -0
  72. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/psdi_data_conversion/static/javascript/convert.js +0 -0
  73. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/psdi_data_conversion/static/javascript/convert_common.js +0 -0
  74. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/psdi_data_conversion/static/javascript/convertato.js +0 -0
  75. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/psdi_data_conversion/static/javascript/convertc2x.js +0 -0
  76. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/psdi_data_conversion/static/javascript/data.js +0 -0
  77. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/psdi_data_conversion/static/javascript/format.js +0 -0
  78. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/psdi_data_conversion/static/javascript/load_accessibility.js +0 -0
  79. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/psdi_data_conversion/static/javascript/psdi-common.js +0 -0
  80. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/psdi_data_conversion/static/javascript/report.js +0 -0
  81. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/psdi_data_conversion/static/styles/format.css +0 -0
  82. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/psdi_data_conversion/static/styles/psdi-common.css +0 -0
  83. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/psdi_data_conversion/testing/__init__.py +0 -0
  84. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/psdi_data_conversion/testing/constants.py +0 -0
  85. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/psdi_data_conversion/testing/conversion_callbacks.py +0 -0
  86. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/psdi_data_conversion/testing/conversion_test_specs.py +0 -0
  87. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/psdi_data_conversion/testing/gui.py +0 -0
  88. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/psdi_data_conversion/testing/utils.py +0 -0
  89. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/psdi_data_conversion/utils.py +0 -0
  90. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/pyproject.toml +0 -0
  91. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/scripts/setup_bin.py +0 -0
  92. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/test_data/1ARJ.mmcif +0 -0
  93. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/test_data/1NE6.mmcif +0 -0
  94. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/test_data/5a9z-assembly1.cif +0 -0
  95. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/test_data/Fapatite.ins +0 -0
  96. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/test_data/aceticacid.mol +0 -0
  97. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/test_data/benzyne.molden +0 -0
  98. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/test_data/caffeine-smi.tar +0 -0
  99. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/test_data/caffeine-smi.tar.gz +0 -0
  100. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/test_data/caffeine-smi.zip +0 -0
  101. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/test_data/caffeine.inchi +0 -0
  102. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/test_data/ch3cl-esp.cub +0 -0
  103. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/test_data/cyclopropane_err.mol +0 -0
  104. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/test_data/ethanol.xyz +0 -0
  105. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/test_data/fullRhinovirus.pdb +0 -0
  106. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/test_data/hemoglobin.pdb +0 -0
  107. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/test_data/nacl.cif +0 -0
  108. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/test_data/nacl.mol +0 -0
  109. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/test_data/output/aceticacid.log.txt +0 -0
  110. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/test_data/output/aceticacid.mol2 +0 -0
  111. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/test_data/output/caffeine-2D-fastest.xyz +0 -0
  112. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/test_data/output/caffeine-3D-best.xyz +0 -0
  113. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/test_data/output/caffeine.smi +0 -0
  114. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/test_data/output/caffeine.xyz +0 -0
  115. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/test_data/output/caffeine_a_in.smi +0 -0
  116. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/test_data/output/caffeine_a_in_kx_f4_l5_out.smi +0 -0
  117. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/test_data/output/caffeine_a_in_kx_f4_out.smi +0 -0
  118. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/test_data/output/caffeine_a_in_kx_out.smi +0 -0
  119. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/test_data/output/caffeine_a_in_x_out.smi +0 -0
  120. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/test_data/output/hemoglobin_Atomsk.xyz +0 -0
  121. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/test_data/output/hemoglobin_c2x.xyz +0 -0
  122. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/test_data/output/nacl.log +0 -0
  123. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/test_data/output/nacl.mol +0 -0
  124. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/test_data/output/quartz_OB.cif +0 -0
  125. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/test_data/output/quartz_OB.log.txt +0 -0
  126. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/test_data/output/quartz_atomsk.cif +0 -0
  127. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/test_data/output/quartz_atomsk.log.txt +0 -0
  128. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/test_data/output/standard_test.inchi +0 -0
  129. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/test_data/output/xyz_files-mol.zip +0 -0
  130. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/test_data/output/xyz_files.log.txt +0 -0
  131. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/test_data/periodic_dmol3.outmol +0 -0
  132. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/test_data/quartz.xyz +0 -0
  133. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/test_data/quartz_err.xyz +0 -0
  134. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/test_data/standard_test.cdxml +0 -0
  135. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/tests/gui/gui_test.py +0 -0
  136. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/tests/python/cli_test.py +0 -0
  137. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/tests/python/converter_test.py +0 -0
  138. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/tests/python/database_test.py +0 -0
  139. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/tests/python/dist_test.py +0 -0
  140. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/tests/python/file_io_test.py +0 -0
  141. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/tests/python/logging_test.py +0 -0
  142. {psdi_data_conversion-0.1.0 → psdi_data_conversion-0.1.2}/tests/python/security_test.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: psdi_data_conversion
3
- Version: 0.1.0
3
+ Version: 0.1.2
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/
@@ -6,7 +6,6 @@ This script acts as a server for the PSDI Data Conversion Service website.
6
6
  """
7
7
 
8
8
  import json
9
- from multiprocessing import Lock
10
9
  import os
11
10
  import sys
12
11
  from argparse import ArgumentParser
@@ -14,6 +13,7 @@ from collections.abc import Callable
14
13
  from datetime import datetime
15
14
  from functools import wraps
16
15
  from hashlib import md5
16
+ from multiprocessing import Lock
17
17
  from subprocess import run
18
18
  from traceback import format_exc
19
19
  from typing import Any
@@ -30,7 +30,9 @@ from psdi_data_conversion.database import get_format_info
30
30
  from psdi_data_conversion.file_io import split_archive_ext
31
31
  from psdi_data_conversion.main import print_wrap
32
32
 
33
- # Env var for the SHA of the latest commit
33
+ # Env var for the tag and SHA of the latest commit
34
+ TAG_EV = "TAG"
35
+ TAG_SHA_EV = "TAG_SHA"
34
36
  SHA_EV = "SHA"
35
37
 
36
38
  # Env var for whether this is a production release or development
@@ -130,42 +132,80 @@ def limit_upload_size():
130
132
  limit_upload_size()
131
133
 
132
134
 
133
- def get_last_sha() -> str:
135
+ def get_tag_and_sha() -> str:
134
136
  """Get the SHA of the last commit
135
137
  """
136
138
 
137
- # First check if the SHA is provided through an environmental variable
138
- ev_sha = os.environ.get(SHA_EV)
139
- if ev_sha:
140
- return ev_sha
139
+ # Get the tag of the latest commit
140
+ ev_tag = os.environ.get(TAG_EV)
141
+ if ev_tag:
142
+ tag = ev_tag
143
+ try:
144
+ # This bash command calls `git tag` to get a sorted list of tags, with the most recent at the top, then uses
145
+ # `head` to trim it to one line
146
+ cmd = "git tag --sort -version:refname | head -n 1"
147
+
148
+ out_bytes = run(cmd, shell=True, capture_output=True).stdout
149
+ tag = str(out_bytes.decode()).strip()
150
+
151
+ except Exception:
152
+ print("ERROR: Could not determine most recent tag. Error was:\n" + format_exc(),
153
+ file=sys.stderr)
154
+ tag = ""
141
155
 
156
+ # Get the SHA associated with this tag
157
+ ev_tag_sha = os.environ.get(TAG_SHA_EV)
158
+ if ev_tag_sha:
159
+ tag: str | None = ev_tag_sha
142
160
  try:
143
- # This bash command calls `git log` to get info on the last commit, uses `head` to trim it to one line, then
144
- # uses `gawk` to get just the second word of this line, which is the SHA of this commit
145
- cmd = "git log -n 1 | head -n 1 | gawk '{print($2)}'"
161
+ cmd = f"git show {tag}" + " | head -n 1 | gawk '{print($2)}'"
146
162
 
147
163
  out_bytes = run(cmd, shell=True, capture_output=True).stdout
148
- out_str = str(out_bytes.decode()).strip()
164
+ tag_sha = str(out_bytes.decode()).strip()
149
165
 
150
166
  except Exception:
151
- print("ERROR: Could not determine SHA of most recent commit. Error was:\n" + format_exc(),
167
+ print("ERROR: Could not determine SHA for most recent tag. Error was:\n" + format_exc(),
152
168
  file=sys.stderr)
153
- out_str = "N/A"
169
+ tag_sha = None
170
+
171
+ # First check if the SHA is provided through an environmental variable
172
+ ev_sha = os.environ.get(SHA_EV)
173
+ if ev_sha:
174
+ sha = ev_sha
175
+ else:
176
+ try:
177
+ # This bash command calls `git log` to get info on the last commit, uses `head` to trim it to one line, then
178
+ # uses `gawk` to get just the second word of this line, which is the SHA of this commit
179
+ cmd = "git log -n 1 | head -n 1 | gawk '{print($2)}'"
180
+
181
+ out_bytes = run(cmd, shell=True, capture_output=True).stdout
182
+ sha = str(out_bytes.decode()).strip()
183
+
184
+ except Exception:
185
+ print("ERROR: Could not determine SHA of most recent commit. Error was:\n" + format_exc(),
186
+ file=sys.stderr)
187
+ sha = ""
188
+
189
+ # If the SHA of the tag is the same as the current SHA, we indicate this by returning a blank SHA
190
+ if tag_sha == sha:
191
+ sha = ""
154
192
 
155
- return out_str
193
+ return (tag, sha)
156
194
 
157
195
 
158
196
  @app.route('/')
159
197
  def website():
160
198
  """Return the web page along with the token
161
199
  """
200
+ tag, sha = get_tag_and_sha()
162
201
  return render_template("index.htm",
163
202
  token=token,
164
203
  max_file_size=max_file_size,
165
204
  max_file_size_ob=max_file_size_ob,
166
205
  service_mode=service_mode,
167
206
  production_mode=production_mode,
168
- sha=get_last_sha())
207
+ tag=tag,
208
+ sha=sha)
169
209
 
170
210
 
171
211
  @app.route('/convert/', methods=['POST'])
@@ -273,7 +313,7 @@ def feedback():
273
313
 
274
314
  # Write data in JSON format and send to stdout
275
315
  logLock.acquire()
276
- sys.stdout.write(f"{json.dumps(entry) + '\n'}")
316
+ sys.stdout.write(f"{json.dumps(entry) + '\n'}")
277
317
  logLock.release()
278
318
 
279
319
  return Response(status=201)
@@ -120,9 +120,9 @@
120
120
  <div class="medGap"></div>
121
121
  </div>
122
122
  </form>
123
- {% if sha %}
123
+ {% if tag %}
124
124
  <div class="secondary prod-only">
125
- <div class="max-width-box">SHA: {{ sha }}</div>
125
+ <div class="max-width-box">PSDI Data Conversion {{ tag }} {% if sha %} (SHA: {{ sha }}) {% endif %}</div>
126
126
  </div>
127
127
  {% endif %}
128
128
  <script src="{{url_for('static', filename='/javascript/format.js')}}" type="module" language="JavaScript"></script>