nmdc-runtime 2.4.0__tar.gz → 2.5.0__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.

Potentially problematic release.


This version of nmdc-runtime might be problematic. Click here for more details.

Files changed (555) hide show
  1. nmdc_runtime-2.5.0/.docker/mongo_init/initialize_replica_set.sh +44 -0
  2. nmdc_runtime-2.5.0/.dockerignore +29 -0
  3. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/.env.example +1 -1
  4. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/.env.test +1 -1
  5. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/.github/workflows/build-and-release-to-spin.yml +5 -2
  6. nmdc_runtime-2.5.0/.github/workflows/python-app.yml +91 -0
  7. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/.gitignore +1 -0
  8. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/Makefile +19 -5
  9. {nmdc_runtime-2.4.0/nmdc_runtime.egg-info → nmdc_runtime-2.5.0}/PKG-INFO +17 -4
  10. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/README.md +14 -2
  11. nmdc_runtime-2.5.0/docker-compose.test.yml +144 -0
  12. nmdc_runtime-2.5.0/docker-compose.yml +130 -0
  13. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/docs/admin.md +1 -1
  14. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/docs/howto-guides/release-process.md +1 -1
  15. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/docs/howto-guides/update-sensors-ops.md +6 -7
  16. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/docs/nb/bulk_validation_referential_integrity_check.ipynb +1 -1
  17. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/docs/nb/wf_automation.ipynb +1 -1
  18. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/docs/tutorials/json.md +84 -51
  19. nmdc_runtime-2.5.0/nmdc_runtime/Dockerfile +127 -0
  20. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/api/db/mongo.py +24 -17
  21. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/api/endpoints/find.py +283 -0
  22. nmdc_runtime-2.5.0/nmdc_runtime/api/endpoints/queries.py +418 -0
  23. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/api/endpoints/util.py +2 -0
  24. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/api/models/query.py +71 -57
  25. nmdc_runtime-2.5.0/nmdc_runtime/api/models/query_continuation.py +111 -0
  26. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/site/ops.py +6 -1
  27. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/site/repair/database_updater.py +12 -0
  28. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/site/repository.py +2 -2
  29. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/site/translation/neon_benthic_translator.py +156 -157
  30. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0/nmdc_runtime.egg-info}/PKG-INFO +17 -4
  31. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime.egg-info/SOURCES.txt +4 -3
  32. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/requirements/dev.txt +16 -15
  33. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/requirements/main.in +1 -1
  34. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/requirements/main.txt +74 -75
  35. nmdc_runtime-2.5.0/tests/__init__.py +22 -0
  36. nmdc_runtime-2.5.0/tests/lib/faker.py +271 -0
  37. nmdc_runtime-2.5.0/tests/mongorestore-nmdc-testdb.sh +9 -0
  38. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/tests/test_api/test_db_mongo.py +66 -3
  39. nmdc_runtime-2.5.0/tests/test_api/test_endpoints.py +1842 -0
  40. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/tests/test_api/test_metadata.py +10 -4
  41. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/tests/test_data/test_neon_benthic_data_translator.py +116 -42
  42. nmdc_runtime-2.5.0/tests/test_the_util/__init__.py +0 -0
  43. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/tests/test_util.py +13 -0
  44. nmdc_runtime-2.4.0/.dockerignore +0 -9
  45. nmdc_runtime-2.4.0/.github/workflows/python-app.yml +0 -57
  46. nmdc_runtime-2.4.0/docker-compose.test.yml +0 -110
  47. nmdc_runtime-2.4.0/docker-compose.yml +0 -99
  48. nmdc_runtime-2.4.0/nmdc_runtime/api/endpoints/queries.py +0 -242
  49. nmdc_runtime-2.4.0/nmdc_runtime/dagster.Dockerfile +0 -42
  50. nmdc_runtime-2.4.0/nmdc_runtime/fastapi.Dockerfile +0 -29
  51. nmdc_runtime-2.4.0/nmdc_runtime/test.Dockerfile +0 -43
  52. nmdc_runtime-2.4.0/tests/__init__.py +0 -6
  53. nmdc_runtime-2.4.0/tests/mongodump-nmdc-testdb.sh +0 -6
  54. nmdc_runtime-2.4.0/tests/mongorestore-nmdc-testdb.sh +0 -6
  55. nmdc_runtime-2.4.0/tests/test_api/test_endpoints.py +0 -844
  56. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  57. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  58. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/.github/pull_request_template.md +0 -0
  59. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/.github/workflows/deploy-redirects.yml +0 -0
  60. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/.github/workflows/lint.yml +0 -0
  61. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/.github/workflows/mkdocs.yml +0 -0
  62. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/.github/workflows/release-to-pypi.yml +0 -0
  63. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/.gitpod.Dockerfile +0 -0
  64. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/.gitpod.yml +0 -0
  65. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/.nvmrc +0 -0
  66. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/LICENSE +0 -0
  67. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/RELEASES.md +0 -0
  68. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/components/nmdc_runtime/workflow/__init__.py +0 -0
  69. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/components/nmdc_runtime/workflow/spec.py +0 -0
  70. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/components/nmdc_runtime/workflow_execution_activity/__init__.py +0 -0
  71. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/components/nmdc_runtime/workflow_execution_activity/core.py +0 -0
  72. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/components/nmdc_runtime/workflow_execution_activity/spec.py +0 -0
  73. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/components/nmdc_runtime/workflow_execution_activity/store.py +0 -0
  74. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/db/README.md +0 -0
  75. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/db/migrations/README.md +0 -0
  76. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/db/migrations/notebooks/.gitignore +0 -0
  77. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/db/migrations/notebooks/.notebook.env.example +0 -0
  78. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/db/migrations/notebooks/bookkeeper.py +0 -0
  79. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/db/migrations/notebooks/helpers.py +0 -0
  80. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/db/migrations/notebooks/manual_test_bookkeeper.py +0 -0
  81. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/db/migrations/notebooks/migrate_10_0_0_to_10_1_4.ipynb +0 -0
  82. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/db/migrations/notebooks/migrate_10_3_0_to_10_4_0.ipynb +0 -0
  83. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/db/migrations/notebooks/migrate_10_4_0_to_10_9_1.ipynb +0 -0
  84. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/db/migrations/notebooks/migrate_10_9_1_to_11_0_0.ipynb +0 -0
  85. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/db/migrations/notebooks/migrate_11_0_0_to_11_0_1.ipynb +0 -0
  86. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/db/migrations/notebooks/migrate_11_0_3_to_11_1_0.ipynb +0 -0
  87. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/db/migrations/notebooks/migrate_11_1_0_to_11_2_1.ipynb +0 -0
  88. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/db/migrations/notebooks/migrate_11_2_1_to_11_3_0.ipynb +0 -0
  89. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/db/migrations/notebooks/migrate_11_3_0_to_11_4_0.ipynb +0 -0
  90. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/db/migrations/notebooks/migrate_7_7_2_to_7_8_0.ipynb +0 -0
  91. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/db/migrations/notebooks/migrate_7_8_0_to_8_0_0.ipynb +0 -0
  92. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/db/migrations/notebooks/migrate_8_0_0_to_8_1_2.ipynb +0 -0
  93. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/db/migrations/notebooks/migrate_8_1_2_to_9_0_4.ipynb +0 -0
  94. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/db/migrations/notebooks/migrate_9_0_4_to_9_1_0.ipynb +0 -0
  95. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/db/migrations/notebooks/migrate_9_1_0_to_9_2_0.ipynb +0 -0
  96. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/db/migrations/notebooks/migrate_9_3_2_to_10_0_0.ipynb +0 -0
  97. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/db/migrations/notebooks/migrate_A_B_C_to_X_Y_Z.ipynb +0 -0
  98. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/db/migrations/notebooks/mongosh-scripts/restore-privileges.mongo.js +0 -0
  99. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/db/migrations/notebooks/mongosh-scripts/revoke-privileges.mongo.js +0 -0
  100. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/db/migrations/notebooks/requirements.txt +0 -0
  101. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/db/migrations/notebooks/stakeholders.md +0 -0
  102. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/db/migrations/notebooks/test_helpers.py +0 -0
  103. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/demo/metadata_discovery/.env.example +0 -0
  104. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/demo/metadata_discovery/GOLDs5levelEcosystemClassificationPaths.xlsx +0 -0
  105. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/demo/metadata_discovery/biosamples.json +0 -0
  106. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/demo/metadata_discovery/console_queries.dev +0 -0
  107. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/demo/metadata_discovery/docker-compose.yml +0 -0
  108. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/demo/metadata_discovery/envo.owl +0 -0
  109. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/demo/metadata_discovery/indexing.ipynb +0 -0
  110. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/demo/metadata_discovery/po.owl +0 -0
  111. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/demo/metadata_migration/__init__.py +0 -0
  112. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/demo/metadata_migration/main.ipynb +0 -0
  113. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/demo/metadata_migration/main.py +0 -0
  114. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/docs/contributing-docs.md +0 -0
  115. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/docs/draft.md +0 -0
  116. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/docs/explanation/domain-vision-statement.md +0 -0
  117. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/docs/explanation/identifiers.md +0 -0
  118. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/docs/explanation/journeys.md +0 -0
  119. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/docs/howto-guides/author-changesheets.md +0 -0
  120. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/docs/howto-guides/claim-and-run-jobs.md +0 -0
  121. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/docs/howto-guides/create-triggers.md +0 -0
  122. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/docs/howto-guides/improving-search-api.md +0 -0
  123. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/docs/howto-guides/jobs/gold-translation-etl.md +0 -0
  124. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/docs/howto-guides/minting-ids.md +0 -0
  125. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/docs/img/auth-button.png +0 -0
  126. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/docs/img/auth-client-id.png +0 -0
  127. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/docs/img/auth-close-modal.png +0 -0
  128. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/docs/img/auth-username.png +0 -0
  129. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/docs/img/dagit-apply-changesheet-job.png +0 -0
  130. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/docs/img/dagster-translation-gold-job.png +0 -0
  131. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/docs/img/dagster-translation-gold-launchpad.png +0 -0
  132. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/docs/img/dagster-translation-gold-overview.png +0 -0
  133. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/docs/img/dagster-translation-repo-jobs.png +0 -0
  134. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/docs/img/dagster-workspace-repo-loaded.png +0 -0
  135. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/docs/img/exporters-dagit.png +0 -0
  136. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/docs/img/job-triggering.png +0 -0
  137. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/docs/img/list-from-collection-filter.png +0 -0
  138. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/docs/img/list-from-collection-page-token.png +0 -0
  139. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/docs/img/list-from-collection.png +0 -0
  140. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/docs/img/metadata-in-dagit-runs.png +0 -0
  141. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/docs/img/metadata-in-put-types.png +0 -0
  142. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/docs/img/nmdc-runtime-federation.png +0 -0
  143. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/docs/img/rancher-nmdc-runtime-dev-workloads.png +0 -0
  144. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/docs/img/translators-dagit.png +0 -0
  145. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/docs/img/validate-json-copy-paste-execute.png +0 -0
  146. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/docs/img/validate-json-get-one-valid.png +0 -0
  147. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/docs/img/validate-json-response.png +0 -0
  148. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/docs/img/validate-json-try-it-out.png +0 -0
  149. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/docs/img/validate-json.png +0 -0
  150. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/docs/index.md +0 -0
  151. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/docs/nb/api_access_via_python.ipynb +0 -0
  152. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/docs/nb/get_data.ipynb +0 -0
  153. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/docs/nb/queue_and_trigger_data_jobs.ipynb +0 -0
  154. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/docs/stylesheets/extra.css +0 -0
  155. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/docs/tutorials/auth.md +0 -0
  156. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/docs/tutorials/exporters.md +0 -0
  157. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/docs/tutorials/metadata-in.md +0 -0
  158. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/docs/tutorials/translators.md +0 -0
  159. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/docs_prev/design/api-resource-diagram.md +0 -0
  160. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/docs_prev/design/api-resource-layout.md +0 -0
  161. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/docs_prev/design/nmdc-runtime-api-resource-diagram.png +0 -0
  162. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/docs_prev/design/nmdc-wfe.ttl +0 -0
  163. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/docs_prev/design/redoc-static.html +0 -0
  164. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/docs_prev/design/spec.md +0 -0
  165. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/docs_prev/design/workflow-automation.md +0 -0
  166. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/docs_prev/index.html +0 -0
  167. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/flake.lock +0 -0
  168. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/flake.nix +0 -0
  169. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/github_secrets_to_dotenv.sh +0 -0
  170. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/guix-manifest.scm +0 -0
  171. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/Makefile +0 -0
  172. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/README.md +0 -0
  173. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/__init__.py +0 -0
  174. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/examples/Froze_Core_2015_S2_0_10_7_Metab.json +0 -0
  175. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/examples/MAGs_activity.json +0 -0
  176. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/examples/biosample_test.json +0 -0
  177. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/examples/changesheet-ex-01-screenshot.png +0 -0
  178. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/examples/changesheet-ex-01.csv +0 -0
  179. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/examples/emsl_data_object_test.json +0 -0
  180. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/examples/emsl_project_test.json +0 -0
  181. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/examples/feature-set.json +0 -0
  182. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/examples/ftms_nom_data_products.json +0 -0
  183. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/examples/functional-annotation.json +0 -0
  184. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/examples/gcms_metabolomics_data_products.json +0 -0
  185. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/examples/gold_project_test.json +0 -0
  186. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/examples/img_mg_annotation_data_objects.json +0 -0
  187. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/examples/img_mg_annotation_objects.json +0 -0
  188. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/examples/metagenome_annotation_activity.json +0 -0
  189. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/examples/mg_assembly_activities_test.json +0 -0
  190. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/examples/mg_assembly_data_objects_test.json +0 -0
  191. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/examples/migs-template-cedar.schema.json +0 -0
  192. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/examples/nom_analysis_activity.json +0 -0
  193. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/examples/readQC_activities_test.json +0 -0
  194. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/examples/readQC_data_objects_test.json +0 -0
  195. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/examples/read_based_analysis_activity.json +0 -0
  196. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/examples/study_test.json +0 -0
  197. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/images/nmdc-etl-workflow.drawio +0 -0
  198. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/images/nmdc-etl-workflow.png +0 -0
  199. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/images/nmdc-etl-workflow.svg +0 -0
  200. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/mapping-files/Description_MIxS_Packages_v5.docx +0 -0
  201. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/mapping-files/GOLD-Paths-to-MIxS-ENVO-triad-mapping.xlsx +0 -0
  202. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/mapping-files/MIxSair_20180621_GOLD_Mapping_04132020.xlsx +0 -0
  203. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/mapping-files/MIxSbuiltenv_20180621_GOLD_Mapping_04172020.xlsx +0 -0
  204. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/mapping-files/MIxShostassoc_20180621_GOLD_Mapping.xlsx +0 -0
  205. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/mapping-files/MIxShumanassoc_20180621_GOLD_Mapping_04142020.xlsx +0 -0
  206. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/mapping-files/MIxShumangut_20180621_GOLD_Mapping_04152020.xlsx +0 -0
  207. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/mapping-files/MIxShumanoral_20180621_GOLD_Mapping_04152020.xlsx +0 -0
  208. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/mapping-files/MIxShumanskin_20180621_GOLD_Mapping_04162020.xlsx +0 -0
  209. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/mapping-files/MIxShumanvaginal_20180621_GOLD_04162020.xlsx +0 -0
  210. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/mapping-files/MIxShydrocarbCores_20180621_Mapping_GOLD.xlsx +0 -0
  211. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/mapping-files/MIxShydrocarbfs_20180621_v5_GOLD_Mapping.xlsx +0 -0
  212. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/mapping-files/MIxSmatbiofilm_20180621_v5_GOLD_Mapping.xlsx +0 -0
  213. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/mapping-files/MIxSmisc_20180621_GOLD_Mapping.xlsx +0 -0
  214. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/mapping-files/MIxSplantassoc_20180621_v5_GOLD_Mapping.xlsx +0 -0
  215. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/mapping-files/MIxSsediment_20180621_GOLD_Mapping_04102020.xlsx +0 -0
  216. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/mapping-files/MIxSsoil_20180621_GOLD_Mapping_04102020.xlsx +0 -0
  217. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/mapping-files/MIxSwastesludge_20180621_GOLD_Mapping_Apr-10.xlsx +0 -0
  218. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/mapping-files/MIxSwater_20180621_GOLD_Mapping_04122020.xlsx +0 -0
  219. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/mapping-files/Makefile +0 -0
  220. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/mapping-files/README.md +0 -0
  221. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/mapping-files/mixs_v4.xlsx +0 -0
  222. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/mapping-files/mixs_v5.xlsx +0 -0
  223. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/notebooks/202106_curation_updates.ipynb +0 -0
  224. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/notebooks/202106_workflow_execution_demo.ipynb +0 -0
  225. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/notebooks/202109_metadata_ingest.ipynb +0 -0
  226. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/notebooks/NMDC-GOLD-data-counts.ipynb +0 -0
  227. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/notebooks/README.md +0 -0
  228. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/notebooks/archive/generate-gold-sample-json.ipynb +0 -0
  229. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/notebooks/archive/translate-30_FICUS_Proposals_Metadata_4_Emiley_Chris_11082019.ipynb +0 -0
  230. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/notebooks/changesheets-example.ipynb +0 -0
  231. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/notebooks/changesheets-testing.ipynb +0 -0
  232. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/notebooks/data/changesheet-array-item-nested-attributes.tsv +0 -0
  233. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/notebooks/data/changesheet-insert.tsv +0 -0
  234. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/notebooks/data/changesheet-remove-item.tsv +0 -0
  235. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/notebooks/data/changesheet-remove-property.tsv +0 -0
  236. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/notebooks/data/changesheet-replace.tsv +0 -0
  237. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/notebooks/data/changesheet-update-pi-websites.tsv +0 -0
  238. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/notebooks/data/changesheet-with-separator1.tsv +0 -0
  239. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/notebooks/data/changesheet-without-separator1.tsv +0 -0
  240. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/notebooks/data/changesheet-without-separator2.tsv +0 -0
  241. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/notebooks/data/changesheet-without-separator3.tsv +0 -0
  242. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/notebooks/data/study-data1.json +0 -0
  243. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/notebooks/data/study-data2.json +0 -0
  244. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/notebooks/data/study-data3.json +0 -0
  245. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/notebooks/ensure_biosample_set_study_id.ipynb +0 -0
  246. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/notebooks/ghissue_252_253_linked_samples.ipynb +0 -0
  247. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/notebooks/ghissue_255.ipynb +0 -0
  248. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/notebooks/ghissue_272.ipynb +0 -0
  249. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/notebooks/gold-biosample-null-value-analysis.ipynb +0 -0
  250. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/notebooks/gold_ids_to_igsns.ipynb +0 -0
  251. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/notebooks/images/EMSL-data-translation.png +0 -0
  252. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/notebooks/images/GOLD-data-objects-translation.png +0 -0
  253. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/notebooks/images/GOLD-study-project-biosample-translation.png +0 -0
  254. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/notebooks/images/NMDC-jupyter-translation-workflow.png +0 -0
  255. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/notebooks/metaP_stegen.ipynb +0 -0
  256. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/notebooks/metadata_db_admin.ipynb +0 -0
  257. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/notebooks/mongo_etl_demo.ipynb +0 -0
  258. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/notebooks/output/FICUS-projects-merged.owl +0 -0
  259. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/notebooks/output/FICUS-projects-merged.owl.zip +0 -0
  260. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/notebooks/output/FICUS-projects-translation.owl +0 -0
  261. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/notebooks/output/catalog-v001.xml +0 -0
  262. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/notebooks/output/gold-classification-paths-translation.json +0 -0
  263. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/notebooks/output/gold-classification-paths-translation.json.zip +0 -0
  264. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/notebooks/output/gold-classification-paths-translation.owl +0 -0
  265. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/notebooks/output/gold-classification-paths-translation.owl.zip +0 -0
  266. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/notebooks/output/gold-dataset-translation.owl +0 -0
  267. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/notebooks/output/nmdc-json/biosample.json +0 -0
  268. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/notebooks/output/nmdc-json/data_objects.json +0 -0
  269. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/notebooks/output/nmdc-json/omics_processing.json +0 -0
  270. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/notebooks/output/nmdc-json/study.json +0 -0
  271. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/notebooks/output/nmdc-json_2020-02-01.zip +0 -0
  272. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/notebooks/output/nmdc-json_2020-02-05.zip +0 -0
  273. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/notebooks/output/nmdc-json_2020-02-06.zip +0 -0
  274. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/notebooks/output/nmdc-json_2020-02-12.zip +0 -0
  275. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/notebooks/output/nmdc-json_2020-02-18.zip +0 -0
  276. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/notebooks/output/nmdc-json_2020-02-19.zip +0 -0
  277. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/notebooks/output/schema-test-full.txt.zip +0 -0
  278. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/notebooks/output/schema-test.json +0 -0
  279. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/notebooks/output/schema-test.txt +0 -0
  280. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/notebooks/output/schema-test.txt.zip +0 -0
  281. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/notebooks/output/temp.txt +0 -0
  282. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/notebooks/output/test-five-biosamples/biosample.json +0 -0
  283. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/notebooks/output/test-five-biosamples/data_object.json +0 -0
  284. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/notebooks/output/test-five-biosamples/project.json +0 -0
  285. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/notebooks/output/test-five-biosamples/study.json +0 -0
  286. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/notebooks/output/test-pipeline/biosample.json +0 -0
  287. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/notebooks/output/test-pipeline/emsl_data_objects.json +0 -0
  288. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/notebooks/output/test-pipeline/emsl_omics_processing.json +0 -0
  289. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/notebooks/output/test-pipeline/faa_fna_fastq_data_objects.json +0 -0
  290. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/notebooks/output/test-pipeline/gold_omics_processing.json +0 -0
  291. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/notebooks/output/test-pipeline/gold_study.json +0 -0
  292. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/notebooks/output/test-pipeline/nmdc-02.json +0 -0
  293. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/notebooks/output/test-pipeline.zip +0 -0
  294. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/notebooks/test-changesheet-with-separator.ipynb +0 -0
  295. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/notebooks/test-changesheet-without-separator.ipynb +0 -0
  296. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/notebooks/test-output.ipynb +0 -0
  297. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/notebooks/test-pipeline-scratch.ipynb +0 -0
  298. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/notebooks/test-pipeline-temp.ipynb +0 -0
  299. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/notebooks/test-pipeline.ipynb +0 -0
  300. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/notebooks/test.json +0 -0
  301. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/notebooks/test.txt +0 -0
  302. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/notebooks/translate-EMSL-data.ipynb +0 -0
  303. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/notebooks/translate-GOLD-data-objects.ipynb +0 -0
  304. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/notebooks/translate-GOLD-study-project-biosample.ipynb +0 -0
  305. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/notebooks/translation-pipeline.ipynb +0 -0
  306. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/src/__init__.py +0 -0
  307. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/src/bin/__init__.py +0 -0
  308. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/src/bin/align_nmdc_datatypes.py +0 -0
  309. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/src/bin/execute_etl_pipeline.py +0 -0
  310. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/src/bin/fix_omics_processing_json.py +0 -0
  311. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/src/bin/lib/__init__.py +0 -0
  312. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/src/bin/lib/data_operations.py +0 -0
  313. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/src/bin/lib/extract_nmdc_data.py +0 -0
  314. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/src/bin/lib/load_nmdc_data.py +0 -0
  315. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/src/bin/lib/nmdc_data_source.yaml +0 -0
  316. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/src/bin/lib/nmdc_dataframes.py +0 -0
  317. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/src/bin/lib/nmdc_etl_class.py +0 -0
  318. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/src/bin/lib/transform_nmdc_data.py +0 -0
  319. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/src/bin/mandatory_mixs_terms.py +0 -0
  320. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/src/bin/mandatory_mixs_terms.py.org +0 -0
  321. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/src/bin/validate_json.py +0 -0
  322. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/src/data/2020-23-12-brodie-Gs0135149-soil-metadata.csv +0 -0
  323. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/src/data/2021-02-03-stegen_biosample_linking_update.csv +0 -0
  324. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/src/data/2021-02-04-brodie_biosample_linking_update.csv +0 -0
  325. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/src/data/2021-02-04-stegen_biosample_template.json +0 -0
  326. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/src/data/2021-07-02-study-changes.csv +0 -0
  327. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/src/data/30_FICUS_Proposals_Metadata_4_Emiley_Chris_11082019.xlsx +0 -0
  328. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/src/data/EMSL_FICUS_project_process_data_export.xlsx +0 -0
  329. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/src/data/EMSL_Hess_Stegen_Blanchard_DatasetToMetagenomeMapping.tsv +0 -0
  330. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/src/data/EMSL_biosample_matches.tsv +0 -0
  331. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/src/data/FICUS - JGI-EMSL Proposal - Gold Study - ID mapping and PI.xlsx +0 -0
  332. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/src/data/GOLD-soil-mixs-envo-mappings.tsv +0 -0
  333. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/src/data/GOLD-to-mixs-map.tsv +0 -0
  334. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/src/data/GOLD_Ecosystem_Classification_Paths_10152019.xlsx +0 -0
  335. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/src/data/GOLD_ecosystem_classification_paths.xlsx +0 -0
  336. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/src/data/JGI-EMSL-FICUS-proposals.fnl.tsv +0 -0
  337. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/src/data/NMDC-GOLD-Fields.xlsx +0 -0
  338. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/src/data/README.md +0 -0
  339. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/src/data/__init__.py +0 -0
  340. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/src/data/aim-2-workflows/Hess_emsl_analysis_data_objects.json +0 -0
  341. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/src/data/aim-2-workflows/Hess_metaproteomic_analysis_activities.json +0 -0
  342. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/src/data/aim-2-workflows/Stegen_emsl_analysis_data_objects.json +0 -0
  343. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/src/data/aim-2-workflows/Stegen_metaproteomic_analysis_activities.json +0 -0
  344. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/src/data/aim-2-workflows/metagenome_annotation_activities.json +0 -0
  345. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/src/data/aim-2-workflows/metagenome_annotation_data_objects.json +0 -0
  346. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/src/data/aim-2-workflows/metagenome_assembly_activities.json +0 -0
  347. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/src/data/aim-2-workflows/metagenome_assembly_data_objects.json +0 -0
  348. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/src/data/aim-2-workflows/readQC_activities.json +0 -0
  349. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/src/data/aim-2-workflows/readQC_data_objects.json +0 -0
  350. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/src/data/all_gold_fields.xlsx +0 -0
  351. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/src/data/ficus_project_faa.tsv +0 -0
  352. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/src/data/ficus_project_fastq.tsv +0 -0
  353. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/src/data/ficus_project_fna.tsv +0 -0
  354. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/src/data/mixs_v5.xlsx +0 -0
  355. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/src/data/nmdc-version2.zip +0 -0
  356. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/metadata-translation/src/data/nmdc-version5.zip +0 -0
  357. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/mkdocs.yml +0 -0
  358. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/mkdocs_overrides/partials/source.html +0 -0
  359. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/mongoKeyFile +0 -0
  360. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nersc-sshproxy.sh +0 -0
  361. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc-wfe.html +0 -0
  362. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/__init__.py +0 -0
  363. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/api/analytics.py +0 -0
  364. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/api/boot/__init__.py +0 -0
  365. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/api/boot/capabilities.py +0 -0
  366. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/api/boot/object_types.py +0 -0
  367. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/api/boot/triggers.py +0 -0
  368. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/api/boot/workflows.py +0 -0
  369. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/api/core/__init__.py +0 -0
  370. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/api/core/auth.py +0 -0
  371. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/api/core/idgen.py +0 -0
  372. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/api/core/metadata.py +0 -0
  373. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/api/core/util.py +0 -0
  374. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/api/db/__init__.py +0 -0
  375. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/api/db/s3.py +0 -0
  376. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/api/endpoints/__init__.py +0 -0
  377. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/api/endpoints/capabilities.py +0 -0
  378. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/api/endpoints/ids.py +0 -0
  379. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/api/endpoints/jobs.py +0 -0
  380. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/api/endpoints/metadata.py +0 -0
  381. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/api/endpoints/nmdcschema.py +0 -0
  382. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/api/endpoints/object_types.py +0 -0
  383. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/api/endpoints/objects.py +0 -0
  384. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/api/endpoints/operations.py +0 -0
  385. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/api/endpoints/runs.py +0 -0
  386. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/api/endpoints/search.py +0 -0
  387. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/api/endpoints/sites.py +0 -0
  388. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/api/endpoints/triggers.py +0 -0
  389. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/api/endpoints/users.py +0 -0
  390. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/api/endpoints/workflows.py +0 -0
  391. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/api/entrypoint.sh +0 -0
  392. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/api/main.py +0 -0
  393. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/api/models/__init__.py +0 -0
  394. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/api/models/capability.py +0 -0
  395. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/api/models/id.py +0 -0
  396. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/api/models/job.py +0 -0
  397. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/api/models/metadata.py +0 -0
  398. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/api/models/minter.py +0 -0
  399. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/api/models/nmdc_schema.py +0 -0
  400. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/api/models/object.py +0 -0
  401. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/api/models/object_type.py +0 -0
  402. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/api/models/operation.py +0 -0
  403. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/api/models/run.py +0 -0
  404. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/api/models/site.py +0 -0
  405. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/api/models/trigger.py +0 -0
  406. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/api/models/user.py +0 -0
  407. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/api/models/util.py +0 -0
  408. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/api/models/workflow.py +0 -0
  409. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/api/v1/router.py +0 -0
  410. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/client/__init__.py +0 -0
  411. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/config.py +0 -0
  412. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/containers.py +0 -0
  413. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/core/__init__.py +0 -0
  414. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/core/db/Database.py +0 -0
  415. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/core/db/__init__.py +0 -0
  416. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/core/exceptions/__init__.py +0 -0
  417. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/core/exceptions/base.py +0 -0
  418. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/core/exceptions/token.py +0 -0
  419. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/domain/__init__.py +0 -0
  420. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/domain/users/__init__.py +0 -0
  421. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/domain/users/queriesInterface.py +0 -0
  422. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/domain/users/userSchema.py +0 -0
  423. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/domain/users/userService.py +0 -0
  424. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/infrastructure/__init__.py +0 -0
  425. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/infrastructure/database/__init__.py +0 -0
  426. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/infrastructure/database/db.py +0 -0
  427. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/infrastructure/database/impl/mongo/__init__.py +0 -0
  428. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/infrastructure/database/impl/mongo/db.py +0 -0
  429. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/infrastructure/database/impl/mongo/models/__init__.py +0 -0
  430. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/infrastructure/database/impl/mongo/models/user.py +0 -0
  431. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/infrastructure/database/models/__init__.py +0 -0
  432. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/infrastructure/database/models/user.py +0 -0
  433. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/lib/__init__.py +0 -0
  434. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/lib/extract_nmdc_data.py +0 -0
  435. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/lib/load_nmdc_data.py +0 -0
  436. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/lib/nmdc_data_source.yaml +0 -0
  437. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/lib/nmdc_dataframes.py +0 -0
  438. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/lib/nmdc_etl_class.py +0 -0
  439. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/lib/transform_nmdc_data.py +0 -0
  440. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/main.py +0 -0
  441. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/minter/__init__.py +0 -0
  442. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/minter/adapters/__init__.py +0 -0
  443. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/minter/adapters/repository.py +0 -0
  444. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/minter/bootstrap.py +0 -0
  445. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/minter/config.py +0 -0
  446. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/minter/domain/__init__.py +0 -0
  447. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/minter/domain/model.py +0 -0
  448. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/minter/entrypoints/__init__.py +0 -0
  449. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/minter/entrypoints/fastapi_app.py +0 -0
  450. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/site/__init__.py +0 -0
  451. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/site/backup/__init__.py +0 -0
  452. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/site/backup/nmdcdb_mongodump.py +0 -0
  453. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/site/backup/nmdcdb_mongoexport.py +0 -0
  454. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/site/backup/nmdcdb_mongoimport.py +0 -0
  455. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/site/changesheets/__init__.py +0 -0
  456. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/site/changesheets/base.py +0 -0
  457. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/site/changesheets/data/OmicsProcessing-to-catted-Biosamples.tsv +0 -0
  458. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/site/changesheets/scripts/missing_neon_soils_ecosystem_data.py +0 -0
  459. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/site/changesheets/scripts/neon_soils_add_ncbi_ids.py +0 -0
  460. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/site/dagster.yaml +0 -0
  461. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/site/drsobjects/__init__.py +0 -0
  462. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/site/drsobjects/ingest.py +0 -0
  463. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/site/drsobjects/registration.py +0 -0
  464. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/site/entrypoint-daemon.sh +0 -0
  465. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/site/entrypoint-dagit-readonly.sh +0 -0
  466. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/site/entrypoint-dagit.sh +0 -0
  467. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/site/export/__init__.py +0 -0
  468. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/site/export/ncbi_xml.py +0 -0
  469. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/site/export/ncbi_xml_utils.py +0 -0
  470. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/site/export/study_metadata.py +0 -0
  471. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/site/graphs.py +0 -0
  472. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/site/normalization/__init__.py +0 -0
  473. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/site/normalization/gold.py +0 -0
  474. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/site/repair/__init__.py +0 -0
  475. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/site/resources.py +0 -0
  476. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/site/translation/__init__.py +0 -0
  477. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/site/translation/emsl.py +0 -0
  478. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/site/translation/gold.py +0 -0
  479. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/site/translation/gold_translator.py +0 -0
  480. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/site/translation/jgi.py +0 -0
  481. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/site/translation/neon_soil_translator.py +0 -0
  482. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/site/translation/neon_surface_water_translator.py +0 -0
  483. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/site/translation/neon_utils.py +0 -0
  484. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/site/translation/submission_portal_translator.py +0 -0
  485. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/site/translation/translator.py +0 -0
  486. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/site/translation/util.py +0 -0
  487. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/site/util.py +0 -0
  488. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/site/validation/__init__.py +0 -0
  489. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/site/validation/emsl.py +0 -0
  490. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/site/validation/gold.py +0 -0
  491. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/site/validation/jgi.py +0 -0
  492. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/site/validation/util.py +0 -0
  493. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/site/workspace.yaml +0 -0
  494. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/static/ORCIDiD_icon128x128.png +0 -0
  495. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/static/favicon.ico +0 -0
  496. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/templates/search.html +0 -0
  497. /nmdc_runtime-2.4.0/tests/test_api/__init__.py → /nmdc_runtime-2.5.0/nmdc_runtime/test.Dockerfile +0 -0
  498. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime/util.py +0 -0
  499. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime.egg-info/dependency_links.txt +0 -0
  500. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime.egg-info/entry_points.txt +0 -0
  501. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/nmdc_runtime.egg-info/top_level.txt +0 -0
  502. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/requirements/dev.in +0 -0
  503. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/setup.cfg +0 -0
  504. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/setup.py +0 -0
  505. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/tasks.py +0 -0
  506. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/tests/conftest.py +0 -0
  507. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/tests/e2e/test_minter_api.py +0 -0
  508. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/tests/files/nmdc_bsm-11-0pyv7738.json +0 -0
  509. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/tests/files/nmdc_bsm-11-5nhz3402.json +0 -0
  510. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/tests/files/nmdc_bsm-12-7mysck21.json +0 -0
  511. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/tests/files/nmdc_dobj-11-000n1286.json +0 -0
  512. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/tests/files/nmdc_sty-11-pzmd0x14.json +0 -0
  513. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/tests/files/planned_processes.json +0 -0
  514. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/tests/files/study_no_credit_associations.json +0 -0
  515. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/tests/files/test_changesheet_decimal_value.tsv +0 -0
  516. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/tests/files/test_changesheet_insert_study_doi.tsv +0 -0
  517. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/tests/files/test_changesheet_update_bytes_ranged_slot.tsv +0 -0
  518. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/tests/files/test_changesheet_update_one_ph.tsv +0 -0
  519. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/tests/integration/test_minter_repository.py +0 -0
  520. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/tests/nmdcdb.test.archive.gz +0 -0
  521. {nmdc_runtime-2.4.0/tests/test_data → nmdc_runtime-2.5.0/tests/test_api}/__init__.py +0 -0
  522. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/tests/test_api/util.py +0 -0
  523. {nmdc_runtime-2.4.0/tests/test_graphs → nmdc_runtime-2.5.0/tests/test_data}/__init__.py +0 -0
  524. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/tests/test_data/conftest.py +0 -0
  525. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/tests/test_data/test_database_updater.py +0 -0
  526. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/tests/test_data/test_gold_translator.py +0 -0
  527. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/tests/test_data/test_gold_translator_data.yaml +0 -0
  528. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/tests/test_data/test_integrity.py +0 -0
  529. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/tests/test_data/test_ncbi_xml.py +0 -0
  530. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/tests/test_data/test_neon_soil_data_translator.py +0 -0
  531. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/tests/test_data/test_submission_portal_translator.py +0 -0
  532. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/tests/test_data/test_submission_portal_translator_data.yaml +0 -0
  533. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/tests/test_data/test_translator.py +0 -0
  534. {nmdc_runtime-2.4.0/tests/test_normalization → nmdc_runtime-2.5.0/tests/test_graphs}/__init__.py +0 -0
  535. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/tests/test_graphs/ensure_jobs.py +0 -0
  536. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/tests/test_graphs/test_hello.py +0 -0
  537. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/tests/test_graphs/test_submission_portal_graphs.py +0 -0
  538. {nmdc_runtime-2.4.0/tests/test_ops → nmdc_runtime-2.5.0/tests/test_normalization}/__init__.py +0 -0
  539. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/tests/test_normalization/test_gold.py +0 -0
  540. {nmdc_runtime-2.4.0/tests/test_the_util → nmdc_runtime-2.5.0/tests/test_ops}/__init__.py +0 -0
  541. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/tests/test_ops/test_data_api_ops.py +0 -0
  542. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/tests/test_ops/test_get_csv_rows_from_url.py +0 -0
  543. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/tests/test_ops/test_gold_api_ops.py +0 -0
  544. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/tests/test_ops/test_materialize_alldocs.py +0 -0
  545. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/tests/test_ops/test_ops.py +0 -0
  546. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/tests/test_the_util/README.md +0 -0
  547. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/tests/test_the_util/test_the_util.py +0 -0
  548. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/tests/unit/core_util.py +0 -0
  549. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/tests/unit/test_minter_model.py +0 -0
  550. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/tmp.json +0 -0
  551. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/util/get_latest_nmdc_prod_dump_dir.sh +0 -0
  552. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/util/mongodump-nmdc.sh +0 -0
  553. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/util/mongorestore-nmdc.sh +0 -0
  554. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/wait-for-it.sh +0 -0
  555. {nmdc_runtime-2.4.0 → nmdc_runtime-2.5.0}/workspace.toml +0 -0
