dxpy 0.371.0__tar.gz → 0.373.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.
- {dxpy-0.371.0 → dxpy-0.373.0}/PKG-INFO +1 -1
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/api.py +8 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/bindings/dxproject.py +6 -1
- dxpy-0.373.0/dxpy/nextflow/awscli_assets.json +8 -0
- dxpy-0.373.0/dxpy/nextflow/awscli_assets.staging.json +8 -0
- dxpy-0.373.0/dxpy/nextflow/nextaur_assets.json +8 -0
- dxpy-0.373.0/dxpy/nextflow/nextaur_assets.staging.json +8 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/nextflow/nextflow_utils.py +11 -7
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/scripts/dx.py +3 -1
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/templating/templates/nextflow/dxapp.json +1 -2
- dxpy-0.373.0/dxpy/toolkit_version.py +1 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/utils/describe.py +3 -1
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy.egg-info/PKG-INFO +1 -1
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy.egg-info/SOURCES.txt +3 -0
- dxpy-0.373.0/scripts/dx-jobutil-get-identity-token +69 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/test/test_dx_bash_helpers.py +508 -199
- {dxpy-0.371.0 → dxpy-0.373.0}/test/test_dxpy.py +0 -1
- dxpy-0.371.0/dxpy/nextflow/nextaur_assets.json +0 -8
- dxpy-0.371.0/dxpy/nextflow/nextaur_assets.staging.json +0 -8
- dxpy-0.371.0/dxpy/toolkit_version.py +0 -1
- {dxpy-0.371.0 → dxpy-0.373.0}/MANIFEST.in +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/Readme.md +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/__init__.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/app_builder.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/app_categories.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/asset_builder.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/bindings/__init__.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/bindings/apollo/__init__.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/bindings/apollo/cmd_line_options_validator.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/bindings/apollo/data_transformations.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/bindings/apollo/dataset.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/bindings/apollo/json_validation_by_schema.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/bindings/apollo/schemas/__init__.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/bindings/apollo/schemas/assay_filtering_conditions.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/bindings/apollo/schemas/assay_filtering_json_schemas.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/bindings/apollo/schemas/input_arguments_validation_schemas.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/bindings/apollo/vizclient.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/bindings/apollo/vizserver_filters_from_json_parser.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/bindings/apollo/vizserver_payload_builder.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/bindings/auth.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/bindings/download_all_inputs.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/bindings/dxanalysis.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/bindings/dxapp.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/bindings/dxapp_container_functions.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/bindings/dxapplet.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/bindings/dxdatabase.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/bindings/dxdatabase_functions.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/bindings/dxdataobject_functions.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/bindings/dxfile.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/bindings/dxfile_functions.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/bindings/dxglobalworkflow.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/bindings/dxjob.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/bindings/dxrecord.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/bindings/dxworkflow.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/bindings/mount_all_inputs.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/bindings/search.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/cli/__init__.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/cli/cp.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/cli/dataset_utilities.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/cli/download.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/cli/exec_io.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/cli/help_messages.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/cli/org.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/cli/output_handling.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/cli/parsers.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/cli/workflow.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/compat.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/dx_extract_utils/Homo_sapiens_genes_manifest.json +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/dx_extract_utils/Homo_sapiens_genes_manifest_staging.json +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/dx_extract_utils/Homo_sapiens_genes_manifest_staging_vep.json +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/dx_extract_utils/Homo_sapiens_genes_manifest_vep.json +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/dx_extract_utils/__init__.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/dx_extract_utils/cohort_filter_payload.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/dx_extract_utils/column_conditions.json +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/dx_extract_utils/column_conversion.json +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/dx_extract_utils/filter_to_payload.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/dx_extract_utils/input_validation.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/dx_extract_utils/input_validation_somatic.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/dx_extract_utils/retrieve_allele_schema.json +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/dx_extract_utils/retrieve_annotation_schema.json +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/dx_extract_utils/retrieve_bins.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/dx_extract_utils/retrieve_genotype_schema.json +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/dx_extract_utils/return_columns_allele.json +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/dx_extract_utils/return_columns_annotation.json +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/dx_extract_utils/return_columns_genotype.json +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/dx_extract_utils/somatic_filter_payload.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/dxlog.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/exceptions.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/executable_builder.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/nextflow/ImageRef.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/nextflow/ImageRefFactory.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/nextflow/__init__.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/nextflow/collect_images.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/nextflow/nextflow_assets.json +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/nextflow/nextflow_assets.staging.json +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/nextflow/nextflow_builder.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/nextflow/nextflow_templates.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/packages/__init__.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/scripts/__init__.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/scripts/dx_app_wizard.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/scripts/dx_build_app.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/scripts/dx_build_applet.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/ssh_tunnel_app_support.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/system_requirements.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/templating/__init__.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/templating/bash.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/templating/python.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/templating/templates/Readme.md +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/templating/templates/bash/basic/dxapp.json +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/templating/templates/bash/basic/src/code.sh +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/templating/templates/bash/parallelized/dxapp.json +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/templating/templates/bash/parallelized/src/code.sh +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/templating/templates/bash/scatter-process-gather/dxapp.json +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/templating/templates/bash/scatter-process-gather/src/code.sh +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/templating/templates/nextflow/src/nextflow.sh +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/templating/templates/python/basic/dxapp.json +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/templating/templates/python/basic/src/code.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/templating/templates/python/basic/test/test.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/templating/templates/python/parallelized/dxapp.json +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/templating/templates/python/parallelized/src/code.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/templating/templates/python/parallelized/test/test.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/templating/templates/python/scatter-process-gather/dxapp.json +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/templating/templates/python/scatter-process-gather/src/code.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/templating/templates/python/scatter-process-gather/test/test.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/templating/utils.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/utils/__init__.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/utils/batch_utils.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/utils/completer.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/utils/config.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/utils/exec_utils.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/utils/executable_unbuilder.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/utils/file_handle.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/utils/file_load_utils.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/utils/genomic_utils.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/utils/job_log_client.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/utils/local_exec_utils.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/utils/pathmatch.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/utils/pretty_print.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/utils/printing.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/utils/resolver.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/utils/spelling_corrector.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/utils/version.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy/workflow_builder.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy.egg-info/dependency_links.txt +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy.egg-info/entry_points.txt +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy.egg-info/not-zip-safe +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy.egg-info/requires.txt +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/dxpy.egg-info/top_level.txt +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/requirements.txt +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/requirements_setuptools.txt +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/requirements_test.txt +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/scripts/dx-clone-asset +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/scripts/dx-docker +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/scripts/dx-download-all-inputs +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/scripts/dx-fetch-bundled-depends +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/scripts/dx-generate-dxapp +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/scripts/dx-jobutil-add-output +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/scripts/dx-jobutil-dxlink +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/scripts/dx-jobutil-new-job +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/scripts/dx-jobutil-parse-link +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/scripts/dx-jobutil-report-error +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/scripts/dx-log-stream +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/scripts/dx-mount-all-inputs +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/scripts/dx-notebook-reconnect +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/scripts/dx-print-bash-vars +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/scripts/dx-upload-all-outputs +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/setup.cfg +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/setup.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/test/test_batch.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/test/test_create_cohort.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/test/test_describe.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/test/test_dx-docker.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/test/test_dx_app_wizard.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/test/test_dx_completion.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/test/test_dx_symlink.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/test/test_dxabs.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/test/test_dxasset.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/test/test_dxclient.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/test/test_dxpy_utils.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/test/test_dxunpack.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/test/test_extract_assay.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/test/test_extract_dataset.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/test/test_extract_expression.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/test/test_extract_somatic.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/test/test_nextflow.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/test/test_nextflow_ImageRef.py +0 -0
- {dxpy-0.371.0 → dxpy-0.373.0}/test/test_nextflow_ImageRefFactory.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: dxpy
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.373.0
|
|
4
4
|
Summary: DNAnexus Platform API bindings for Python
|
|
5
5
|
Home-page: https://github.com/dnanexus/dx-toolkit
|
|
6
6
|
Author: Aleksandra Zalcman, Andrey Kislyuk, Anurag Biyani, Geet Duggal, Katherine Lai, Kurt Jensen, Marek Hrvol, Ohad Rodeh, Phil Sung
|
|
@@ -961,6 +961,14 @@ def job_update(object_id, input_params={}, always_retry=True, **kwargs):
|
|
|
961
961
|
"""
|
|
962
962
|
return DXHTTPRequest('/%s/update' % object_id, input_params, always_retry=always_retry, **kwargs)
|
|
963
963
|
|
|
964
|
+
def job_get_identity_token(object_id, input_params={}, always_retry=True, **kwargs):
|
|
965
|
+
"""
|
|
966
|
+
Invokes the /job-xxxx/getIdentityToken API method.
|
|
967
|
+
|
|
968
|
+
For more info, see: https://documentation.dnanexus.com/developer/api/running-analyses/applets-and-entry-points#api-method-job-xxxx-getIdentityToken
|
|
969
|
+
"""
|
|
970
|
+
return DXHTTPRequest('/%s/getIdentityToken' % object_id, input_params, always_retry=always_retry, **kwargs)
|
|
971
|
+
|
|
964
972
|
def job_new(input_params={}, always_retry=True, **kwargs):
|
|
965
973
|
"""
|
|
966
974
|
Invokes the /job/new API method.
|
|
@@ -284,7 +284,7 @@ class DXProject(DXContainer):
|
|
|
284
284
|
def new(self, name, summary=None, description=None, region=None, protected=None,
|
|
285
285
|
restricted=None, download_restricted=None, contains_phi=None,
|
|
286
286
|
tags=None, properties=None, bill_to=None, database_ui_view_only=None,
|
|
287
|
-
external_upload_restricted=None,
|
|
287
|
+
external_upload_restricted=None, default_symlink=None,
|
|
288
288
|
**kwargs):
|
|
289
289
|
"""
|
|
290
290
|
:param name: The name of the project
|
|
@@ -313,6 +313,8 @@ class DXProject(DXContainer):
|
|
|
313
313
|
:type database_ui_view_only: boolean
|
|
314
314
|
:param external_upload_restricted: If provided, whether project members can upload data to project from external sources, e.g. outside of job
|
|
315
315
|
:type external_upload_restricted: boolean
|
|
316
|
+
:param default_symlink: If provided, the details needed to have writable symlinks in the project. Dict must include drive, container, and optional prefix.
|
|
317
|
+
: type default_symlink: dict
|
|
316
318
|
|
|
317
319
|
Creates a new project. Initially only the user performing this action
|
|
318
320
|
will be in the permissions/member list, with ADMINISTER access.
|
|
@@ -321,6 +323,7 @@ class DXProject(DXContainer):
|
|
|
321
323
|
method for more info.
|
|
322
324
|
|
|
323
325
|
"""
|
|
326
|
+
|
|
324
327
|
input_hash = {}
|
|
325
328
|
input_hash["name"] = name
|
|
326
329
|
if summary is not None:
|
|
@@ -347,6 +350,8 @@ class DXProject(DXContainer):
|
|
|
347
350
|
input_hash["tags"] = tags
|
|
348
351
|
if properties is not None:
|
|
349
352
|
input_hash["properties"] = properties
|
|
353
|
+
if default_symlink is not None:
|
|
354
|
+
input_hash["defaultSymlink"] = default_symlink
|
|
350
355
|
|
|
351
356
|
self.set_id(dxpy.api.project_new(input_hash, **kwargs)["id"])
|
|
352
357
|
self._desc = {}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{
|
|
2
|
+
"aws:ap-southeast-2": "record-Ggjx0YQ5qP61v7Q7Qq4QQ2f7",
|
|
3
|
+
"aws:eu-central-1": "record-Ggjx2Jj4jbKyKxGXYfZgpJYy",
|
|
4
|
+
"aws:eu-west-2-g": "record-Ggjx4qBKYFQ35Gp87ybKV28Z",
|
|
5
|
+
"aws:us-east-1": "record-GgjvvP00GFJ5JjG1gX3Jbx6j",
|
|
6
|
+
"azure:westeurope": "record-Ggjx8Z8BxzQqXY9Fv4vXBqpj",
|
|
7
|
+
"azure:westus": "record-GgjxGf89ZB67Bz7f3815qk11"
|
|
8
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{
|
|
2
|
+
"aws:ap-southeast-2": "record-Ggjp4Fj50y9Vp27Fx8gB65fY",
|
|
3
|
+
"aws:eu-central-1": "record-Ggjp62Q4PFG1K0g562PKZgbV",
|
|
4
|
+
"aws:eu-west-2-g": "record-Ggjp7K2K60b11G4p2X4X8B98",
|
|
5
|
+
"aws:us-east-1": "record-Ggjp2p009010jB06F520vZQG",
|
|
6
|
+
"azure:westeurope": "record-GgjpB2QB7Vp4Kz8FV25Q68Jv",
|
|
7
|
+
"azure:westus": "record-GgjpJ509bvJ1p27Fx8gB65jg"
|
|
8
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{
|
|
2
|
+
"aws:ap-southeast-2": "record-GgZBbZ85p6jyZ1vyP78Yz8jq",
|
|
3
|
+
"aws:eu-central-1": "record-GgZBg8Q47BzfBB4FZVkYB3ZB",
|
|
4
|
+
"aws:eu-west-2-g": "record-GgZBjbXK55x4PBF5v265b2zZ",
|
|
5
|
+
"aws:us-east-1": "record-GgZBZ180yJVJQ0X3v70fGk5z",
|
|
6
|
+
"azure:westeurope": "record-GgZBq60BqQpZqzqP5K2g7zk0",
|
|
7
|
+
"azure:westus": "record-GgZByJ89K0f13FGj9Z5K7Q0q"
|
|
8
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{
|
|
2
|
+
"aws:ap-southeast-2": "record-GgZB78850V715qfyb7QJ2j4k",
|
|
3
|
+
"aws:eu-central-1": "record-GgZB8jQ4q2vQkZ81YJyPB6P6",
|
|
4
|
+
"aws:eu-west-2-g": "record-GgZB9zBK8G200PKfy6ZPbkXP",
|
|
5
|
+
"aws:us-east-1": "record-GgZB0jQ0zJ8fPbKvfvqPk7J0",
|
|
6
|
+
"azure:westeurope": "record-GgZBJ40BYgvQkZ81YJyPB6PP",
|
|
7
|
+
"azure:westus": "record-GgZBVPQ92xJ9JFjFZgfyx7kV"
|
|
8
|
+
}
|
|
@@ -95,7 +95,7 @@ def write_dxapp(folder, content):
|
|
|
95
95
|
|
|
96
96
|
|
|
97
97
|
def get_regional_options(region, resources_dir, profile, cache_docker, nextflow_pipeline_params):
|
|
98
|
-
nextaur_asset, nextflow_asset = get_nextflow_assets(region)
|
|
98
|
+
nextaur_asset, nextflow_asset, awscli_asset = get_nextflow_assets(region)
|
|
99
99
|
regional_instance_type = get_instance_type(region)
|
|
100
100
|
if cache_docker:
|
|
101
101
|
image_refs = run_nextaur_collect(resources_dir, profile, nextflow_pipeline_params)
|
|
@@ -111,7 +111,8 @@ def get_regional_options(region, resources_dir, profile, cache_docker, nextflow_
|
|
|
111
111
|
},
|
|
112
112
|
"assetDepends": [
|
|
113
113
|
{"id": nextaur_asset},
|
|
114
|
-
{"id": nextflow_asset}
|
|
114
|
+
{"id": nextflow_asset},
|
|
115
|
+
{"id": awscli_asset}
|
|
115
116
|
],
|
|
116
117
|
"bundledDepends": image_bundled
|
|
117
118
|
}
|
|
@@ -138,15 +139,18 @@ def get_nextflow_assets(region):
|
|
|
138
139
|
# The order of assets in the tuple is: nextaur, nextflow
|
|
139
140
|
nextaur_assets = path.join(nextflow_basepath, "nextaur_assets.json")
|
|
140
141
|
nextflow_assets = path.join(nextflow_basepath, "nextflow_assets.json")
|
|
142
|
+
awscli_assets = path.join(nextflow_basepath, "awscli_assets.json")
|
|
141
143
|
try:
|
|
142
|
-
with open(nextaur_assets, 'r') as nextaur_f, open(nextflow_assets, 'r') as nextflow_f:
|
|
144
|
+
with open(nextaur_assets, 'r') as nextaur_f, open(nextflow_assets, 'r') as nextflow_f, open(awscli_assets, 'r') as awscli_f:
|
|
143
145
|
nextaur = json.load(nextaur_f)[region]
|
|
144
146
|
nextflow = json.load(nextflow_f)[region]
|
|
145
|
-
|
|
146
|
-
|
|
147
|
+
awscli = json.load(awscli_f)[region]
|
|
148
|
+
dxpy.describe(nextaur, fields={}) # existence check
|
|
149
|
+
return nextaur, nextflow, awscli
|
|
147
150
|
except ResourceNotFound:
|
|
148
151
|
nextaur_assets = path.join(nextflow_basepath, "nextaur_assets.staging.json")
|
|
149
152
|
nextflow_assets = path.join(nextflow_basepath, "nextflow_assets.staging.json")
|
|
153
|
+
awscli_assets = path.join(nextflow_basepath, "awscli_assets.staging.json")
|
|
150
154
|
|
|
151
|
-
with open(nextaur_assets, 'r') as nextaur_f, open(nextflow_assets, 'r') as nextflow_f:
|
|
152
|
-
return json.load(nextaur_f)[region], json.load(nextflow_f)[region]
|
|
155
|
+
with open(nextaur_assets, 'r') as nextaur_f, open(nextflow_assets, 'r') as nextflow_f, open(awscli_assets, 'r') as awscli_f:
|
|
156
|
+
return json.load(nextaur_f)[region], json.load(nextflow_f)[region], json.load(awscli_f)[region]
|
|
@@ -1437,7 +1437,8 @@ def new_project(args):
|
|
|
1437
1437
|
inputs["monthlyComputeLimit"] = args.monthly_compute_limit
|
|
1438
1438
|
if args.monthly_egress_bytes_limit is not None:
|
|
1439
1439
|
inputs["monthlyEgressBytesLimit"] = args.monthly_egress_bytes_limit
|
|
1440
|
-
|
|
1440
|
+
if args.default_symlink is not None:
|
|
1441
|
+
inputs["defaultSymlink"] = json.loads(args.default_symlink)
|
|
1441
1442
|
try:
|
|
1442
1443
|
resp = dxpy.api.project_new(inputs)
|
|
1443
1444
|
if args.brief:
|
|
@@ -5797,6 +5798,7 @@ parser_new_project.add_argument('--database-ui-view-only', help='Viewers on the
|
|
|
5797
5798
|
action='store_true')
|
|
5798
5799
|
parser_new_project.add_argument('--monthly-compute-limit', type=positive_integer, help='Monthly project spending limit for compute')
|
|
5799
5800
|
parser_new_project.add_argument('--monthly-egress-bytes-limit', type=positive_integer, help='Monthly project spending limit for egress (in Bytes)')
|
|
5801
|
+
parser_new_project.add_argument('--default-symlink', help='Default symlink for external store account')
|
|
5800
5802
|
parser_new_project.set_defaults(func=new_project)
|
|
5801
5803
|
register_parser(parser_new_project, subparsers_action=subparsers_new, categories='fs')
|
|
5802
5804
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
version = '0.373.0'
|
|
@@ -414,7 +414,7 @@ def print_project_desc(desc, verbose=False):
|
|
|
414
414
|
'appCaches', 'billTo', 'version', 'createdBy', 'totalSponsoredEgressBytes', 'consumedSponsoredEgressBytes',
|
|
415
415
|
'containsPHI', 'databaseUIViewOnly', 'externalUploadRestricted', 'region', 'storageCost', 'pendingTransfer',
|
|
416
416
|
'atSpendingLimit', 'currentMonthComputeAvailableBudget', 'currentMonthEgressBytesAvailableBudget',
|
|
417
|
-
'currentMonthComputeUsage', 'currentMonthEgressBytesUsage',
|
|
417
|
+
'currentMonthComputeUsage', 'currentMonthEgressBytesUsage', 'defaultSymlink'
|
|
418
418
|
# Following are app container-specific
|
|
419
419
|
'destroyAt', 'project', 'type', 'app', 'appName'
|
|
420
420
|
]
|
|
@@ -452,6 +452,8 @@ def print_project_desc(desc, verbose=False):
|
|
|
452
452
|
print_json_field('Database UI View Only', desc['databaseUIViewOnly'])
|
|
453
453
|
if 'externalUploadRestricted' in desc and desc['externalUploadRestricted']:
|
|
454
454
|
print_json_field('External Upload Restricted', desc['externalUploadRestricted'])
|
|
455
|
+
if 'defaultSymlink' in desc and verbose:
|
|
456
|
+
print_json_field('Default Symlink', desc['defaultSymlink'])
|
|
455
457
|
|
|
456
458
|
# Usage
|
|
457
459
|
print_field("Created", render_timestamp(desc['created']))
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: dxpy
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.373.0
|
|
4
4
|
Summary: DNAnexus Platform API bindings for Python
|
|
5
5
|
Home-page: https://github.com/dnanexus/dx-toolkit
|
|
6
6
|
Author: Aleksandra Zalcman, Andrey Kislyuk, Anurag Biyani, Geet Duggal, Katherine Lai, Kurt Jensen, Marek Hrvol, Ohad Rodeh, Phil Sung
|
|
@@ -88,6 +88,8 @@ dxpy/dx_extract_utils/somatic_filter_payload.py
|
|
|
88
88
|
dxpy/nextflow/ImageRef.py
|
|
89
89
|
dxpy/nextflow/ImageRefFactory.py
|
|
90
90
|
dxpy/nextflow/__init__.py
|
|
91
|
+
dxpy/nextflow/awscli_assets.json
|
|
92
|
+
dxpy/nextflow/awscli_assets.staging.json
|
|
91
93
|
dxpy/nextflow/collect_images.py
|
|
92
94
|
dxpy/nextflow/nextaur_assets.json
|
|
93
95
|
dxpy/nextflow/nextaur_assets.staging.json
|
|
@@ -149,6 +151,7 @@ scripts/dx-fetch-bundled-depends
|
|
|
149
151
|
scripts/dx-generate-dxapp
|
|
150
152
|
scripts/dx-jobutil-add-output
|
|
151
153
|
scripts/dx-jobutil-dxlink
|
|
154
|
+
scripts/dx-jobutil-get-identity-token
|
|
152
155
|
scripts/dx-jobutil-new-job
|
|
153
156
|
scripts/dx-jobutil-parse-link
|
|
154
157
|
scripts/dx-jobutil-report-error
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
#
|
|
3
|
+
# Copyright (C) 2013-2024 DNAnexus, Inc.
|
|
4
|
+
#
|
|
5
|
+
# This file is part of dx-toolkit (DNAnexus platform client libraries).
|
|
6
|
+
#
|
|
7
|
+
# Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
|
8
|
+
# use this file except in compliance with the License. You may obtain a copy
|
|
9
|
+
# of the License at
|
|
10
|
+
#
|
|
11
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
+
#
|
|
13
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
14
|
+
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
15
|
+
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
16
|
+
# License for the specific language governing permissions and limitations
|
|
17
|
+
# under the License.
|
|
18
|
+
|
|
19
|
+
import dxpy
|
|
20
|
+
import os, argparse, sys
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def _parse_args():
|
|
24
|
+
"""
|
|
25
|
+
Parse the input arguments.
|
|
26
|
+
"""
|
|
27
|
+
parser = argparse.ArgumentParser(
|
|
28
|
+
description="calls job-xxxx/getIdentityToken and retrieves a JWT token based on aud and subject claims input"
|
|
29
|
+
)
|
|
30
|
+
parser.add_argument(
|
|
31
|
+
"--aud", help="Audience URI the JWT is intended for", required=True
|
|
32
|
+
)
|
|
33
|
+
parser.add_argument(
|
|
34
|
+
"--subject_claims",
|
|
35
|
+
action="append",
|
|
36
|
+
metavar="<subject_claims>",
|
|
37
|
+
help="Defines the subject claims to be validated by the cloud provider",
|
|
38
|
+
)
|
|
39
|
+
|
|
40
|
+
return parser.parse_args()
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
def main(aud, subject_claims):
|
|
44
|
+
job_get_identity_token_input = {}
|
|
45
|
+
|
|
46
|
+
# Parse out audience and subject_claims from args
|
|
47
|
+
job_get_identity_token_input["audience"] = aud
|
|
48
|
+
|
|
49
|
+
if subject_claims is not None:
|
|
50
|
+
# Iterate over subject_claims and flatten them into a single list
|
|
51
|
+
subject_claims_input = []
|
|
52
|
+
for subject_claim in subject_claims:
|
|
53
|
+
subject_claims_input.extend(subject_claim.split(","))
|
|
54
|
+
job_get_identity_token_input["subject_claims"] = subject_claims_input
|
|
55
|
+
|
|
56
|
+
# Call job-xxxx/getIdentityToken
|
|
57
|
+
if "DX_JOB_ID" in os.environ:
|
|
58
|
+
response = dxpy.api.job_get_identity_token(
|
|
59
|
+
dxpy.JOB_ID, job_get_identity_token_input
|
|
60
|
+
)
|
|
61
|
+
sys.stdout.write(response["Token"])
|
|
62
|
+
else:
|
|
63
|
+
print("This script should be run from within a job environment.")
|
|
64
|
+
sys.exit(1)
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
if __name__ == "__main__":
|
|
68
|
+
args = _parse_args()
|
|
69
|
+
main(args.aud, args.subject_claims)
|