nmdc-runtime 1.2.0__tar.gz → 1.3.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.
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/.env.example +2 -1
- nmdc_runtime-1.3.0/.github/workflows/lint.yml +33 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/.gitignore +4 -1
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/.gitpod.yml +1 -1
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/Makefile +15 -5
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/PKG-INFO +1 -1
- nmdc_runtime-1.3.0/demo/metadata_migration/notebooks/migrate_9_3_2_to_10_0_0.ipynb +480 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/api/core/auth.py +27 -6
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/api/endpoints/find.py +40 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/api/endpoints/nmdcschema.py +20 -1
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/api/endpoints/queries.py +11 -1
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/api/endpoints/users.py +34 -37
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/api/endpoints/util.py +5 -2
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/api/main.py +135 -7
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/api/models/object.py +1 -1
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/api/models/query.py +40 -2
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/api/models/user.py +2 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/containers.py +0 -1
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/lib/nmdc_etl_class.py +0 -1
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/lib/transform_nmdc_data.py +0 -1
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/site/graphs.py +69 -5
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/site/ops.py +74 -3
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/site/repository.py +62 -4
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/site/translation/gold_translator.py +1 -1
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/site/translation/neon_benthic_translator.py +28 -30
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/site/translation/neon_soil_translator.py +27 -25
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/site/translation/neon_utils.py +36 -35
- nmdc_runtime-1.3.0/nmdc_runtime/static/ORCIDiD_icon128x128.png +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime.egg-info/PKG-INFO +2 -2
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime.egg-info/SOURCES.txt +3 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/requirements/dev.txt +34 -42
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/requirements/main.in +1 -1
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/requirements/main.txt +101 -110
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/tests/test_data/test_neon_benthic_data_translator.py +26 -44
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/tests/test_data/test_neon_soil_data_translator.py +35 -58
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/.dockerignore +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/.env.test +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/.github/workflows/build-and-release-to-spin.yml +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/.github/workflows/mkdocs.yml +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/.github/workflows/python-app.yml +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/.github/workflows/release-to-pypi.yml +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/.gitpod.Dockerfile +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/.nvmrc +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/LICENSE +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/README.md +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/RELEASES.md +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/components/nmdc_runtime/workflow/__init__.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/components/nmdc_runtime/workflow/spec.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/components/nmdc_runtime/workflow_execution_activity/__init__.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/components/nmdc_runtime/workflow_execution_activity/core.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/components/nmdc_runtime/workflow_execution_activity/spec.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/components/nmdc_runtime/workflow_execution_activity/store.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/demo/metadata_discovery/.env.example +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/demo/metadata_discovery/GOLDs5levelEcosystemClassificationPaths.xlsx +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/demo/metadata_discovery/biosamples.json +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/demo/metadata_discovery/console_queries.dev +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/demo/metadata_discovery/docker-compose.yml +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/demo/metadata_discovery/envo.owl +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/demo/metadata_discovery/indexing.ipynb +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/demo/metadata_discovery/po.owl +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/demo/metadata_migration/__init__.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/demo/metadata_migration/main.ipynb +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/demo/metadata_migration/main.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/demo/metadata_migration/notebooks/.gitignore +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/demo/metadata_migration/notebooks/.mongo.yaml.example +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/demo/metadata_migration/notebooks/.notebook.env.example +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/demo/metadata_migration/notebooks/helpers.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/demo/metadata_migration/notebooks/migrate_7_7_2_to_7_8_0.ipynb +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/demo/metadata_migration/notebooks/migrate_7_8_0_to_8_0_0.ipynb +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/demo/metadata_migration/notebooks/migrate_8_0_0_to_8_1_2.ipynb +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/demo/metadata_migration/notebooks/migrate_8_1_2_to_9_0_4.ipynb +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/demo/metadata_migration/notebooks/migrate_9_0_4_to_9_1_0.ipynb +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/demo/metadata_migration/notebooks/migrate_9_1_0_to_9_2_0.ipynb +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/demo/metadata_migration/notebooks/requirements.txt +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/docker-compose.test.yml +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/docker-compose.yml +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/docs/admin.md +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/docs/contributing-docs.md +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/docs/draft.md +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/docs/explanation/domain-vision-statement.md +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/docs/explanation/identifiers.md +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/docs/explanation/journeys.md +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/docs/howto-guides/author-changesheets.md +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/docs/howto-guides/claim-and-run-jobs.md +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/docs/howto-guides/create-triggers.md +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/docs/howto-guides/improving-search-api.md +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/docs/howto-guides/jobs/gold-translation-etl.md +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/docs/howto-guides/release-process.md +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/docs/howto-guides/update-sensors-ops.md +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/docs/img/auth-button.png +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/docs/img/auth-client-id.png +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/docs/img/auth-close-modal.png +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/docs/img/auth-username.png +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/docs/img/dagit-apply-changesheet-job.png +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/docs/img/dagster-translation-gold-job.png +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/docs/img/dagster-translation-gold-launchpad.png +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/docs/img/dagster-translation-gold-overview.png +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/docs/img/dagster-translation-repo-jobs.png +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/docs/img/dagster-workspace-repo-loaded.png +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/docs/img/job-triggering.png +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/docs/img/list-from-collection-filter.png +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/docs/img/list-from-collection-page-token.png +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/docs/img/list-from-collection.png +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/docs/img/metadata-in-dagit-runs.png +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/docs/img/metadata-in-put-types.png +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/docs/img/nmdc-runtime-federation.png +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/docs/img/rancher-nmdc-runtime-dev-workloads.png +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/docs/img/validate-json-copy-paste-execute.png +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/docs/img/validate-json-get-one-valid.png +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/docs/img/validate-json-response.png +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/docs/img/validate-json-try-it-out.png +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/docs/img/validate-json.png +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/docs/index.md +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/docs/nb/get_data.ipynb +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/docs/nb/queue_and_trigger_data_jobs.ipynb +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/docs/nb/wf_automation.ipynb +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/docs/stylesheets/extra.css +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/docs/tutorials/auth.md +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/docs/tutorials/json.md +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/docs/tutorials/metadata-in.md +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/docs_prev/design/api-resource-diagram.md +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/docs_prev/design/api-resource-layout.md +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/docs_prev/design/nmdc-runtime-api-resource-diagram.png +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/docs_prev/design/nmdc-wfe.ttl +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/docs_prev/design/redoc-static.html +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/docs_prev/design/spec.md +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/docs_prev/design/workflow-automation.md +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/docs_prev/index.html +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/flake.lock +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/flake.nix +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/github_secrets_to_dotenv.sh +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/guix-manifest.scm +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/Makefile +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/README.md +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/__init__.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/examples/Froze_Core_2015_S2_0_10_7_Metab.json +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/examples/MAGs_activity.json +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/examples/biosample_test.json +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/examples/changesheet-ex-01-screenshot.png +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/examples/changesheet-ex-01.csv +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/examples/emsl_data_object_test.json +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/examples/emsl_project_test.json +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/examples/feature-set.json +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/examples/ftms_nom_data_products.json +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/examples/functional-annotation.json +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/examples/gcms_metabolomics_data_products.json +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/examples/gold_project_test.json +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/examples/img_mg_annotation_data_objects.json +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/examples/img_mg_annotation_objects.json +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/examples/metagenome_annotation_activity.json +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/examples/mg_assembly_activities_test.json +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/examples/mg_assembly_data_objects_test.json +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/examples/migs-template-cedar.schema.json +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/examples/nom_analysis_activity.json +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/examples/readQC_activities_test.json +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/examples/readQC_data_objects_test.json +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/examples/read_based_analysis_activity.json +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/examples/study_test.json +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/images/nmdc-etl-workflow.drawio +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/images/nmdc-etl-workflow.png +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/images/nmdc-etl-workflow.svg +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/mapping-files/Description_MIxS_Packages_v5.docx +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/mapping-files/GOLD-Paths-to-MIxS-ENVO-triad-mapping.xlsx +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/mapping-files/MIxSair_20180621_GOLD_Mapping_04132020.xlsx +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/mapping-files/MIxSbuiltenv_20180621_GOLD_Mapping_04172020.xlsx +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/mapping-files/MIxShostassoc_20180621_GOLD_Mapping.xlsx +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/mapping-files/MIxShumanassoc_20180621_GOLD_Mapping_04142020.xlsx +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/mapping-files/MIxShumangut_20180621_GOLD_Mapping_04152020.xlsx +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/mapping-files/MIxShumanoral_20180621_GOLD_Mapping_04152020.xlsx +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/mapping-files/MIxShumanskin_20180621_GOLD_Mapping_04162020.xlsx +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/mapping-files/MIxShumanvaginal_20180621_GOLD_04162020.xlsx +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/mapping-files/MIxShydrocarbCores_20180621_Mapping_GOLD.xlsx +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/mapping-files/MIxShydrocarbfs_20180621_v5_GOLD_Mapping.xlsx +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/mapping-files/MIxSmatbiofilm_20180621_v5_GOLD_Mapping.xlsx +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/mapping-files/MIxSmisc_20180621_GOLD_Mapping.xlsx +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/mapping-files/MIxSplantassoc_20180621_v5_GOLD_Mapping.xlsx +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/mapping-files/MIxSsediment_20180621_GOLD_Mapping_04102020.xlsx +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/mapping-files/MIxSsoil_20180621_GOLD_Mapping_04102020.xlsx +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/mapping-files/MIxSwastesludge_20180621_GOLD_Mapping_Apr-10.xlsx +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/mapping-files/MIxSwater_20180621_GOLD_Mapping_04122020.xlsx +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/mapping-files/Makefile +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/mapping-files/README.md +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/mapping-files/mixs_v4.xlsx +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/mapping-files/mixs_v5.xlsx +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/notebooks/202106_curation_updates.ipynb +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/notebooks/202106_workflow_execution_demo.ipynb +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/notebooks/202109_metadata_ingest.ipynb +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/notebooks/NMDC-GOLD-data-counts.ipynb +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/notebooks/README.md +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/notebooks/archive/generate-gold-sample-json.ipynb +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/notebooks/archive/translate-30_FICUS_Proposals_Metadata_4_Emiley_Chris_11082019.ipynb +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/notebooks/changesheets-example.ipynb +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/notebooks/changesheets-testing.ipynb +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/notebooks/data/changesheet-array-item-nested-attributes.tsv +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/notebooks/data/changesheet-insert.tsv +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/notebooks/data/changesheet-remove-item.tsv +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/notebooks/data/changesheet-remove-property.tsv +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/notebooks/data/changesheet-replace.tsv +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/notebooks/data/changesheet-update-pi-websites.tsv +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/notebooks/data/changesheet-with-separator1.tsv +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/notebooks/data/changesheet-without-separator1.tsv +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/notebooks/data/changesheet-without-separator2.tsv +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/notebooks/data/changesheet-without-separator3.tsv +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/notebooks/data/study-data1.json +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/notebooks/data/study-data2.json +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/notebooks/data/study-data3.json +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/notebooks/ensure_biosample_set_study_id.ipynb +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/notebooks/ghissue_252_253_linked_samples.ipynb +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/notebooks/ghissue_255.ipynb +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/notebooks/ghissue_272.ipynb +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/notebooks/gold-biosample-null-value-analysis.ipynb +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/notebooks/gold_ids_to_igsns.ipynb +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/notebooks/images/EMSL-data-translation.png +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/notebooks/images/GOLD-data-objects-translation.png +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/notebooks/images/GOLD-study-project-biosample-translation.png +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/notebooks/images/NMDC-jupyter-translation-workflow.png +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/notebooks/metaP_stegen.ipynb +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/notebooks/metadata_db_admin.ipynb +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/notebooks/mongo_etl_demo.ipynb +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/notebooks/output/FICUS-projects-merged.owl +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/notebooks/output/FICUS-projects-merged.owl.zip +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/notebooks/output/FICUS-projects-translation.owl +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/notebooks/output/catalog-v001.xml +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/notebooks/output/gold-classification-paths-translation.json +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/notebooks/output/gold-classification-paths-translation.json.zip +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/notebooks/output/gold-classification-paths-translation.owl +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/notebooks/output/gold-classification-paths-translation.owl.zip +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/notebooks/output/gold-dataset-translation.owl +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/notebooks/output/nmdc-json/biosample.json +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/notebooks/output/nmdc-json/data_objects.json +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/notebooks/output/nmdc-json/omics_processing.json +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/notebooks/output/nmdc-json/study.json +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/notebooks/output/nmdc-json_2020-02-01.zip +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/notebooks/output/nmdc-json_2020-02-05.zip +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/notebooks/output/nmdc-json_2020-02-06.zip +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/notebooks/output/nmdc-json_2020-02-12.zip +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/notebooks/output/nmdc-json_2020-02-18.zip +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/notebooks/output/nmdc-json_2020-02-19.zip +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/notebooks/output/schema-test-full.txt.zip +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/notebooks/output/schema-test.json +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/notebooks/output/schema-test.txt +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/notebooks/output/schema-test.txt.zip +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/notebooks/output/temp.txt +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/notebooks/output/test-five-biosamples/biosample.json +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/notebooks/output/test-five-biosamples/data_object.json +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/notebooks/output/test-five-biosamples/project.json +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/notebooks/output/test-five-biosamples/study.json +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/notebooks/output/test-pipeline/biosample.json +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/notebooks/output/test-pipeline/emsl_data_objects.json +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/notebooks/output/test-pipeline/emsl_omics_processing.json +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/notebooks/output/test-pipeline/faa_fna_fastq_data_objects.json +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/notebooks/output/test-pipeline/gold_omics_processing.json +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/notebooks/output/test-pipeline/gold_study.json +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/notebooks/output/test-pipeline/nmdc-02.json +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/notebooks/output/test-pipeline.zip +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/notebooks/test-changesheet-with-separator.ipynb +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/notebooks/test-changesheet-without-separator.ipynb +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/notebooks/test-output.ipynb +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/notebooks/test-pipeline-scratch.ipynb +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/notebooks/test-pipeline-temp.ipynb +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/notebooks/test-pipeline.ipynb +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/notebooks/test.json +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/notebooks/test.txt +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/notebooks/translate-EMSL-data.ipynb +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/notebooks/translate-GOLD-data-objects.ipynb +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/notebooks/translate-GOLD-study-project-biosample.ipynb +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/notebooks/translation-pipeline.ipynb +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/src/__init__.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/src/bin/__init__.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/src/bin/align_nmdc_datatypes.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/src/bin/execute_etl_pipeline.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/src/bin/fix_omics_processing_json.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/src/bin/lib/__init__.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/src/bin/lib/data_operations.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/src/bin/lib/extract_nmdc_data.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/src/bin/lib/load_nmdc_data.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/src/bin/lib/nmdc_data_source.yaml +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/src/bin/lib/nmdc_dataframes.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/src/bin/lib/nmdc_etl_class.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/src/bin/lib/transform_nmdc_data.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/src/bin/mandatory_mixs_terms.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/src/bin/mandatory_mixs_terms.py.org +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/src/bin/validate_json.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/src/data/2020-23-12-brodie-Gs0135149-soil-metadata.csv +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/src/data/2021-02-03-stegen_biosample_linking_update.csv +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/src/data/2021-02-04-brodie_biosample_linking_update.csv +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/src/data/2021-02-04-stegen_biosample_template.json +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/src/data/2021-07-02-study-changes.csv +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/src/data/30_FICUS_Proposals_Metadata_4_Emiley_Chris_11082019.xlsx +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/src/data/EMSL_FICUS_project_process_data_export.xlsx +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/src/data/EMSL_Hess_Stegen_Blanchard_DatasetToMetagenomeMapping.tsv +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/src/data/EMSL_biosample_matches.tsv +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/src/data/FICUS - JGI-EMSL Proposal - Gold Study - ID mapping and PI.xlsx +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/src/data/GOLD-soil-mixs-envo-mappings.tsv +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/src/data/GOLD-to-mixs-map.tsv +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/src/data/GOLD_Ecosystem_Classification_Paths_10152019.xlsx +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/src/data/GOLD_ecosystem_classification_paths.xlsx +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/src/data/JGI-EMSL-FICUS-proposals.fnl.tsv +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/src/data/NMDC-GOLD-Fields.xlsx +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/src/data/README.md +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/src/data/__init__.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/src/data/aim-2-workflows/Hess_emsl_analysis_data_objects.json +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/src/data/aim-2-workflows/Hess_metaproteomic_analysis_activities.json +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/src/data/aim-2-workflows/Stegen_emsl_analysis_data_objects.json +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/src/data/aim-2-workflows/Stegen_metaproteomic_analysis_activities.json +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/src/data/aim-2-workflows/metagenome_annotation_activities.json +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/src/data/aim-2-workflows/metagenome_annotation_data_objects.json +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/src/data/aim-2-workflows/metagenome_assembly_activities.json +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/src/data/aim-2-workflows/metagenome_assembly_data_objects.json +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/src/data/aim-2-workflows/readQC_activities.json +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/src/data/aim-2-workflows/readQC_data_objects.json +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/src/data/all_gold_fields.xlsx +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/src/data/ficus_project_faa.tsv +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/src/data/ficus_project_fastq.tsv +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/src/data/ficus_project_fna.tsv +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/src/data/mixs_v5.xlsx +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/src/data/nmdc-version2.zip +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/metadata-translation/src/data/nmdc-version5.zip +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/mkdocs.yml +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/mkdocs_overrides/partials/source.html +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/mongoKeyFile +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nersc-sshproxy.sh +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc-wfe.html +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/__init__.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/api/analytics.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/api/boot/__init__.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/api/boot/capabilities.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/api/boot/object_types.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/api/boot/triggers.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/api/boot/workflows.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/api/core/__init__.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/api/core/idgen.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/api/core/metadata.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/api/core/util.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/api/db/__init__.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/api/db/mongo.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/api/db/s3.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/api/db/terminus.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/api/endpoints/__init__.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/api/endpoints/capabilities.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/api/endpoints/ids.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/api/endpoints/jobs.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/api/endpoints/metadata.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/api/endpoints/object_types.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/api/endpoints/objects.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/api/endpoints/operations.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/api/endpoints/runs.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/api/endpoints/search.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/api/endpoints/sites.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/api/endpoints/triggers.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/api/endpoints/workflows.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/api/entrypoint.sh +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/api/models/__init__.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/api/models/capability.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/api/models/id.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/api/models/job.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/api/models/metadata.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/api/models/minter.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/api/models/nmdc_schema.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/api/models/object_type.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/api/models/operation.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/api/models/run.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/api/models/site.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/api/models/trigger.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/api/models/util.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/api/models/workflow.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/api/v1/models/ingest.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/api/v1/models/users.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/api/v1/models/workflow_execution_activity.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/api/v1/outputs.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/api/v1/router.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/api/v1/users.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/api/v1/workflows/__init__.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/api/v1/workflows/activities/router.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/api/v1/workflows/activities.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/client/__init__.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/core/__init__.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/core/db/Database.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/core/db/__init__.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/core/exceptions/__init__.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/core/exceptions/base.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/core/exceptions/token.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/dagster.Dockerfile +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/domain/__init__.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/domain/users/__init__.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/domain/users/queriesInterface.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/domain/users/userSchema.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/domain/users/userService.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/fastapi.Dockerfile +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/infrastructure/__init__.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/infrastructure/database/__init__.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/infrastructure/database/db.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/infrastructure/database/impl/mongo/__init__.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/infrastructure/database/impl/mongo/db.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/infrastructure/database/impl/mongo/models/__init__.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/infrastructure/database/impl/mongo/models/user.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/infrastructure/database/models/__init__.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/infrastructure/database/models/user.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/lib/__init__.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/lib/extract_nmdc_data.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/lib/load_nmdc_data.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/lib/nmdc_data_source.yaml +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/lib/nmdc_dataframes.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/main.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/minter/__init__.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/minter/adapters/__init__.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/minter/adapters/repository.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/minter/bootstrap.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/minter/config.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/minter/domain/__init__.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/minter/domain/model.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/minter/entrypoints/__init__.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/minter/entrypoints/fastapi_app.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/minter/nmdc.schema.json +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/site/__init__.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/site/backup/__init__.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/site/backup/nmdcdb_mongodump.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/site/backup/nmdcdb_mongoexport.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/site/backup/nmdcdb_mongoimport.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/site/changesheets/__init__.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/site/changesheets/base.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/site/changesheets/data/OmicsProcessing-to-catted-Biosamples.tsv +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/site/changesheets/scripts/missing_neon_soils_ecosystem_data.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/site/changesheets/scripts/neon_soils_add_ncbi_ids.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/site/dagster.yaml +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/site/drsobjects/__init__.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/site/drsobjects/ingest.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/site/drsobjects/registration.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/site/entrypoint-daemon.sh +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/site/entrypoint-dagit-readonly.sh +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/site/entrypoint-dagit.sh +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/site/export/__init__.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/site/export/study_metadata.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/site/normalization/__init__.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/site/normalization/gold.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/site/resources.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/site/terminusdb/.TDB +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/site/terminusdb/__init__.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/site/terminusdb/config.json +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/site/terminusdb/generate.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/site/terminusdb/ingest.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/site/terminusdb/nmdc.schema.terminusdb.json +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/site/terminusdb/schema.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/site/translation/__init__.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/site/translation/emsl.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/site/translation/gold.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/site/translation/jgi.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/site/translation/submission_portal_translator.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/site/translation/translator.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/site/translation/util.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/site/util.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/site/validation/__init__.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/site/validation/emsl.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/site/validation/gold.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/site/validation/jgi.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/site/validation/util.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/site/workspace.yaml +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/templates/pipeline_search.html +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/templates/search.html +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/test.Dockerfile +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime/util.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime.egg-info/dependency_links.txt +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime.egg-info/entry_points.txt +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/nmdc_runtime.egg-info/top_level.txt +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/requirements/dev.in +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/setup.cfg +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/setup.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/tasks.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/terminusdb +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/tests/__init__.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/tests/conftest.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/tests/e2e/test_minter_api.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/tests/files/nmdc_bsm-11-5nhz3402.json +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/tests/files/nmdc_bsm-12-7mysck21.json +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/tests/files/nmdc_dobj-11-000n1286.json +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/tests/files/nmdc_sty-11-pzmd0x14.json +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/tests/files/test_changesheet_update_one_ph.tsv +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/tests/integration/test_minter_repository.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/tests/mongodump-nmdc-testdb.sh +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/tests/mongorestore-nmdc-testdb.sh +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/tests/nmdcdb.test.archive.gz +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/tests/test_api/__init__.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/tests/test_api/test_db_mongo.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/tests/test_api/test_endpoints.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/tests/test_api/test_metadata.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/tests/test_api/util.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/tests/test_data/__init__.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/tests/test_data/conftest.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/tests/test_data/test_gold_translator.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/tests/test_data/test_gold_translator_data.yaml +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/tests/test_data/test_integrity.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/tests/test_data/test_submission_portal_translator.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/tests/test_data/test_submission_portal_translator_data.yaml +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/tests/test_graphs/__init__.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/tests/test_graphs/ensure_jobs.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/tests/test_graphs/test_hello.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/tests/test_graphs/test_submission_portal_graphs.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/tests/test_normalization/__init__.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/tests/test_normalization/test_gold.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/tests/test_ops/__init__.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/tests/test_ops/test_data_api_ops.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/tests/test_ops/test_get_csv_rows_from_url.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/tests/test_ops/test_gold_api_ops.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/tests/test_ops/test_hello.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/tests/test_util.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/tests/unit/core_util.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/tests/unit/test_minter_model.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/tests2/__init__.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/tests2/domain/__init__.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/tests2/domain/service/__init__.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/tests2/domain/service/test_user_service.py +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/tmp.json +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/util/mongodump-nmdc.sh +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/util/mongorestore-nmdc.sh +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/wait-for-it.sh +0 -0
- {nmdc_runtime-1.2.0 → nmdc_runtime-1.3.0}/workspace.toml +0 -0
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
name: Lint-check + Style-normalize Python files
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
pull_request:
|
|
5
|
+
paths:
|
|
6
|
+
- '.github/workflows/lint.yml'
|
|
7
|
+
- '**.py'
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
jobs:
|
|
11
|
+
build:
|
|
12
|
+
name: lint-check and style-normalize Python files
|
|
13
|
+
runs-on: ubuntu-latest
|
|
14
|
+
|
|
15
|
+
steps:
|
|
16
|
+
- uses: actions/checkout@v4
|
|
17
|
+
with:
|
|
18
|
+
ref: ${{ github.event.pull_request.head.ref }}
|
|
19
|
+
- name: Set up Python 3.10
|
|
20
|
+
uses: actions/setup-python@v4
|
|
21
|
+
with:
|
|
22
|
+
python-version: '3.10'
|
|
23
|
+
- name: Lint with flake8 and Reformat with black
|
|
24
|
+
run: |
|
|
25
|
+
make init-lint-and-black
|
|
26
|
+
make lint
|
|
27
|
+
make black
|
|
28
|
+
- name: commit and push if reformatted
|
|
29
|
+
run: |
|
|
30
|
+
git config user.name github-actions
|
|
31
|
+
git config user.email github-actions@github.com
|
|
32
|
+
if git status --short | grep -q '\.py$'; then git add '*.py' && git commit -m "style: reformat" && git push; fi
|
|
33
|
+
|
|
@@ -18,14 +18,14 @@ update-deps:
|
|
|
18
18
|
update: update-deps init
|
|
19
19
|
|
|
20
20
|
up-dev:
|
|
21
|
-
docker
|
|
21
|
+
docker compose up --build --force-recreate --detach --remove-orphans
|
|
22
22
|
|
|
23
23
|
dev-reset-db:
|
|
24
24
|
docker compose \
|
|
25
25
|
exec mongo /bin/bash -c "./app_tests/mongorestore-nmdc-testdb.sh"
|
|
26
26
|
|
|
27
27
|
up-test:
|
|
28
|
-
docker
|
|
28
|
+
docker compose --file docker-compose.test.yml \
|
|
29
29
|
up --build --force-recreate --detach --remove-orphans
|
|
30
30
|
|
|
31
31
|
test-build:
|
|
@@ -41,6 +41,9 @@ test-run:
|
|
|
41
41
|
|
|
42
42
|
test: test-build test-run
|
|
43
43
|
|
|
44
|
+
black:
|
|
45
|
+
black nmdc_runtime
|
|
46
|
+
|
|
44
47
|
lint:
|
|
45
48
|
# Python syntax errors or undefined names
|
|
46
49
|
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics --extend-ignore=F722
|
|
@@ -48,14 +51,21 @@ lint:
|
|
|
48
51
|
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 \
|
|
49
52
|
--statistics --extend-exclude="./build/" --extend-ignore=F722
|
|
50
53
|
|
|
54
|
+
PIP_PINNED_FLAKE8 := $(shell grep 'flake8==' requirements/dev.txt)
|
|
55
|
+
PIP_PINNED_BLACK := $(shell grep 'black==' requirements/dev.txt)
|
|
56
|
+
|
|
57
|
+
init-lint-and-black:
|
|
58
|
+
pip install $(PIP_PINNED_FLAKE8)
|
|
59
|
+
pip install $(PIP_PINNED_BLACK)
|
|
60
|
+
|
|
51
61
|
down-dev:
|
|
52
|
-
docker
|
|
62
|
+
docker compose down
|
|
53
63
|
|
|
54
64
|
down-test:
|
|
55
|
-
docker
|
|
65
|
+
docker compose --file docker-compose.test.yml down
|
|
56
66
|
|
|
57
67
|
follow-fastapi:
|
|
58
|
-
docker
|
|
68
|
+
docker compose logs fastapi -f
|
|
59
69
|
|
|
60
70
|
fastapi-deploy-spin:
|
|
61
71
|
rancher kubectl rollout restart deployment/runtime-fastapi --namespace=nmdc-dev
|
|
@@ -0,0 +1,480 @@
|
|
|
1
|
+
{
|
|
2
|
+
"cells": [
|
|
3
|
+
{
|
|
4
|
+
"cell_type": "markdown",
|
|
5
|
+
"id": "initial_id",
|
|
6
|
+
"metadata": {
|
|
7
|
+
"collapsed": true
|
|
8
|
+
},
|
|
9
|
+
"source": [
|
|
10
|
+
"# Migrate MongoDB database from `nmdc-schema` `v9.3.2` to `v10.0.0`"
|
|
11
|
+
]
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"cell_type": "markdown",
|
|
15
|
+
"id": "f65ad4ab",
|
|
16
|
+
"metadata": {},
|
|
17
|
+
"source": [
|
|
18
|
+
"## Prerequisites"
|
|
19
|
+
]
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"cell_type": "markdown",
|
|
23
|
+
"id": "37d358ba",
|
|
24
|
+
"metadata": {},
|
|
25
|
+
"source": [
|
|
26
|
+
"### 1. Determine MongoDB collections involved.\n",
|
|
27
|
+
"\n",
|
|
28
|
+
"In this step, you will determine which MongoDB collections will be involved with this migration.\n",
|
|
29
|
+
"\n",
|
|
30
|
+
"1. In the [`nmdc-schema` repo](https://github.com/microbiomedata/nmdc-schema/tree/main/nmdc_schema/migrators), go to the `nmdc_schema/migrators` directory and open the Python module whose name reflects the initial and final schema versions.\n",
|
|
31
|
+
"2. In the `Migrator` class, note the collection names that are mentioned within the `upgrade` method.\n",
|
|
32
|
+
"3. Add their names to the `COLLECTION_NAMES` Python list below.\n",
|
|
33
|
+
" - > TODO: Distinguish between colletions being read vs. collections being transformed; and consider what happens when a collection is created, deleted, or renamed."
|
|
34
|
+
]
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"cell_type": "code",
|
|
38
|
+
"execution_count": null,
|
|
39
|
+
"id": "09966b0d",
|
|
40
|
+
"metadata": {},
|
|
41
|
+
"outputs": [],
|
|
42
|
+
"source": [
|
|
43
|
+
"COLLECTION_NAMES: list[str] = [\n",
|
|
44
|
+
" \"extraction_set\",\n",
|
|
45
|
+
"]"
|
|
46
|
+
]
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"cell_type": "markdown",
|
|
50
|
+
"id": "17f351e8",
|
|
51
|
+
"metadata": {},
|
|
52
|
+
"source": [
|
|
53
|
+
"### 2. Coordinate with stakeholders.\n",
|
|
54
|
+
"\n",
|
|
55
|
+
"In this step, you'll identify and reach out to the people that read/write to those collections; to agree on a migration schedule that works for you and them.\n",
|
|
56
|
+
"\n",
|
|
57
|
+
"Here's a table of MongoDB collections and the NMDC system components that write to them (according to [a conversation that occurred on September 11, 2023](https://nmdc-group.slack.com/archives/C01SVTKM8GK/p1694465755802979?thread_ts=1694216327.234519&cid=C01SVTKM8GK)).\n",
|
|
58
|
+
"\n",
|
|
59
|
+
"| Mongo collection | NMDC system components that write to it |\n",
|
|
60
|
+
"|---------------------------------------------|----------------------------------------------------------|\n",
|
|
61
|
+
"| `biosample_set` | Workflows (via manual entry via `nmdc-runtime` HTTP API) |\n",
|
|
62
|
+
"| `data_object_set` | Workflows (via `nmdc-runtime` HTTP API) |\n",
|
|
63
|
+
"| `mags_activity_set` | Workflows (via `nmdc-runtime` HTTP API) |\n",
|
|
64
|
+
"| `metagenome_annotation_activity_set` | Workflows (via `nmdc-runtime` HTTP API) |\n",
|
|
65
|
+
"| `metagenome_assembly_set` | Workflows (via `nmdc-runtime` HTTP API) |\n",
|
|
66
|
+
"| `read_based_taxonomy_analysis_activity_set` | Workflows (via `nmdc-runtime` HTTP API) |\n",
|
|
67
|
+
"| `read_qc_analysis_activity_set` | Workflows (via `nmdc-runtime` HTTP API) |\n",
|
|
68
|
+
"| `jobs` | Scheduler (via MongoDB directly; e.g. `pymongo`) |\n",
|
|
69
|
+
"| `*` | `nmdc-runtime` (via MongoDB directly; e.g. `pymongo`) |\n",
|
|
70
|
+
"\n",
|
|
71
|
+
"You can use that table to help determine which people read/write to those collections. You can then coordinate a migration time slot with them via Slack, email, etc."
|
|
72
|
+
]
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"cell_type": "markdown",
|
|
76
|
+
"id": "233a35c3",
|
|
77
|
+
"metadata": {},
|
|
78
|
+
"source": [
|
|
79
|
+
"### 3. Set up environment.\n",
|
|
80
|
+
"\n",
|
|
81
|
+
"In this step, you'll set up an environment in which you can run this notebook.\n",
|
|
82
|
+
"\n",
|
|
83
|
+
"1. Start a **MongoDB server** on your local machine (and ensure it does **not** already contain a database named `nmdc`).\n",
|
|
84
|
+
" 1. You can start a [Docker](https://hub.docker.com/_/mongo)-based MongoDB server at `localhost:27055` by running this command:\n",
|
|
85
|
+
" ```shell\n",
|
|
86
|
+
" # Run in any directory:\n",
|
|
87
|
+
" docker run --rm --detach --name mongo-migration-transformer -p 27055:27017 mongo:6.0.4\n",
|
|
88
|
+
" ```\n",
|
|
89
|
+
" > Note: A MongoDB server started via that command will have no access control (i.e. you will be able to access it without a username or password).\n",
|
|
90
|
+
"2. Create and populate a **notebook configuration file** named `.notebook.env`.\n",
|
|
91
|
+
" 1. You can use the `.notebook.env.example` file as a template:\n",
|
|
92
|
+
" ```shell\n",
|
|
93
|
+
" # Run in the same directory as this notebook:\n",
|
|
94
|
+
" $ cp .notebook.env.example .notebook.env\n",
|
|
95
|
+
" ```\n",
|
|
96
|
+
"3. Create and populate **MongoDB configuration files** for connecting to the origin (typically, local) and transformer (typically, remote) MongoDB servers.\n",
|
|
97
|
+
" 1. You can use the `.mongo.yaml.example` file as a template:\n",
|
|
98
|
+
" ```shell\n",
|
|
99
|
+
" # Run in the same directory as this notebook:\n",
|
|
100
|
+
" $ cp .mongo.yaml.example .mongo.origin.yaml\n",
|
|
101
|
+
" $ cp .mongo.yaml.example .mongo.transformer.yaml\n",
|
|
102
|
+
" ```\n",
|
|
103
|
+
" > When populating the file for the origin MongoDB server, use credentials that have write access to the `nmdc` database."
|
|
104
|
+
]
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
"cell_type": "markdown",
|
|
108
|
+
"id": "69937b18",
|
|
109
|
+
"metadata": {},
|
|
110
|
+
"source": [
|
|
111
|
+
"## Procedure"
|
|
112
|
+
]
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
"cell_type": "markdown",
|
|
116
|
+
"id": "fe81196a",
|
|
117
|
+
"metadata": {},
|
|
118
|
+
"source": [
|
|
119
|
+
"### Install Python dependencies\n",
|
|
120
|
+
"\n",
|
|
121
|
+
"In this step, you'll [install](https://saturncloud.io/blog/what-is-the-difference-between-and-in-jupyter-notebooks/) the Python packages upon which this notebook depends. You can do that by running this cell.\n",
|
|
122
|
+
"\n",
|
|
123
|
+
"> Note: If the output of this cell says \"Note: you may need to restart the kernel to use updated packages\", restart the kernel (not the notebook) now."
|
|
124
|
+
]
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
"cell_type": "code",
|
|
128
|
+
"execution_count": null,
|
|
129
|
+
"id": "e25a0af308c3185b",
|
|
130
|
+
"metadata": {
|
|
131
|
+
"collapsed": false
|
|
132
|
+
},
|
|
133
|
+
"outputs": [],
|
|
134
|
+
"source": [
|
|
135
|
+
"%pip install -r requirements.txt\n",
|
|
136
|
+
"%pip install nmdc-schema==10.0.0"
|
|
137
|
+
]
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
"cell_type": "markdown",
|
|
141
|
+
"id": "a407c354",
|
|
142
|
+
"metadata": {},
|
|
143
|
+
"source": [
|
|
144
|
+
"### Import Python dependencies\n",
|
|
145
|
+
"\n",
|
|
146
|
+
"Import the Python objects upon which this notebook depends.\n",
|
|
147
|
+
"\n",
|
|
148
|
+
"> Note: One of the Python objects is a Python class that is specific to this migration."
|
|
149
|
+
]
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
"cell_type": "code",
|
|
153
|
+
"execution_count": null,
|
|
154
|
+
"id": "dbecd561",
|
|
155
|
+
"metadata": {},
|
|
156
|
+
"outputs": [],
|
|
157
|
+
"source": [
|
|
158
|
+
"# Third-party packages:\n",
|
|
159
|
+
"import pymongo\n",
|
|
160
|
+
"from nmdc_schema.nmdc_data import get_nmdc_jsonschema_dict\n",
|
|
161
|
+
"from nmdc_schema.migrators.adapters.mongo_adapter import MongoAdapter\n",
|
|
162
|
+
"from nmdc_schema.migrators.migrator_from_9_3_to_10_0 import Migrator\n",
|
|
163
|
+
"from jsonschema import Draft7Validator\n",
|
|
164
|
+
"\n",
|
|
165
|
+
"# First-party packages:\n",
|
|
166
|
+
"from helpers import Config"
|
|
167
|
+
]
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
"cell_type": "markdown",
|
|
171
|
+
"id": "99b20ff4",
|
|
172
|
+
"metadata": {},
|
|
173
|
+
"source": [
|
|
174
|
+
"### Parse configuration files\n",
|
|
175
|
+
"\n",
|
|
176
|
+
"Parse the notebook and Mongo configuration files."
|
|
177
|
+
]
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
"cell_type": "code",
|
|
181
|
+
"execution_count": null,
|
|
182
|
+
"id": "1eac645a",
|
|
183
|
+
"metadata": {},
|
|
184
|
+
"outputs": [],
|
|
185
|
+
"source": [
|
|
186
|
+
"cfg = Config()\n",
|
|
187
|
+
"\n",
|
|
188
|
+
"# Define some aliases we can use to make the shell commands in this notebook easier to read.\n",
|
|
189
|
+
"mongodump = cfg.mongodump_path\n",
|
|
190
|
+
"mongorestore = cfg.mongorestore_path\n",
|
|
191
|
+
"\n",
|
|
192
|
+
"# Perform a sanity test of the application paths.\n",
|
|
193
|
+
"!{mongodump} --version\n",
|
|
194
|
+
"!{mongorestore} --version"
|
|
195
|
+
]
|
|
196
|
+
},
|
|
197
|
+
{
|
|
198
|
+
"cell_type": "markdown",
|
|
199
|
+
"id": "68245d2b",
|
|
200
|
+
"metadata": {},
|
|
201
|
+
"source": [
|
|
202
|
+
"### Create MongoDB clients\n",
|
|
203
|
+
"\n",
|
|
204
|
+
"Create MongoDB clients you can use to access the \"origin\" MongoDB server (i.e. the one containing the database you want to migrate) and the \"transformer\" MongoDB server (i.e. the one you want to use to perform the data transformations)."
|
|
205
|
+
]
|
|
206
|
+
},
|
|
207
|
+
{
|
|
208
|
+
"cell_type": "code",
|
|
209
|
+
"execution_count": null,
|
|
210
|
+
"id": "8e95f559",
|
|
211
|
+
"metadata": {},
|
|
212
|
+
"outputs": [],
|
|
213
|
+
"source": [
|
|
214
|
+
"# Mongo client for origin MongoDB server.\n",
|
|
215
|
+
"origin_mongo_client = pymongo.MongoClient(host=cfg.origin_mongo_server_uri, directConnection=True)\n",
|
|
216
|
+
"\n",
|
|
217
|
+
"# Mongo client for transformer MongoDB server.\n",
|
|
218
|
+
"transformer_mongo_client = pymongo.MongoClient(host=cfg.transformer_mongo_server_uri)\n",
|
|
219
|
+
"\n",
|
|
220
|
+
"# Perform sanity tests of those MongoDB clients' abilities to access their respective MongoDB servers.\n",
|
|
221
|
+
"with pymongo.timeout(3):\n",
|
|
222
|
+
" # Display the MongoDB server version (running on the \"origin\" Mongo server).\n",
|
|
223
|
+
" print(\"Origin Mongo server version: \" + origin_mongo_client.server_info()[\"version\"])\n",
|
|
224
|
+
"\n",
|
|
225
|
+
" # Sanity test: Ensure the origin database exists.\n",
|
|
226
|
+
" assert \"nmdc\" in origin_mongo_client.list_database_names(), \"Origin database does not exist.\"\n",
|
|
227
|
+
"\n",
|
|
228
|
+
" # Display the MongoDB server version (running on the \"transformer\" Mongo server).\n",
|
|
229
|
+
" print(\"Transformer Mongo server version: \" + transformer_mongo_client.server_info()[\"version\"])\n",
|
|
230
|
+
"\n",
|
|
231
|
+
" # Sanity test: Ensure the transformation database does not exist.\n",
|
|
232
|
+
" assert \"nmdc\" not in transformer_mongo_client.list_database_names(), \"Transformation database already exists.\""
|
|
233
|
+
]
|
|
234
|
+
},
|
|
235
|
+
{
|
|
236
|
+
"cell_type": "markdown",
|
|
237
|
+
"id": "3975ac24",
|
|
238
|
+
"metadata": {},
|
|
239
|
+
"source": [
|
|
240
|
+
"### Create JSON Schema validator\n",
|
|
241
|
+
"\n",
|
|
242
|
+
"In this step, you'll create a JSON Schema validator for the NMDC Schema."
|
|
243
|
+
]
|
|
244
|
+
},
|
|
245
|
+
{
|
|
246
|
+
"cell_type": "code",
|
|
247
|
+
"execution_count": null,
|
|
248
|
+
"id": "9e2dbb92",
|
|
249
|
+
"metadata": {},
|
|
250
|
+
"outputs": [],
|
|
251
|
+
"source": [
|
|
252
|
+
"nmdc_jsonschema: dict = get_nmdc_jsonschema_dict()\n",
|
|
253
|
+
"nmdc_jsonschema_validator = Draft7Validator(nmdc_jsonschema)\n",
|
|
254
|
+
"\n",
|
|
255
|
+
"# Perform sanity tests of the NMDC Schema dictionary and the JSON Schema validator.\n",
|
|
256
|
+
"# Reference: https://python-jsonschema.readthedocs.io/en/latest/api/jsonschema/protocols/#jsonschema.protocols.Validator.check_schema\n",
|
|
257
|
+
"print(\"NMDC Schema title: \" + nmdc_jsonschema[\"title\"])\n",
|
|
258
|
+
"print(\"NMDC Schema version: \" + nmdc_jsonschema[\"version\"])\n",
|
|
259
|
+
"\n",
|
|
260
|
+
"nmdc_jsonschema_validator.check_schema(nmdc_jsonschema) # raises exception if schema is invalid"
|
|
261
|
+
]
|
|
262
|
+
},
|
|
263
|
+
{
|
|
264
|
+
"cell_type": "markdown",
|
|
265
|
+
"id": "fd4994a0",
|
|
266
|
+
"metadata": {},
|
|
267
|
+
"source": [
|
|
268
|
+
"### Dump collections from the \"origin\" MongoDB server\n",
|
|
269
|
+
"\n",
|
|
270
|
+
"In this step, you'll use `mongodump` to dump the collections that will be impacted by this migration; from the \"origin\" MongoDB server.\n",
|
|
271
|
+
"\n",
|
|
272
|
+
"Since `mongodump` doesn't provide a CLI option that you can use to specify the collections you _want_ it to dump (unless you want it to dump only one collection), you can use a different CLI option to tell it all the collection you do _not_ want it to dump. \n",
|
|
273
|
+
"\n",
|
|
274
|
+
"The end result will be the same—there's just an extra step involved. That extra step is to generate an `--excludeCollection=\"{name}\"` CLI option for each collection that you do _not_ want it to dump; and then pass all those CLI options to the `mongodump` command."
|
|
275
|
+
]
|
|
276
|
+
},
|
|
277
|
+
{
|
|
278
|
+
"cell_type": "code",
|
|
279
|
+
"execution_count": null,
|
|
280
|
+
"id": "cf8fa1ca",
|
|
281
|
+
"metadata": {},
|
|
282
|
+
"outputs": [],
|
|
283
|
+
"source": [
|
|
284
|
+
"# Build a string containing zero or more `--excludeCollection=\"...\"` options, \n",
|
|
285
|
+
"# which can be included in a `mongodump` command.\n",
|
|
286
|
+
"all_collection_names: list[str] = origin_mongo_client[\"nmdc\"].list_collection_names()\n",
|
|
287
|
+
"non_agenda_collection_names = [name for name in all_collection_names if name not in COLLECTION_NAMES]\n",
|
|
288
|
+
"exclusion_options = [f\"--excludeCollection='{name}'\" for name in non_agenda_collection_names]\n",
|
|
289
|
+
"exclusion_options_str = \" \".join(exclusion_options) # separates each option with a space\n",
|
|
290
|
+
"print(exclusion_options_str)\n",
|
|
291
|
+
"\n",
|
|
292
|
+
"# Dump the not-excluded collections from the origin database.\n",
|
|
293
|
+
"!{mongodump} \\\n",
|
|
294
|
+
" --config=\"{cfg.origin_mongo_config_file_path}\" \\\n",
|
|
295
|
+
" --db=\"nmdc\" \\\n",
|
|
296
|
+
" --gzip \\\n",
|
|
297
|
+
" --out=\"{cfg.origin_dump_folder_path}\" \\\n",
|
|
298
|
+
" {exclusion_options_str}"
|
|
299
|
+
]
|
|
300
|
+
},
|
|
301
|
+
{
|
|
302
|
+
"cell_type": "markdown",
|
|
303
|
+
"id": "c3e3c9c4",
|
|
304
|
+
"metadata": {},
|
|
305
|
+
"source": [
|
|
306
|
+
"### Load the collections into the \"transformer\" MongoDB server\n",
|
|
307
|
+
"\n",
|
|
308
|
+
"In this step, you'll load the collections dumped from the \"origin\" MongoDB server, into the \"transformer\" MongoDB server.\n",
|
|
309
|
+
"\n",
|
|
310
|
+
"Since it's possible that the dump includes more collections than are on the agenda (due to someone creating a collection between the time you generated the exclusion list and the time you ran `mongodump`), you will use one or more of `mongorestore`'s `--nsInclude` CLI options to indicate which collections you want to load.\n",
|
|
311
|
+
"\n",
|
|
312
|
+
"So, we'll first generate the `--nsInclude=\"nmdc.{name}\"` CLI options; then include them in the `mongorestore` command that follows."
|
|
313
|
+
]
|
|
314
|
+
},
|
|
315
|
+
{
|
|
316
|
+
"cell_type": "code",
|
|
317
|
+
"execution_count": null,
|
|
318
|
+
"id": "418571c5",
|
|
319
|
+
"metadata": {},
|
|
320
|
+
"outputs": [],
|
|
321
|
+
"source": [
|
|
322
|
+
"# Build a string containing zero or more `--nsInclude=\"...\"` options, \n",
|
|
323
|
+
"# which can be included in a `mongorestore` command.\n",
|
|
324
|
+
"inclusion_options = [f\"--nsInclude='nmdc.{name}'\" for name in COLLECTION_NAMES]\n",
|
|
325
|
+
"inclusion_options_str = \" \".join(inclusion_options) # separates each option with a space\n",
|
|
326
|
+
"print(inclusion_options_str)\n",
|
|
327
|
+
"\n",
|
|
328
|
+
"# Restore the dumped collections to the transformer MongoDB server.\n",
|
|
329
|
+
"!{mongorestore} \\\n",
|
|
330
|
+
" --config=\"{cfg.transformer_mongo_config_file_path}\" \\\n",
|
|
331
|
+
" --gzip \\\n",
|
|
332
|
+
" --drop \\\n",
|
|
333
|
+
" --preserveUUID \\\n",
|
|
334
|
+
" --dir=\"{cfg.origin_dump_folder_path}\" \\\n",
|
|
335
|
+
" {inclusion_options_str}"
|
|
336
|
+
]
|
|
337
|
+
},
|
|
338
|
+
{
|
|
339
|
+
"cell_type": "markdown",
|
|
340
|
+
"id": "4c090068",
|
|
341
|
+
"metadata": {},
|
|
342
|
+
"source": [
|
|
343
|
+
"### Transform the collections within the \"transformer\" MongoDB server\n",
|
|
344
|
+
"\n",
|
|
345
|
+
"Now that the transformer database contains a copy of each collection on the agenda, you can freely transform those copies. **The \"origin\" database is not involved with this step.**\n",
|
|
346
|
+
"\n",
|
|
347
|
+
"The database transformation functions are defined in the `nmdc-schema` Python package installed earlier.\n",
|
|
348
|
+
"\n",
|
|
349
|
+
"> Note: This step also includes validation. Reference: https://github.com/microbiomedata/nmdc-runtime/blob/main/metadata-translation/src/bin/validate_json.py"
|
|
350
|
+
]
|
|
351
|
+
},
|
|
352
|
+
{
|
|
353
|
+
"cell_type": "code",
|
|
354
|
+
"execution_count": null,
|
|
355
|
+
"id": "05869340",
|
|
356
|
+
"metadata": {},
|
|
357
|
+
"outputs": [],
|
|
358
|
+
"source": [
|
|
359
|
+
"# Instantiate a MongoAdapter bound to the transformer database.\n",
|
|
360
|
+
"adapter = MongoAdapter(database=transformer_mongo_client[\"nmdc\"])\n",
|
|
361
|
+
"\n",
|
|
362
|
+
"# Instantiate a Migrator bound to that adapter.\n",
|
|
363
|
+
"migrator = Migrator(adapter=adapter)\n",
|
|
364
|
+
"\n",
|
|
365
|
+
"# Execute the Migrator's `upgrade` method to perform the migration.\n",
|
|
366
|
+
"migrator.upgrade()"
|
|
367
|
+
]
|
|
368
|
+
},
|
|
369
|
+
{
|
|
370
|
+
"cell_type": "markdown",
|
|
371
|
+
"id": "3edf77c7",
|
|
372
|
+
"metadata": {},
|
|
373
|
+
"source": [
|
|
374
|
+
"## Validate all documents in all collections involved\n",
|
|
375
|
+
"\n",
|
|
376
|
+
"> TODO: We could delegate this responsibility to the `Migrator` class; or have some `Migrator` methods accept a callback function to run on each document before and after transformation."
|
|
377
|
+
]
|
|
378
|
+
},
|
|
379
|
+
{
|
|
380
|
+
"cell_type": "code",
|
|
381
|
+
"execution_count": null,
|
|
382
|
+
"id": "db6e432d",
|
|
383
|
+
"metadata": {},
|
|
384
|
+
"outputs": [],
|
|
385
|
+
"source": [
|
|
386
|
+
"for collection_name in COLLECTION_NAMES:\n",
|
|
387
|
+
" collection = transformer_mongo_client[\"nmdc\"][collection_name]\n",
|
|
388
|
+
" for document in collection.find():\n",
|
|
389
|
+
" # Validate the transformed document.\n",
|
|
390
|
+
" #\n",
|
|
391
|
+
" # Reference: https://github.com/microbiomedata/nmdc-schema/blob/main/src/docs/schema-validation.md\n",
|
|
392
|
+
" #\n",
|
|
393
|
+
" # Note: Dictionaries originating as Mongo documents include a Mongo-generated key named `_id`. However,\n",
|
|
394
|
+
" # the NMDC Schema does not describe that key and, indeed, data validators consider dictionaries\n",
|
|
395
|
+
" # containing that key to be invalid with respect to the NMDC Schema. So, here, we validate a\n",
|
|
396
|
+
" # copy (i.e. a shallow copy) of the document that lacks that specific key.\n",
|
|
397
|
+
" #\n",
|
|
398
|
+
" # Note: `root_to_validate` is a dictionary having the shape: { \"some_collection_name\": [ some_document ] }\n",
|
|
399
|
+
" # Reference: https://docs.python.org/3/library/stdtypes.html#dict (see the \"type constructor\" section)\n",
|
|
400
|
+
" #\n",
|
|
401
|
+
" document_without_underscore_id_key = {key: value for key, value in document.items() if key != \"_id\"}\n",
|
|
402
|
+
" root_to_validate = dict([(collection_name, [document_without_underscore_id_key])])\n",
|
|
403
|
+
" nmdc_jsonschema_validator.validate(root_to_validate) # raises exception if invalid"
|
|
404
|
+
]
|
|
405
|
+
},
|
|
406
|
+
{
|
|
407
|
+
"cell_type": "markdown",
|
|
408
|
+
"id": "1e0c8891",
|
|
409
|
+
"metadata": {},
|
|
410
|
+
"source": [
|
|
411
|
+
"### Dump the collections from the \"transformer\" MongoDB server"
|
|
412
|
+
]
|
|
413
|
+
},
|
|
414
|
+
{
|
|
415
|
+
"cell_type": "code",
|
|
416
|
+
"execution_count": null,
|
|
417
|
+
"id": "ca49f61a",
|
|
418
|
+
"metadata": {},
|
|
419
|
+
"outputs": [],
|
|
420
|
+
"source": [
|
|
421
|
+
"# Dump the database from the transformer MongoDB server.\n",
|
|
422
|
+
"!{mongodump} \\\n",
|
|
423
|
+
" --config=\"{cfg.transformer_mongo_config_file_path}\" \\\n",
|
|
424
|
+
" --db=\"nmdc\" \\\n",
|
|
425
|
+
" --gzip \\\n",
|
|
426
|
+
" --out=\"{cfg.transformer_dump_folder_path}\" \\\n",
|
|
427
|
+
" {exclusion_options_str}"
|
|
428
|
+
]
|
|
429
|
+
},
|
|
430
|
+
{
|
|
431
|
+
"cell_type": "markdown",
|
|
432
|
+
"id": "d84bdc11",
|
|
433
|
+
"metadata": {},
|
|
434
|
+
"source": [
|
|
435
|
+
"### Load the collections into the \"origin\" MongoDB server\n",
|
|
436
|
+
"\n",
|
|
437
|
+
"In this step, you'll put the referenced collection(s) into the origin MongoDB server, replacing the original collection(s) that have the same name(s)."
|
|
438
|
+
]
|
|
439
|
+
},
|
|
440
|
+
{
|
|
441
|
+
"cell_type": "code",
|
|
442
|
+
"execution_count": null,
|
|
443
|
+
"id": "1dfbcf0a",
|
|
444
|
+
"metadata": {},
|
|
445
|
+
"outputs": [],
|
|
446
|
+
"source": [
|
|
447
|
+
"# Replace the same-named collection(s) on the origin server, with the transformed one(s).\n",
|
|
448
|
+
"!{mongorestore} \\\n",
|
|
449
|
+
" --config=\"{cfg.origin_mongo_config_file_path}\" \\\n",
|
|
450
|
+
" --gzip \\\n",
|
|
451
|
+
" --verbose \\\n",
|
|
452
|
+
" --dir=\"{cfg.transformer_dump_folder_path}\" \\\n",
|
|
453
|
+
" --drop \\\n",
|
|
454
|
+
" --preserveUUID \\\n",
|
|
455
|
+
" {inclusion_options_str}"
|
|
456
|
+
]
|
|
457
|
+
}
|
|
458
|
+
],
|
|
459
|
+
"metadata": {
|
|
460
|
+
"kernelspec": {
|
|
461
|
+
"display_name": "Python 3",
|
|
462
|
+
"language": "python",
|
|
463
|
+
"name": "python3"
|
|
464
|
+
},
|
|
465
|
+
"language_info": {
|
|
466
|
+
"codemirror_mode": {
|
|
467
|
+
"name": "ipython",
|
|
468
|
+
"version": 3
|
|
469
|
+
},
|
|
470
|
+
"file_extension": ".py",
|
|
471
|
+
"mimetype": "text/x-python",
|
|
472
|
+
"name": "python",
|
|
473
|
+
"nbconvert_exporter": "python",
|
|
474
|
+
"pygments_lexer": "ipython3",
|
|
475
|
+
"version": "3.10.12"
|
|
476
|
+
}
|
|
477
|
+
},
|
|
478
|
+
"nbformat": 4,
|
|
479
|
+
"nbformat_minor": 5
|
|
480
|
+
}
|
|
@@ -6,17 +6,25 @@ from fastapi import Depends
|
|
|
6
6
|
from fastapi.exceptions import HTTPException
|
|
7
7
|
from fastapi.openapi.models import OAuthFlows as OAuthFlowsModel
|
|
8
8
|
from fastapi.param_functions import Form
|
|
9
|
-
from fastapi.security import
|
|
9
|
+
from fastapi.security import (
|
|
10
|
+
OAuth2,
|
|
11
|
+
HTTPBasic,
|
|
12
|
+
HTTPBasicCredentials,
|
|
13
|
+
HTTPBearer,
|
|
14
|
+
HTTPAuthorizationCredentials,
|
|
15
|
+
)
|
|
10
16
|
from fastapi.security.utils import get_authorization_scheme_param
|
|
11
17
|
from jose import JWTError, jwt
|
|
12
18
|
from passlib.context import CryptContext
|
|
13
19
|
from pydantic import BaseModel
|
|
20
|
+
from starlette import status
|
|
14
21
|
from starlette.requests import Request
|
|
15
22
|
from starlette.status import HTTP_400_BAD_REQUEST, HTTP_401_UNAUTHORIZED
|
|
16
23
|
|
|
17
24
|
SECRET_KEY = os.getenv("JWT_SECRET_KEY")
|
|
18
25
|
ALGORITHM = "HS256"
|
|
19
|
-
|
|
26
|
+
ORCID_NMDC_CLIENT_ID = os.getenv("ORCID_NMDC_CLIENT_ID")
|
|
27
|
+
ORCID_NMDC_CLIENT_SECRET = os.getenv("ORCID_NMDC_CLIENT_SECRET")
|
|
20
28
|
|
|
21
29
|
# https://orcid.org/.well-known/openid-configuration
|
|
22
30
|
# XXX do we want to live-load this?
|
|
@@ -129,15 +137,24 @@ optional_oauth2_scheme = OAuth2PasswordOrClientCredentialsBearer(
|
|
|
129
137
|
tokenUrl="token", auto_error=False
|
|
130
138
|
)
|
|
131
139
|
|
|
140
|
+
bearer_scheme = HTTPBearer(scheme_name="bearerAuth", auto_error=False)
|
|
141
|
+
|
|
132
142
|
|
|
133
143
|
async def basic_credentials(req: Request):
|
|
134
144
|
return await HTTPBasic(auto_error=False)(req)
|
|
135
145
|
|
|
136
146
|
|
|
147
|
+
async def bearer_credentials(req: Request):
|
|
148
|
+
return await HTTPBearer(scheme_name="bearerAuth", auto_error=False)(req)
|
|
149
|
+
|
|
150
|
+
|
|
137
151
|
class OAuth2PasswordOrClientCredentialsRequestForm:
|
|
138
152
|
def __init__(
|
|
139
153
|
self,
|
|
140
154
|
basic_creds: Optional[HTTPBasicCredentials] = Depends(basic_credentials),
|
|
155
|
+
bearer_creds: Optional[HTTPAuthorizationCredentials] = Depends(
|
|
156
|
+
bearer_credentials
|
|
157
|
+
),
|
|
141
158
|
grant_type: str = Form(None, regex="^password$|^client_credentials$"),
|
|
142
159
|
username: Optional[str] = Form(None),
|
|
143
160
|
password: Optional[str] = Form(None),
|
|
@@ -145,14 +162,18 @@ class OAuth2PasswordOrClientCredentialsRequestForm:
|
|
|
145
162
|
client_id: Optional[str] = Form(None),
|
|
146
163
|
client_secret: Optional[str] = Form(None),
|
|
147
164
|
):
|
|
148
|
-
if
|
|
165
|
+
if bearer_creds:
|
|
166
|
+
self.grant_type = "client_credentials"
|
|
167
|
+
self.username, self.password = None, None
|
|
168
|
+
self.scopes = scope.split()
|
|
169
|
+
self.client_id = bearer_creds.credentials
|
|
170
|
+
self.client_secret = None
|
|
171
|
+
elif grant_type == "password" and (username is None or password is None):
|
|
149
172
|
raise HTTPException(
|
|
150
173
|
status_code=HTTP_400_BAD_REQUEST,
|
|
151
174
|
detail="grant_type password requires username and password",
|
|
152
175
|
)
|
|
153
|
-
|
|
154
|
-
client_id is None or client_secret is None
|
|
155
|
-
):
|
|
176
|
+
elif grant_type == "client_credentials" and (client_id is None):
|
|
156
177
|
if basic_creds:
|
|
157
178
|
client_id = basic_creds.username
|
|
158
179
|
client_secret = basic_creds.password
|