@@ -0,0 +1,44 @@
1
+ #! /bin/sh
2
+
3
+ ###############################################################################
4
+ # Overview
5
+ # --------
6
+ # This shell script uses `mongosh` to: (a) check whether the specified MongoDB
7
+ # instance is a member of a replica set and, if is isn't, (b) creates a replica
8
+ # set of which that MongoDB instance is the sole member.
9
+ #
10
+ # This shell script was designed to be run within a Docker container based upon
11
+ # the `mongo:8.0.4` container image (i.e., https://hub.docker.com/_/mongo).
12
+ #
13
+ # Positional parameters
14
+ # ---------------------
15
+ # 1. MongoDB hostname (e.g., "mongo")
16
+ # 2. MongoDB port (e.g., "27017")
17
+ # 3. MongoDB username (e.g., "admin")
18
+ # 4. MongoDB password (e.g., "root")
19
+ #
20
+ # References
21
+ # ----------
22
+ # 1. https://www.mongodb.com/docs/manual/reference/method/rs.status/
23
+ # 2. https://www.mongodb.com/docs/mongodb-shell/reference/options/
24
+ # 3. https://www.warp.dev/terminus/docker-compose-health-check
25
+ ###############################################################################
26
+
27
+ echo 'Setting up replica set.'
28
+
29
+ echo '
30
+ try {
31
+ rs.status();
32
+ } catch (e) {
33
+ rs.initiate({ _id: "rs0", members: [{ _id: 0, host: "localhost" }] });
34
+ }
35
+ ' | mongosh \
36
+ --host "${1}" \
37
+ --port "${2}" \
38
+ --username "${3}" \
39
+ --password "${4}"
40
+
41
+ echo 'Finished setting up replica set.'
42
+
43
+ # Exit with a status code of 0.
44
+ exit 0
@@ -0,0 +1,29 @@
1
+ .env*
2
+ !.env.example
3
+ !.env.test
4
+ .idea
5
+ deployment
6
+ .eggs
7
+ .pytest_cache
8
+ build
9
+ dist
10
+
11
+ # Omit the Docker configuration/specification files from the image build context,
12
+ # so we can edit them without invalidating existing image layers.
13
+ # Reference: https://docs.docker.com/build/concepts/context/#dockerignore-files
14
+ /.dockerignore
15
+ /.docker
16
+ /.gitpod.Dockerfile
17
+ /docker-compose.yml
18
+ /docker-compose.test.yml
19
+ /nmdc_runtime/Dockerfile
20
+
21
+ # Omit any local Python virtual environment from the image build context. The
22
+ # image build process includes its own package download/installation step.
23
+ /venv
24
+ /.venv
25
+
26
+ # Omit residual files left behind by some tests.
27
+ /neon.db
28
+ /neon_api_cache.sqlite
29
+ /neon_cache.sqlite
@@ -51,4 +51,4 @@ INFO_BANNER_INNERHTML='Announcement: Something important is about to happen. If
51
51
 
