nci-cidc-api-modules 1.2.35__tar.gz → 1.2.36__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.
- {nci_cidc_api_modules-1.2.35/nci_cidc_api_modules.egg-info → nci_cidc_api_modules-1.2.36}/PKG-INFO +9 -1
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/models.py +10 -2
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/shared/assay_handling.py +1 -1
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/shared/auth.py +5 -5
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/shared/file_handling.py +3 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/shared/gcloud_client.py +4 -2
- nci_cidc_api_modules-1.2.36/cidc_api/shared/utils.py +19 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36/nci_cidc_api_modules.egg-info}/PKG-INFO +9 -1
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/nci_cidc_api_modules.egg-info/requires.txt +8 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/requirements.modules.txt +14 -0
- nci_cidc_api_modules-1.2.35/cidc_api/shared/utils.py +0 -11
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/LICENSE +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/MANIFEST.in +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/README.md +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/config/__init__.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/config/db.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/config/logging.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/config/secrets.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/config/settings.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/__init__.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/data.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/db/base_orm.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/db/stage2/__init__.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/db/stage2/additional_treatment_orm.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/db/stage2/administrative_person_orm.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/db/stage2/administrative_role_assignment_orm.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/db/stage2/adverse_event_orm.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/db/stage2/arm_orm.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/db/stage2/baseline_clinical_assessment_orm.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/db/stage2/cohort_orm.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/db/stage2/comorbidity_orm.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/db/stage2/consent_group_orm.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/db/stage2/contact_orm.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/db/stage2/demographic_orm.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/db/stage2/disease_orm.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/db/stage2/exposure_orm.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/db/stage2/file_orm.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/db/stage2/gvhd_diagnosis_acute_orm.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/db/stage2/gvhd_diagnosis_chronic_orm.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/db/stage2/gvhd_organ_acute_orm.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/db/stage2/gvhd_organ_chronic_orm.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/db/stage2/institution_orm.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/db/stage2/medical_history_orm.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/db/stage2/other_clinical_endpoint_orm.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/db/stage2/other_malignancy_orm.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/db/stage2/participant_orm.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/db/stage2/prior_treatment_orm.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/db/stage2/publication_orm.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/db/stage2/radiotherapy_dose_orm.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/db/stage2/response_by_system_orm.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/db/stage2/response_orm.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/db/stage2/shipment_orm.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/db/stage2/shipment_specimen_orm.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/db/stage2/specimen_orm.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/db/stage2/stem_cell_transplant_orm.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/db/stage2/surgery_orm.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/db/stage2/therapy_agent_dose_orm.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/db/stage2/treatment_orm.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/db/stage2/trial_orm.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/files/__init__.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/files/details.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/files/facets.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/migrations.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/pydantic/stage2/__init__.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/pydantic/stage2/additional_treatment.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/pydantic/stage2/administrative_person.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/pydantic/stage2/administrative_role_assignment.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/pydantic/stage2/adverse_event.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/pydantic/stage2/arm.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/pydantic/stage2/base.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/pydantic/stage2/baseline_clinical_assessment.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/pydantic/stage2/cohort.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/pydantic/stage2/comorbidity.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/pydantic/stage2/consent_group.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/pydantic/stage2/contact.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/pydantic/stage2/demographic.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/pydantic/stage2/disease.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/pydantic/stage2/exposure.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/pydantic/stage2/file.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/pydantic/stage2/gvhd_diagnosis_acute.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/pydantic/stage2/gvhd_diagnosis_chronic.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/pydantic/stage2/gvhd_organ_acute.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/pydantic/stage2/gvhd_organ_chronic.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/pydantic/stage2/institution.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/pydantic/stage2/medical_history.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/pydantic/stage2/other_clinical_endpoint.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/pydantic/stage2/other_malignancy.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/pydantic/stage2/participant.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/pydantic/stage2/prior_treatment.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/pydantic/stage2/publication.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/pydantic/stage2/radiotherapy_dose.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/pydantic/stage2/response.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/pydantic/stage2/response_by_system.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/pydantic/stage2/shipment.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/pydantic/stage2/shipment_specimen.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/pydantic/stage2/specimen.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/pydantic/stage2/stem_cell_transplant.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/pydantic/stage2/surgery.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/pydantic/stage2/therapy_agent_dose.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/pydantic/stage2/treatment.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/pydantic/stage2/trial.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/schemas.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/types.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/reference/ctcae.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/reference/gvhd.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/reference/icd10cm.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/reference/icdo3.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/reference/uberon.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/shared/__init__.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/shared/email_layout.html +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/shared/emails.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/shared/jose.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/shared/rest_utils.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/nci_cidc_api_modules.egg-info/SOURCES.txt +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/nci_cidc_api_modules.egg-info/dependency_links.txt +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/nci_cidc_api_modules.egg-info/not-zip-safe +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/nci_cidc_api_modules.egg-info/top_level.txt +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/pyproject.toml +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/setup.cfg +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/setup.py +0 -0
- {nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/tests/test_api.py +0 -0
{nci_cidc_api_modules-1.2.35/nci_cidc_api_modules.egg-info → nci_cidc_api_modules-1.2.36}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: nci_cidc_api_modules
|
|
3
|
-
Version: 1.2.
|
|
3
|
+
Version: 1.2.36
|
|
4
4
|
Summary: SQLAlchemy data models and configuration tools used in the NCI CIDC API
|
|
5
5
|
Home-page: https://github.com/NCI-CIDC/cidc-api-gae
|
|
6
6
|
License: MIT license
|
|
@@ -33,6 +33,14 @@ Requires-Dist: requests>=2.32.5
|
|
|
33
33
|
Requires-Dist: sqlalchemy>=2.0.44
|
|
34
34
|
Requires-Dist: sqlalchemy-mixins~=2.0.5
|
|
35
35
|
Requires-Dist: werkzeug>=3.1.4
|
|
36
|
+
Requires-Dist: opentelemetry-api>=1.38.0
|
|
37
|
+
Requires-Dist: opentelemetry-exporter-otlp-proto-grpc>=1.38.0
|
|
38
|
+
Requires-Dist: opentelemetry-sdk>=1.38.0
|
|
39
|
+
Requires-Dist: opentelemetry-instrumentation-flask>=0.59b0
|
|
40
|
+
Requires-Dist: opentelemetry-instrumentation-requests>=0.59b0
|
|
41
|
+
Requires-Dist: opentelemetry-instrumentation-sqlalchemy>=0.59b0
|
|
42
|
+
Requires-Dist: opentelemetry-exporter-gcp-trace>=1.11.0
|
|
43
|
+
Requires-Dist: opentelemetry-propagator-gcp>=1.11.0
|
|
36
44
|
Requires-Dist: nci-cidc-schemas==0.28.10
|
|
37
45
|
Dynamic: description
|
|
38
46
|
Dynamic: description-content-type
|
|
@@ -35,7 +35,8 @@ __all__ = [
|
|
|
35
35
|
"ADMIN_FILE_CATEGORIES",
|
|
36
36
|
"FINAL_JOB_STATUS",
|
|
37
37
|
"INGESTION_JOB_STATUSES",
|
|
38
|
-
"
|
|
38
|
+
"ASSAY_JOB_COLORS",
|
|
39
|
+
"CLINICAL_JOB_COLORS",
|
|
39
40
|
]
|
|
40
41
|
|
|
41
42
|
import hashlib
|
|
@@ -3436,7 +3437,7 @@ INGESTION_JOB_STATUSES = [
|
|
|
3436
3437
|
]
|
|
3437
3438
|
|
|
3438
3439
|
# Business decision to pass hex codes from the backend though that should be done by the front end...
|
|
3439
|
-
|
|
3440
|
+
CLINICAL_JOB_COLORS = {
|
|
3440
3441
|
"DRAFT": "",
|
|
3441
3442
|
"INITIAL SUBMISSION": "#ACCAD7",
|
|
3442
3443
|
"VALIDATION REVIEW": "#DABE90",
|
|
@@ -3444,6 +3445,13 @@ INGESTION_JOB_COLORS = {
|
|
|
3444
3445
|
"INGESTION": "#8FCEC7",
|
|
3445
3446
|
"PUBLISHED": "#90D9E6",
|
|
3446
3447
|
}
|
|
3448
|
+
ASSAY_JOB_COLORS = {
|
|
3449
|
+
"INITIAL SUBMISSION": "#43807E",
|
|
3450
|
+
"VALIDATION REVIEW": "#906F3F",
|
|
3451
|
+
"REVISION SUBMISSION": "#95358A",
|
|
3452
|
+
"INGESTION": "#542C88",
|
|
3453
|
+
"PUBLISHED": "#1C81A0",
|
|
3454
|
+
}
|
|
3447
3455
|
# TODO If have "CANCELLED" concept or other final status, add here
|
|
3448
3456
|
FINAL_JOB_STATUS = ["PUBLISHED"]
|
|
3449
3457
|
TRIAL_APPENDIX_A_CELL_THAT_ENDS_THE_HEADER = "Data Category"
|
{nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/shared/assay_handling.py
RENAMED
|
@@ -53,7 +53,7 @@ def prepare_assay_job(trial_id: str, assay_type: str, batch_id: str) -> tuple[st
|
|
|
53
53
|
|
|
54
54
|
# Create or retrieve intake bucket corresponding to the trial
|
|
55
55
|
intake_bucket = gcloud_client.create_intake_bucket(get_current_user().email, trial_id=trial_id)
|
|
56
|
-
gcs_path = f"{intake_bucket.name}/{
|
|
56
|
+
gcs_path = f"{intake_bucket.name}/{assay_type}/{submission_id}"
|
|
57
57
|
|
|
58
58
|
return submission_id, job_status, error_status, start_date, version, gcs_path
|
|
59
59
|
|
|
@@ -1,16 +1,14 @@
|
|
|
1
1
|
from functools import wraps
|
|
2
2
|
from typing import List
|
|
3
3
|
|
|
4
|
-
from packaging import version
|
|
5
|
-
|
|
6
4
|
from flask import g, request, current_app as app, Flask
|
|
5
|
+
from packaging import version
|
|
7
6
|
from werkzeug.exceptions import Unauthorized, BadRequest, PreconditionFailed
|
|
8
7
|
|
|
9
|
-
from ..models import Users, UserSchema
|
|
10
|
-
|
|
11
8
|
from ..config.logging import get_logger
|
|
12
|
-
|
|
9
|
+
from ..models import Users, UserSchema
|
|
13
10
|
from ..shared.jose import decode_id_token
|
|
11
|
+
from ..telemetry import trace_
|
|
14
12
|
|
|
15
13
|
logger = get_logger(__name__)
|
|
16
14
|
|
|
@@ -144,6 +142,7 @@ def get_current_user() -> Users:
|
|
|
144
142
|
_user_schema = UserSchema()
|
|
145
143
|
|
|
146
144
|
|
|
145
|
+
@trace_()
|
|
147
146
|
def authenticate() -> Users:
|
|
148
147
|
id_token = _extract_token()
|
|
149
148
|
token_payload = decode_id_token(id_token)
|
|
@@ -172,6 +171,7 @@ def _extract_token() -> str:
|
|
|
172
171
|
|
|
173
172
|
|
|
174
173
|
### Authorization logic ###
|
|
174
|
+
@trace_()
|
|
175
175
|
def authorize(user: Users, allowed_roles: List[str], resource: str, method: str) -> bool:
|
|
176
176
|
"""Check if the current user is authorized to act on the current request's resource.
|
|
177
177
|
Raises Unauthorized
|
{nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/shared/file_handling.py
RENAMED
|
@@ -10,10 +10,12 @@ from ..config.settings import GOOGLE_CLINICAL_DATA_BUCKET
|
|
|
10
10
|
from ..models import PreprocessedFiles, TRIAL_APPENDIX_A_CELL_THAT_ENDS_THE_HEADER
|
|
11
11
|
from ..shared.auth import get_current_user
|
|
12
12
|
from ..shared.gcloud_client import upload_file_to_gcs, move_gcs_file
|
|
13
|
+
from ..telemetry import trace_
|
|
13
14
|
|
|
14
15
|
logger = get_logger(__name__)
|
|
15
16
|
|
|
16
17
|
|
|
18
|
+
@trace_()
|
|
17
19
|
def set_current_file(
|
|
18
20
|
file: FileStorage, file_category: str, gcs_folder: str, session: Session, uploader_email: str, job_id: int = None
|
|
19
21
|
) -> PreprocessedFiles:
|
|
@@ -26,6 +28,7 @@ def set_current_file(
|
|
|
26
28
|
return latest_file
|
|
27
29
|
|
|
28
30
|
|
|
31
|
+
@trace_()
|
|
29
32
|
def create_file(
|
|
30
33
|
file: FileStorage,
|
|
31
34
|
gcs_folder: str,
|
{nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/shared/gcloud_client.py
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"""Utilities for interacting with the Google Cloud Platform APIs."""
|
|
2
2
|
|
|
3
|
-
# pylint: disable=logging-fstring-interpolation,too-many-lines
|
|
3
|
+
# pylint: disable=logging-fstring-interpolation,too-many-lines, broad-exception-raised
|
|
4
4
|
|
|
5
5
|
import base64
|
|
6
6
|
import datetime
|
|
@@ -634,6 +634,7 @@ def _build_trial_upload_prefixes(
|
|
|
634
634
|
trial_set: Set[str] = set()
|
|
635
635
|
upload_set: Set[str] = set()
|
|
636
636
|
if not trial_id:
|
|
637
|
+
# import is here becasue of circular import
|
|
637
638
|
from ..models.models import TrialMetadata
|
|
638
639
|
|
|
639
640
|
trial_set = {str(t.trial_id) for t in session.query(TrialMetadata).add_columns(TrialMetadata.trial_id)}
|
|
@@ -940,7 +941,8 @@ def get_signed_url(
|
|
|
940
941
|
|
|
941
942
|
def _encode_and_publish(content: str, topic: str) -> Future:
|
|
942
943
|
"""Convert `content` to bytes and publish it to `topic`."""
|
|
943
|
-
|
|
944
|
+
publisher_options = pubsub.types.PublisherOptions(enable_open_telemetry_tracing=ENV == "dev-int")
|
|
945
|
+
pubsub_publisher = pubsub.PublisherClient(publisher_options=publisher_options)
|
|
944
946
|
topic = pubsub_publisher.topic_path(GOOGLE_CLOUD_PROJECT, topic)
|
|
945
947
|
data = bytes(content, "utf-8")
|
|
946
948
|
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
from cidc_api.telemetry import trace_
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
def _stripper(x):
|
|
5
|
+
if x and isinstance(x, str):
|
|
6
|
+
return x.strip()
|
|
7
|
+
else:
|
|
8
|
+
return x
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
@trace_("sheet")
|
|
12
|
+
def strip_whitespaces(df, sheet=None):
|
|
13
|
+
if sheet:
|
|
14
|
+
df = df[sheet]
|
|
15
|
+
|
|
16
|
+
df.rename(columns=_stripper, inplace=True)
|
|
17
|
+
df = df.map(_stripper)
|
|
18
|
+
|
|
19
|
+
return df
|
{nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36/nci_cidc_api_modules.egg-info}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: nci_cidc_api_modules
|
|
3
|
-
Version: 1.2.
|
|
3
|
+
Version: 1.2.36
|
|
4
4
|
Summary: SQLAlchemy data models and configuration tools used in the NCI CIDC API
|
|
5
5
|
Home-page: https://github.com/NCI-CIDC/cidc-api-gae
|
|
6
6
|
License: MIT license
|
|
@@ -33,6 +33,14 @@ Requires-Dist: requests>=2.32.5
|
|
|
33
33
|
Requires-Dist: sqlalchemy>=2.0.44
|
|
34
34
|
Requires-Dist: sqlalchemy-mixins~=2.0.5
|
|
35
35
|
Requires-Dist: werkzeug>=3.1.4
|
|
36
|
+
Requires-Dist: opentelemetry-api>=1.38.0
|
|
37
|
+
Requires-Dist: opentelemetry-exporter-otlp-proto-grpc>=1.38.0
|
|
38
|
+
Requires-Dist: opentelemetry-sdk>=1.38.0
|
|
39
|
+
Requires-Dist: opentelemetry-instrumentation-flask>=0.59b0
|
|
40
|
+
Requires-Dist: opentelemetry-instrumentation-requests>=0.59b0
|
|
41
|
+
Requires-Dist: opentelemetry-instrumentation-sqlalchemy>=0.59b0
|
|
42
|
+
Requires-Dist: opentelemetry-exporter-gcp-trace>=1.11.0
|
|
43
|
+
Requires-Dist: opentelemetry-propagator-gcp>=1.11.0
|
|
36
44
|
Requires-Dist: nci-cidc-schemas==0.28.10
|
|
37
45
|
Dynamic: description
|
|
38
46
|
Dynamic: description-content-type
|
|
@@ -24,4 +24,12 @@ requests>=2.32.5
|
|
|
24
24
|
sqlalchemy>=2.0.44
|
|
25
25
|
sqlalchemy-mixins~=2.0.5
|
|
26
26
|
werkzeug>=3.1.4
|
|
27
|
+
opentelemetry-api>=1.38.0
|
|
28
|
+
opentelemetry-exporter-otlp-proto-grpc>=1.38.0
|
|
29
|
+
opentelemetry-sdk>=1.38.0
|
|
30
|
+
opentelemetry-instrumentation-flask>=0.59b0
|
|
31
|
+
opentelemetry-instrumentation-requests>=0.59b0
|
|
32
|
+
opentelemetry-instrumentation-sqlalchemy>=0.59b0
|
|
33
|
+
opentelemetry-exporter-gcp-trace>=1.11.0
|
|
34
|
+
opentelemetry-propagator-gcp>=1.11.0
|
|
27
35
|
nci-cidc-schemas==0.28.10
|
|
@@ -25,5 +25,19 @@ sqlalchemy>=2.0.44
|
|
|
25
25
|
sqlalchemy-mixins~=2.0.5
|
|
26
26
|
werkzeug>=3.1.4
|
|
27
27
|
|
|
28
|
+
# open telemetry sdk
|
|
29
|
+
opentelemetry-api >= 1.38.0
|
|
30
|
+
opentelemetry-exporter-otlp-proto-grpc >= 1.38.0
|
|
31
|
+
opentelemetry-sdk >= 1.38.0
|
|
32
|
+
|
|
33
|
+
# open telemetry instrumentation
|
|
34
|
+
opentelemetry-instrumentation-flask >= 0.59b0
|
|
35
|
+
opentelemetry-instrumentation-requests >= 0.59b0
|
|
36
|
+
opentelemetry-instrumentation-sqlalchemy >= 0.59b0
|
|
37
|
+
|
|
38
|
+
# open telemetry gcp
|
|
39
|
+
opentelemetry-exporter-gcp-trace >= 1.11.0
|
|
40
|
+
opentelemetry-propagator-gcp >= 1.11.0
|
|
41
|
+
|
|
28
42
|
# cidc deps
|
|
29
43
|
nci-cidc-schemas==0.28.10
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/db/stage2/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/db/stage2/arm_orm.py
RENAMED
|
File without changes
|
|
File without changes
|
{nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/db/stage2/cohort_orm.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/db/stage2/contact_orm.py
RENAMED
|
File without changes
|
|
File without changes
|
{nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/db/stage2/disease_orm.py
RENAMED
|
File without changes
|
|
File without changes
|
{nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/db/stage2/file_orm.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/db/stage2/surgery_orm.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/db/stage2/trial_orm.py
RENAMED
|
File without changes
|
{nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/files/__init__.py
RENAMED
|
File without changes
|
{nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/files/details.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/pydantic/stage2/arm.py
RENAMED
|
File without changes
|
{nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/pydantic/stage2/base.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/pydantic/stage2/file.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/models/pydantic/stage2/trial.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{nci_cidc_api_modules-1.2.35 → nci_cidc_api_modules-1.2.36}/cidc_api/shared/email_layout.html
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|