52
52
  # To get the latest mongo dump directory, run e.g.
53
53
  # ssh -i ~/.ssh/nersc -q ${NERSC_USERNAME}@dtn01.nersc.gov 'bash -s ' < util/get_latest_nmdc_prod_dump_dir.sh 2>/dev/null
54
- MONGO_REMOTE_DUMP_DIR=/global/cfs/projectdirs/m3408/nmdc-mongodumps/dump_nmdc-prod_2024-11-26_20-12-40
54
+ MONGO_REMOTE_DUMP_DIR=/global/cfs/projectdirs/m3408/nmdc-mongodumps/dump_nmdc-prod_2025-02-12_20-12-02
@@ -20,4 +20,4 @@ API_SITE_ID=nmdc-runtime
20
20
  API_SITE_CLIENT_ID=chws-tk74-51
21
21
  API_SITE_CLIENT_SECRET=070d56033559e3096d4f82d30aabdd51c3b8a57ac20d24f743a27444d5edc3db
22
22
 
23
- MINTING_SERVICE_ID=nmdc:minter_service_11
23
+ MINTING_SERVICE_ID=nmdc:minter_service_11
@@ -9,7 +9,7 @@ on:
9
9
  paths:
10
10
  - '.github/workflows/build-and-release-to-spin.yml'
11
11
  - 'Makefile'
12
- - '**.Dockerfile'
12
+ - '**/Dockerfile'
13
13
  - '**.py'
14
14
  - 'requirements/main.txt'
15
15
 
@@ -78,7 +78,10 @@ jobs:
78
78
  with:
79
79
  context: .
80
80
  push: ${{ env.IS_ORIGINAL_REPO }}
81
- file: nmdc_runtime/${{ matrix.image }}.Dockerfile
81
+ file: nmdc_runtime/Dockerfile
82
+ # Note: Since our `Dockerfile` describes multiple stages, we use the `target` option to specify a stage.
83
+ # Reference: https://github.com/marketplace/actions/build-and-push-docker-images#inputs
84
+ target: ${{ matrix.image }}
82
85
  tags: ${{ steps.meta.outputs.tags }}
83
86
  labels: ${{ steps.meta.outputs.labels }}
84
87
 
@@ -0,0 +1,91 @@
1
+ # This GitHub Actions workflow spins up the "test" Docker Compose stack and runs automated tests within it.
2
+ # Reference: https://docs.github.com/en/actions/writing-workflows/workflow-syntax-for-github-actions
3
+ name: Python application
4
+
5
+ # Note: The following events will trigger this workflow:
6
+ # 1. Someone pushes a commit to `main` that includes changes to any of the listed files.
7
+ # 2. Someone opens a pull request that includes changes to any of the listed files.
8
+ # 3. Someone clicks the "Run workflow" button on the "Actions" tab on GitHub.
9
+ #
10
+ # References:
11
+ # - https://docs.github.com/en/actions/writing-workflows/choosing-when-your-workflow-runs/triggering-a-workflow#example-including-paths
12
+ # - https://docs.github.com/en/actions/writing-workflows/workflow-syntax-for-github-actions#filter-pattern-cheat-sheet
13
+ #
14
+ on:
15
+ push:
16
+ branches: [ main ]
17
+ paths:
18
+ - '.github/workflows/python-app.yml'
19
+ - 'Makefile'
20
+ - '**/Dockerfile'
21
+ - '**.py'
22
+ - 'requirements/main.txt'
23
+ # Every file in the `data` directory or in any of its subdirectories:
24
+ - 'metadata-translation/notebooks/data/**'
25
+ pull_request:
26
+ paths:
27
+ - '.github/workflows/python-app.yml'
28
+ - 'Makefile'
29
+ - '**/Dockerfile'
30
+ - '**.py'
31
+ - 'requirements/main.txt'
32
+ - 'metadata-translation/notebooks/data/**'
33
+ # Allow developers to trigger this workflow manually via the "Actions" page on GitHub.
34
+ # Reference: https://docs.github.com/en/actions/managing-workflow-runs-and-deployments/managing-workflow-runs/manually-running-a-workflow
35
+ workflow_dispatch: { }
36
+
37
+ jobs:
38
+ build:
39
+ runs-on: ubuntu-latest
40
+
41
+ steps:
42
+ - uses: actions/checkout@v4 # update version to maintain consistency across workflows
43
+ # Prepare the MongoDB keyfile to be mounted by the `mongo` container.
44
+ #
45
+ # Note: This is to prevent MongoDB from reporting the error:
46
+ # > "permissions on /path/to/keyfile are too open"
47
+ #
48
+ # Note: This involves making the file be readable _only_ by the OS user that MongoDB runs as.
49
+ #
50
+ # In containers using the `mongo` image, that user is named `mongodb` and has a
51
+ # UID of `999`. That user belongs to a group named `mongodb`, whose GID is `999`.
52
+ # You can verify this by looking at the Dockerfile layers on Docker Hub.
53
+ # Reference: https://hub.docker.com/layers/library/mongo/8.0.5/images/sha256-90bf5066fed8a3cd59345d963922bc5cb557d4b4b2a0e38dfd9ee299c405741b
54
+ #
55
+ # The GHA Runner will allow me to `chmod 600` the file, but not `chown 999:999` it.
56
+ # Since the GHA Runner will not allow me to `chown` the file, I use a Docker container
57
+ # to (effectively) accomplish that. Since—after I use the Docker container to change
58
+ # the file's owner—the GHA Runner will not allow me to then `chmod` the file, I opt to
59
+ # accomplish that within the Docker container as well.
60
+ #
61
+ # The reason—within the Docker container—I do not `chmod` or `chown` the original file
62
+ # directly, is that I am under the impression that ownership/permission changes made
63
+ # within a container to mounted files that already exist on the host will not be seen
64
+ # by the host. I have not found official documentation supporting this yet.
65
+ # TODO: Include a reference about changing mounted file's permission within container.
66
+ #
67
+ - name: Restrict access to MongoDB keyfile
68
+ run: |
69
+ mkdir _tmp
70
+ docker run --rm \
71
+ -v ./mongoKeyFile:/mongoKeyFile \
72
+ -v ./_tmp:/out \
73
+ alpine \
74
+ sh -c 'cp /mongoKeyFile /out/mongoKeyFile && chmod 600 /out/mongoKeyFile && chown 999:999 /out/mongoKeyFile'
75
+ mv _tmp/mongoKeyFile ./mongoKeyFile
76
+ rmdir _tmp
77
+ - name: Set up Python 3.10
78
+ uses: actions/setup-python@v4
79
+ with:
80
+ python-version: '3.10'
81
+ # deprecated: Consider merging python.app.yml and lint.yml
82
+ # - name: Lint with flake8
83
+ # run: |
84
+ # pip install flake8
85
+ # make lint
86
+ - name: Build and run containers upon which test runner depends
87
+ run: make up-test
88
+ - name: Build container image for test runner
89
+ run: make test-build
90
+ - name: Run tests
91
+ run: make test-run
@@ -15,6 +15,7 @@ downloads/
15
15
  eggs/
16
16
  .eggs/
17
17
  lib/
18
+ !/tests/lib/
18
19
  lib64/
19
20
  parts/
20
21
  sdist/
@@ -38,25 +38,39 @@ update: update-deps init
38
38
  up-dev:
39
39
  docker compose up --build --force-recreate --detach --remove-orphans
40
40
 
41
+ # Restores the MongoDB dump residing in `./tests/nmdcdb` on the Docker host, into the MongoDB server in the dev stack.
41
42
  dev-reset-db:
42
43
  docker compose \
43
- exec mongo /bin/bash -c "./app_tests/mongorestore-nmdc-testdb.sh"
44
+ exec mongo /bin/bash -c "/mongorestore-nmdc-testdb.sh"
44
45
 
46
+ # Uses Docker Compose to build and spin up the stack upon which the `test` container (i.e. the test runner) depends.
47
+ #
48
+ # Note: This does not build or spin up the `test` container, itself, since the `test` container's Docker Compose service
49
+ # has the "donotstart" profile specified for it in `docker-compose.test.yml`.
50
+ #
45
51
  up-test:
46
52
  docker compose --file docker-compose.test.yml \
47
53
  up --build --force-recreate --detach --remove-orphans
48
54
 
55
+ # Uses Docker Compose to build the container image for the `test` container (i.e. the test runner).
49
56
  test-build:
50
57
  docker compose --file docker-compose.test.yml build test
51
58
 
52
- test-dbinit:
59
+ # Restores the MongoDB dump residing in `./tests/nmdcdb` on the Docker host, into the MongoDB server in the test stack.
60
+ test-reset-db:
53
61
  docker compose --file docker-compose.test.yml \
54
62
  exec mongo /bin/bash -c "/mongorestore-nmdc-testdb.sh"
55
63
 
56
- # Tip: If you append a file path to this "recipe", pytest will run only the tests defined in that file.
57
- # For example, append `tests/test_api/test_endpoints.py` to have pytest only run the endpoint tests.
64
+ # Uses Docker Compose to spin up the `test` container (i.e. the test runner), effectively running the tests.
65
+ #
66
+ # Tip: If you append `ARGS=` and a file path to the `make` command, pytest will run only the tests defined in that file.
67
+ # For example, to run only the tests defined in `tests/test_api/test_endpoints.py`:
68
+ # ```
69
+ # $ make test-run ARGS="tests/test_api/test_endpoints.py"
70
+ # ```
71
+ #
58
72
  test-run:
59
- docker compose --file docker-compose.test.yml run test
73
+ docker compose --file docker-compose.test.yml run test $(ARGS)
60
74
 
61
75
  test: test-build test-run
62
76
 
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.2
1
+ Metadata-Version: 2.4
2
2
  Name: nmdc_runtime
3
- Version: 2.4.0
3
+ Version: 2.5.0
4
4
  Summary: A runtime system for NMDC data management and orchestration
5
5
  Home-page: https://github.com/microbiomedata/nmdc-runtime
6
6
  Author: Donny Winston
@@ -17,6 +17,7 @@ Dynamic: classifier
17
17
  Dynamic: description
18
18
  Dynamic: description-content-type
19
19
  Dynamic: home-page
20
+ Dynamic: license-file
20
21
  Dynamic: requires-python
21
22
  Dynamic: summary
22
23
 
@@ -37,8 +38,7 @@ houses the LinkML schema specification, as well as generated artifacts (e.g. JSO
37
38
  * [nmdc-server](https://github.com/microbiomedata/nmdc-server)
38
39
  houses code specific to the data portal -- its database, back-end API, and front-end application.
39
40
 
40
- * [workflow_documentation](https://docs.microbiomedata.org/workflows/)
41
- references workflow code spread across several repositories, that take source data and produce computed data.
41
+ * Workflows — documented in the [workflows](https://docs.microbiomedata.org/workflows/) section of the NMDC documentation website — take source data and produce computed data.
42
42
 
43
43
  * This repo (nmdc-runtime)
44
44
  * houses code that takes source data and computed data, and transforms it
@@ -156,6 +156,9 @@ Tests can be found in `tests` and are run with the following commands:
156
156
  ```bash
157
157
  make up-test
158
158
  make test
159
+
160
+ # Run a Specific test file eg. tests/test_api/test_endpoints.py
161
+ make test ARGS="tests/test_api/test_endpoints.py"
159
162
  ```
160
163
 
161
164
  As you create Dagster solids and pipelines, add tests in `tests/` to check that your code behaves as
@@ -164,6 +167,16 @@ desired and does not break over time.
164
167
  [For hints on how to write tests for solids and pipelines in Dagster, see their documentation
165
168
  tutorial on Testing](https://docs.dagster.io/tutorial/testable).
166
169
 
170
+ ### RAM usage
171
+
172
+ The `dagster-daemon` and `dagster-dagit` containers can consume a lot of RAM. If tests are failing and the console of
173
+ the `test` container shows "Error 137," here is something you can try as a workaround: In Docker Desktop, go to
174
+ "Settings > Resources > Advanced," and increase the memory limit. One of our team members has
175
+ found **12 GB** to be sufficient for running the tests.
176
+
177
+ > Dedicating 12 GB of RAM to Docker may be prohibitive for some prospective developers.
178
+ > There is an open [issue](https://github.com/microbiomedata/nmdc-runtime/issues/928) about the memory requirement.
179
+
167
180
  ## Publish to PyPI
168
181
 
169
182
  This repository contains a GitHub Actions workflow that publishes a Python package to [PyPI](https://pypi.org/project/nmdc-runtime/).
@@ -15,8 +15,7 @@ houses the LinkML schema specification, as well as generated artifacts (e.g. JSO
15
15
  * [nmdc-server](https://github.com/microbiomedata/nmdc-server)
16
16
  houses code specific to the data portal -- its database, back-end API, and front-end application.
17
17
 
18
- * [workflow_documentation](https://docs.microbiomedata.org/workflows/)
19
- references workflow code spread across several repositories, that take source data and produce computed data.
18
+ * Workflows — documented in the [workflows](https://docs.microbiomedata.org/workflows/) section of the NMDC documentation website — take source data and produce computed data.
20
19
 
21
20
  * This repo (nmdc-runtime)
22
21
  * houses code that takes source data and computed data, and transforms it
@@ -134,6 +133,9 @@ Tests can be found in `tests` and are run with the following commands:
134
133
  ```bash
135
134
  make up-test
136
135
  make test
136
+
137
+ # Run a Specific test file eg. tests/test_api/test_endpoints.py
138
+ make test ARGS="tests/test_api/test_endpoints.py"
137
139
  ```
138
140
 
139
141
  As you create Dagster solids and pipelines, add tests in `tests/` to check that your code behaves as
@@ -142,6 +144,16 @@ desired and does not break over time.
142
144
  [For hints on how to write tests for solids and pipelines in Dagster, see their documentation
143
145
  tutorial on Testing](https://docs.dagster.io/tutorial/testable).
144
146
 
147
+ ### RAM usage
148
+
149
+ The `dagster-daemon` and `dagster-dagit` containers can consume a lot of RAM. If tests are failing and the console of
150
+ the `test` container shows "Error 137," here is something you can try as a workaround: In Docker Desktop, go to
151
+ "Settings > Resources > Advanced," and increase the memory limit. One of our team members has
152
+ found **12 GB** to be sufficient for running the tests.
153
+
154
+ > Dedicating 12 GB of RAM to Docker may be prohibitive for some prospective developers.
155
+ > There is an open [issue](https://github.com/microbiomedata/nmdc-runtime/issues/928) about the memory requirement.
156
+
145
157
  ## Publish to PyPI
146
158
 
147
159
  This repository contains a GitHub Actions workflow that publishes a Python package to [PyPI](https://pypi.org/project/nmdc-runtime/).
@@ -0,0 +1,144 @@
1
+ services:
2
+
3
+ # Postgres server used by Dagster.
4
+ #
5
+ # > This service runs the postgres DB used by dagster for run storage, schedule storage,
6
+ # > and event log storage.
7
+ # > Tests use `postgres:11` image.
8
+ # > https://github.com/dagster-io/dagster/blob/0.11.9/python_modules/libraries/dagster-postgres/dagster_postgres_tests/docker-compose.yml
9
+ #
10
+ dagster-postgresql:
11
+ image: postgres:11
12
+ environment:
13
+ POSTGRES_USER: "postgres_user"
14
+ POSTGRES_PASSWORD: "postgres_password"
15
+ POSTGRES_DB: "postgres_db"
16
+ volumes:
17
+ - postgres_data:/var/lib/postgresql/data
18
+
19
+ # Web server that hosts the Dagster web UI.
20
+ #
21
+ # > This service runs dagit.
22
+ # > Since our instance uses the QueuedRunCoordinator, any runs submitted from dagit will be put on
23
+ # > a queue and later dequeued and launched by dagster-daemon.
24
+ #
25
+ dagster-dagit:
26
+ build:
27
+ context: .
28
+ dockerfile: nmdc_runtime/Dockerfile
29
+ target: dagster
30
+ entrypoint: ["tini", "--", "../lib/nmdc_runtime/site/entrypoint-dagit.sh"]
31
+ expose:
32
+ - "3000"
33
+ ports:
34
+ - "3000:3000"
35
+ environment:
36
+ DAGSTER_POSTGRES_USER: "postgres_user"
37
+ DAGSTER_POSTGRES_PASSWORD: "postgres_password"
38
+ DAGSTER_POSTGRES_DB: "postgres_db"
39
+ depends_on:
40
+ - dagster-postgresql
41
+ restart: on-failure
42
+ volumes:
43
+ - ./:/opt/dagster/lib
44
+ env_file: .env.test
45
+
46
+ # Dagster daemon.
47
+ #
48
+ # > This service runs the dagster-daemon process, which is responsible for taking runs
49
+ # > off of the queue and launching them, as well as creating runs from schedules or sensors.
50
+ #
51
+ dagster-daemon:
52
+ build:
53
+ context: .
54
+ dockerfile: nmdc_runtime/Dockerfile
55
+ target: dagster
56
+ entrypoint: ["tini", "--", "../lib/nmdc_runtime/site/entrypoint-daemon.sh"]
57
+ restart: on-failure
58
+ environment:
59
+ DAGSTER_POSTGRES_USER: "postgres_user"
60
+ DAGSTER_POSTGRES_PASSWORD: "postgres_password"
61
+ DAGSTER_POSTGRES_DB: "postgres_db"
62
+ depends_on:
63
+ dagster-postgresql: { condition: service_started }
64
+ # Wait until the MongoDB replica set has been set up by the "init container"
65
+ # before starting this Dagster daemon container.
66
+ mongo-init: { condition: service_completed_successfully }
67
+ volumes:
68
+ - ./:/opt/dagster/lib
69
+ env_file: .env.test
70
+
71
+ # Uvicorn server hosting the FastAPI application.
72
+ fastapi:
73
+ build:
74
+ context: .
75
+ dockerfile: nmdc_runtime/Dockerfile
76
+ target: fastapi
77
+ ports:
78
+ - "8000:8000"
79
+ volumes:
80
+ - .:/code
81
+ # Wait until the MongoDB replica set has been set up by the "init container"
82
+ # before starting this FastAPI container.
83
+ depends_on:
84
+ mongo-init: { condition: service_completed_successfully }
85
+ env_file: .env.test
86
+
87
+ # Short-lived MongoDB server used to initialize the one used by the FastAPI application.
88
+ mongo-init:
89
+ image: mongo:8.0.4
90
+ volumes:
91
+ - ./wait-for-it.sh:/wait-for-it.sh:ro
92
+ - .docker/mongo_init/initialize_replica_set.sh:/initialize_replica_set.sh:ro
93
+ depends_on:
94
+ mongo: { condition: service_started }
95
+ entrypoint: /bin/bash /wait-for-it.sh --host=mongo --port=27017 --timeout=20 -- /bin/sh /initialize_replica_set.sh mongo 27017 admin root
96
+
97
+ # MongoDB server used by the FastAPI application.
98
+ mongo:
99
+ image: mongo:8.0.4
100
+ ports:
101
+ - "27018:27017"
102
+ restart: unless-stopped
103
+ environment:
104
+ MONGO_INITDB_ROOT_USERNAME: admin
105
+ MONGO_INITDB_ROOT_PASSWORD: root
106
+ # Configure MongoDB to run in replica set mode, so we can use MongoDB transactions.
107
+ #
108
+ # Note: Including a KeyFile is necessary when doing the combination of (a) running MongoDB in
109
+ # replica set mode and (b) running MongoDB with authentication enabled.
110
+ #
111
+ command: ["--replSet", "rs0", "--bind_ip_all", "--keyFile", "/keyFile"]
112
+ volumes:
113
+ - mongo_data:/data/db
114
+ - ./mongoKeyFile:/keyFile:ro
115
+ - ./tests/nmdcdb:/nmdcdb_dump:ro
116
+ - ./tests/mongorestore-nmdc-testdb.sh:/mongorestore-nmdc-testdb.sh:ro
117
+
118
+ # Test runner.
119
+ test:
120
+ # Prevent Docker Compose from starting this service automatically.
121
+ # Reference: https://stackoverflow.com/a/65957695
122
+ profiles:
123
+ - donotstart
124
+ build:
125
+ context: .
126
+ dockerfile: nmdc_runtime/Dockerfile
127
+ target: test
128
+ env_file: .env.test
129
+ depends_on:
130
+ mongo-init: { condition: service_completed_successfully }
131
+ mongo: { condition: service_started }
132
+ fastapi: { condition: service_started }
133
+ dagster-daemon: { condition: service_started }
134
+ dagster-dagit: { condition: service_started }
135
+ volumes:
136
+ - .:/code
137
+
138
+ volumes:
139
+ postgres_data:
140
+ driver: local
141
+ mongo_data:
142
+ driver: local
143
+
144
+ name: nmdc-runtime-test
@@ -0,0 +1,130 @@
1
+ services:
2
+
3
+ # Postgres server used by Dagster.
4
+ #
5
+ # > This service runs the postgres DB used by dagster for run storage, schedule storage,
6
+ # > and event log storage.
7
+ # > Tests use `postgres:11` image.
8
+ # > https://github.com/dagster-io/dagster/blob/0.11.9/python_modules/libraries/dagster-postgres/dagster_postgres_tests/docker-compose.yml
9
+ #
10
+ dagster-postgresql:
11
+ image: postgres:11
12
+ environment:
13
+ POSTGRES_USER: "postgres_user"
14
+ POSTGRES_PASSWORD: "postgres_password"
15
+ POSTGRES_DB: "postgres_db"
16
+ volumes:
17
+ - postgres_data:/var/lib/postgresql/data
18
+
19
+ # Web server that hosts the Dagster web UI.
20
+ #
21
+ # > This service runs dagit.
22
+ # > Since our instance uses the QueuedRunCoordinator, any runs submitted from dagit will be put on
23
+ # > a queue and later dequeued and launched by dagster-daemon.
24
+ #
25
+ dagster-dagit:
26
+ build:
27
+ context: .
28
+ dockerfile: nmdc_runtime/Dockerfile
29
+ target: dagster
30
+ entrypoint: ["tini", "--", "../lib/nmdc_runtime/site/entrypoint-dagit.sh"]
31
+ expose:
32
+ - "3000"
33
+ ports:
34
+ - "3000:3000"
35
+ environment:
36
+ DAGSTER_POSTGRES_USER: "postgres_user"
37
+ DAGSTER_POSTGRES_PASSWORD: "postgres_password"
38
+ DAGSTER_POSTGRES_DB: "postgres_db"
39
+ depends_on:
40
+ - dagster-postgresql
41
+ restart: on-failure
42
+ volumes:
43
+ - ./:/opt/dagster/lib
44
+ env_file: .env
45
+
46
+ # Dagster daemon.
47
+ #
48
+ # > This service runs the dagster-daemon process, which is responsible for taking runs
49
+ # > off of the queue and launching them, as well as creating runs from schedules or sensors.
50
+ #
51
+ dagster-daemon:
52
+ build:
53
+ context: .
54
+ dockerfile: nmdc_runtime/Dockerfile
55
+ target: dagster
56
+ entrypoint: ["tini", "--", "../lib/nmdc_runtime/site/entrypoint-daemon.sh"]
57
+ restart: on-failure
58
+ environment:
59
+ DAGSTER_POSTGRES_USER: "postgres_user"
60
+ DAGSTER_POSTGRES_PASSWORD: "postgres_password"
61
+ DAGSTER_POSTGRES_DB: "postgres_db"
62
+ depends_on:
63
+ dagster-postgresql: { condition: service_started }
64
+ # Wait until the MongoDB replica set has been set up by the "init container"
65
+ # before starting this Dagster daemon container.
66
+ mongo-init: { condition: service_completed_successfully }
67
+ volumes:
68
+ - ./:/opt/dagster/lib
69
+ env_file: .env
70
+
71
+ # Uvicorn server hosting the FastAPI application.
72
+ fastapi:
73
+ build:
74
+ context: .
75
+ dockerfile: nmdc_runtime/Dockerfile
76
+ target: fastapi
77
+ ports:
78
+ - "8000:8000"
79
+ volumes:
80
+ - .:/code
81
+ # Wait until the MongoDB replica set has been set up by the "init container"
82
+ # before starting this FastAPI container.
83
+ depends_on:
84
+ mongo-init: { condition: service_completed_successfully }
85
+ command: ["uvicorn", "nmdc_runtime.api.main:app", "--reload", "--host", "0.0.0.0", "--port", "8000"]
86
+ env_file: .env
87
+
88
+ # Short-lived MongoDB server used to initialize the one used by the FastAPI application.
89
+ mongo-init:
90
+ image: mongo:8.0.4
91
+ volumes:
92
+ - ./wait-for-it.sh:/wait-for-it.sh:ro
93
+ - .docker/mongo_init/initialize_replica_set.sh:/initialize_replica_set.sh:ro
94
+ depends_on:
95
+ mongo: { condition: service_started }
96
+ entrypoint: /bin/bash /wait-for-it.sh --host=mongo --port=27017 --timeout=20 -- /bin/sh /initialize_replica_set.sh mongo 27017 admin root
97
+
98
+ # MongoDB server used by the FastAPI application.
99
+ # TODO: Why does this service (which is in the dev—not test—stack), mount descendants of `./tests` — is that intentional?
100
+ mongo:
101
+ image: mongo:8.0.4
102
+ ports:
103
+ - "27018:27017"
104
+ restart: unless-stopped
105
+ environment:
106
+ MONGO_INITDB_ROOT_USERNAME: admin
107
+ MONGO_INITDB_ROOT_PASSWORD: root
108
+ # Configure MongoDB to run in replica set mode, so we can use MongoDB transactions.
109
+ #
110
+ # Note: Including a KeyFile is necessary when doing the combination of (a) running MongoDB in
111
+ # replica set mode and (b) running MongoDB with authentication enabled.
112
+ #
113
+ command: ["--replSet", "rs0", "--bind_ip_all", "--keyFile", "/keyFile"]
114
+ volumes:
115
+ - mongo_data:/data/db
116
+ - ./mongoKeyFile:/keyFile:ro
117
+ - ./tests/nmdcdb:/nmdcdb_dump:ro
118
+ - ./tests/mongorestore-nmdc-testdb.sh:/mongorestore-nmdc-testdb.sh:ro
119
+
120
+ volumes:
121
+ postgres_data:
122
+ driver: local
123
+ mongo_data:
124
+ driver: local
125
+
126
+ secrets:
127
+ mongoKeyFile:
128
+ file: ./mongoKeyFile
129
+
130
+ name: nmdc-runtime-dev
@@ -52,7 +52,7 @@ do so at the code level. A suitable template for this is the [implementation of
52
52
  /users](https://github.com/microbiomedata/nmdc-runtime/blob/1d0feb68fb5ed82ed82c06f9724ecc86f73d83ae/nmdc_runtime/api/endpoints/users.py#L78)
53
53
  endpoint. The endpoint code receives the requesting user model via the `get_current_active_user`
54
54
  dependency, and it uses the `check_can_create_user` function to verify that the requester can
55
- administer the "nmdc-runtime-useradmin" site. If not, a `403 Forbidden` expection is raised.
55
+ administer the "nmdc-runtime-useradmin" site. If not, a `403 Forbidden` exception is raised.
56
56
  Otherwise, the endpoint logic continues for the authorized user.
57
57
 
58
58
  To add a site ID to an existing user's `site_admin` list, this must currently be done manually at
@@ -36,7 +36,7 @@ In order to make sure the schema, database, and NMDC Runtime API are in sync we
36
36
 
37
37
  Here is a summary of the process:
38
38
 
39
- 1. [NMDC Schema](https://github.com/microbiomedata/nmdc-schema) repo releases new version. All releases must include a migration script (even if it is null / empty) to run against MongoDB. See [ADR 007](https://github.com/microbiomedata/NMDC_documentation/blob/main/decisions/0007-mongo-migration-scripts.md)
39
+ 1. [NMDC Schema](https://github.com/microbiomedata/nmdc-schema) repo releases new version. All releases must include a migration script (even if it is null / empty) to run against MongoDB. See [ADR 007](https://github.com/microbiomedata/issues/blob/main/decisions/0007-mongo-migration-scripts.md)
40
40
  2. Submit/Merge a PR with updated schema version and any related code changes.
41
41
  3. Build a new NMDC-runtime image so that it is ready to be deployed (See above).
42
42
  4. Database (Mongo) is switched to read-only mode to prevent inconsistencies.