dxpy 0.375.1__tar.gz → 0.377.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.
Files changed (189) hide show
  1. {dxpy-0.375.1 → dxpy-0.377.0}/PKG-INFO +1 -1
  2. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/bindings/dxproject.py +1 -1
  3. dxpy-0.377.0/dxpy/nextflow/nextaur_assets.json +8 -0
  4. dxpy-0.377.0/dxpy/nextflow/nextaur_assets.staging.json +8 -0
  5. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/scripts/dx.py +0 -31
  6. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/templating/templates/nextflow/src/nextflow.sh +125 -45
  7. dxpy-0.377.0/dxpy/toolkit_version.py +1 -0
  8. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/utils/job_log_client.py +4 -4
  9. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy.egg-info/PKG-INFO +1 -1
  10. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy.egg-info/requires.txt +1 -1
  11. {dxpy-0.375.1 → dxpy-0.377.0}/requirements.txt +1 -1
  12. dxpy-0.375.1/dxpy/nextflow/nextaur_assets.json +0 -8
  13. dxpy-0.375.1/dxpy/nextflow/nextaur_assets.staging.json +0 -8
  14. dxpy-0.375.1/dxpy/toolkit_version.py +0 -1
  15. {dxpy-0.375.1 → dxpy-0.377.0}/MANIFEST.in +0 -0
  16. {dxpy-0.375.1 → dxpy-0.377.0}/Readme.md +0 -0
  17. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/__init__.py +0 -0
  18. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/api.py +0 -0
  19. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/app_builder.py +0 -0
  20. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/app_categories.py +0 -0
  21. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/asset_builder.py +0 -0
  22. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/bindings/__init__.py +0 -0
  23. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/bindings/apollo/__init__.py +0 -0
  24. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/bindings/apollo/cmd_line_options_validator.py +0 -0
  25. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/bindings/apollo/data_transformations.py +0 -0
  26. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/bindings/apollo/dataset.py +0 -0
  27. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/bindings/apollo/json_validation_by_schema.py +0 -0
  28. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/bindings/apollo/schemas/__init__.py +0 -0
  29. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/bindings/apollo/schemas/assay_filtering_conditions.py +0 -0
  30. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/bindings/apollo/schemas/assay_filtering_json_schemas.py +0 -0
  31. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/bindings/apollo/schemas/input_arguments_validation_schemas.py +0 -0
  32. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/bindings/apollo/vizclient.py +0 -0
  33. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/bindings/apollo/vizserver_filters_from_json_parser.py +0 -0
  34. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/bindings/apollo/vizserver_payload_builder.py +0 -0
  35. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/bindings/auth.py +0 -0
  36. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/bindings/download_all_inputs.py +0 -0
  37. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/bindings/dxanalysis.py +0 -0
  38. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/bindings/dxapp.py +0 -0
  39. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/bindings/dxapp_container_functions.py +0 -0
  40. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/bindings/dxapplet.py +0 -0
  41. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/bindings/dxdatabase.py +0 -0
  42. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/bindings/dxdatabase_functions.py +0 -0
  43. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/bindings/dxdataobject_functions.py +0 -0
  44. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/bindings/dxfile.py +0 -0
  45. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/bindings/dxfile_functions.py +0 -0
  46. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/bindings/dxglobalworkflow.py +0 -0
  47. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/bindings/dxjob.py +0 -0
  48. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/bindings/dxrecord.py +0 -0
  49. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/bindings/dxworkflow.py +0 -0
  50. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/bindings/mount_all_inputs.py +0 -0
  51. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/bindings/search.py +0 -0
  52. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/cli/__init__.py +0 -0
  53. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/cli/cp.py +0 -0
  54. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/cli/dataset_utilities.py +0 -0
  55. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/cli/download.py +0 -0
  56. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/cli/exec_io.py +0 -0
  57. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/cli/help_messages.py +0 -0
  58. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/cli/org.py +0 -0
  59. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/cli/output_handling.py +0 -0
  60. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/cli/parsers.py +0 -0
  61. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/cli/workflow.py +0 -0
  62. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/compat.py +0 -0
  63. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/dx_extract_utils/Homo_sapiens_genes_manifest.json +0 -0
  64. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/dx_extract_utils/Homo_sapiens_genes_manifest_staging.json +0 -0
  65. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/dx_extract_utils/Homo_sapiens_genes_manifest_staging_vep.json +0 -0
  66. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/dx_extract_utils/Homo_sapiens_genes_manifest_vep.json +0 -0
  67. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/dx_extract_utils/__init__.py +0 -0
  68. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/dx_extract_utils/cohort_filter_payload.py +0 -0
  69. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/dx_extract_utils/column_conditions.json +0 -0
  70. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/dx_extract_utils/column_conversion.json +0 -0
  71. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/dx_extract_utils/filter_to_payload.py +0 -0
  72. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/dx_extract_utils/germline_utils.py +0 -0
  73. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/dx_extract_utils/input_validation.py +0 -0
  74. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/dx_extract_utils/input_validation_somatic.py +0 -0
  75. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/dx_extract_utils/retrieve_allele_schema.json +0 -0
  76. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/dx_extract_utils/retrieve_annotation_schema.json +0 -0
  77. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/dx_extract_utils/retrieve_bins.py +0 -0
  78. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/dx_extract_utils/retrieve_genotype_schema.json +0 -0
  79. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/dx_extract_utils/return_columns_allele.json +0 -0
  80. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/dx_extract_utils/return_columns_annotation.json +0 -0
  81. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/dx_extract_utils/return_columns_genotype.json +0 -0
  82. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/dx_extract_utils/return_columns_genotype_only.json +0 -0
  83. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/dx_extract_utils/somatic_filter_payload.py +0 -0
  84. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/dxlog.py +0 -0
  85. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/exceptions.py +0 -0
  86. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/executable_builder.py +0 -0
  87. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/nextflow/ImageRef.py +0 -0
  88. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/nextflow/ImageRefFactory.py +0 -0
  89. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/nextflow/__init__.py +0 -0
  90. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/nextflow/awscli_assets.json +0 -0
  91. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/nextflow/awscli_assets.staging.json +0 -0
  92. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/nextflow/collect_images.py +0 -0
  93. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/nextflow/nextflow_assets.json +0 -0
  94. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/nextflow/nextflow_assets.staging.json +0 -0
  95. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/nextflow/nextflow_builder.py +0 -0
  96. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/nextflow/nextflow_templates.py +0 -0
  97. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/nextflow/nextflow_utils.py +0 -0
  98. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/packages/__init__.py +0 -0
  99. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/scripts/__init__.py +0 -0
  100. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/scripts/dx_app_wizard.py +0 -0
  101. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/scripts/dx_build_app.py +0 -0
  102. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/scripts/dx_build_applet.py +0 -0
  103. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/ssh_tunnel_app_support.py +0 -0
  104. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/system_requirements.py +0 -0
  105. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/templating/__init__.py +0 -0
  106. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/templating/bash.py +0 -0
  107. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/templating/python.py +0 -0
  108. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/templating/templates/Readme.md +0 -0
  109. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/templating/templates/bash/basic/dxapp.json +0 -0
  110. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/templating/templates/bash/basic/src/code.sh +0 -0
  111. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/templating/templates/bash/parallelized/dxapp.json +0 -0
  112. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/templating/templates/bash/parallelized/src/code.sh +0 -0
  113. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/templating/templates/bash/scatter-process-gather/dxapp.json +0 -0
  114. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/templating/templates/bash/scatter-process-gather/src/code.sh +0 -0
  115. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/templating/templates/nextflow/dxapp.json +0 -0
  116. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/templating/templates/python/basic/dxapp.json +0 -0
  117. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/templating/templates/python/basic/src/code.py +0 -0
  118. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/templating/templates/python/basic/test/test.py +0 -0
  119. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/templating/templates/python/parallelized/dxapp.json +0 -0
  120. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/templating/templates/python/parallelized/src/code.py +0 -0
  121. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/templating/templates/python/parallelized/test/test.py +0 -0
  122. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/templating/templates/python/scatter-process-gather/dxapp.json +0 -0
  123. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/templating/templates/python/scatter-process-gather/src/code.py +0 -0
  124. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/templating/templates/python/scatter-process-gather/test/test.py +0 -0
  125. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/templating/utils.py +0 -0
  126. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/utils/__init__.py +0 -0
  127. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/utils/batch_utils.py +0 -0
  128. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/utils/completer.py +0 -0
  129. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/utils/config.py +0 -0
  130. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/utils/describe.py +0 -0
  131. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/utils/exec_utils.py +0 -0
  132. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/utils/executable_unbuilder.py +0 -0
  133. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/utils/file_handle.py +0 -0
  134. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/utils/file_load_utils.py +0 -0
  135. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/utils/genomic_utils.py +0 -0
  136. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/utils/local_exec_utils.py +0 -0
  137. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/utils/pathmatch.py +0 -0
  138. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/utils/pretty_print.py +0 -0
  139. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/utils/printing.py +0 -0
  140. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/utils/resolver.py +0 -0
  141. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/utils/spelling_corrector.py +0 -0
  142. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/utils/version.py +0 -0
  143. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy/workflow_builder.py +0 -0
  144. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy.egg-info/SOURCES.txt +0 -0
  145. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy.egg-info/dependency_links.txt +0 -0
  146. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy.egg-info/entry_points.txt +0 -0
  147. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy.egg-info/not-zip-safe +0 -0
  148. {dxpy-0.375.1 → dxpy-0.377.0}/dxpy.egg-info/top_level.txt +0 -0
  149. {dxpy-0.375.1 → dxpy-0.377.0}/requirements_setuptools.txt +0 -0
  150. {dxpy-0.375.1 → dxpy-0.377.0}/requirements_test.txt +0 -0
  151. {dxpy-0.375.1 → dxpy-0.377.0}/scripts/dx-clone-asset +0 -0
  152. {dxpy-0.375.1 → dxpy-0.377.0}/scripts/dx-docker +0 -0
  153. {dxpy-0.375.1 → dxpy-0.377.0}/scripts/dx-download-all-inputs +0 -0
  154. {dxpy-0.375.1 → dxpy-0.377.0}/scripts/dx-fetch-bundled-depends +0 -0
  155. {dxpy-0.375.1 → dxpy-0.377.0}/scripts/dx-generate-dxapp +0 -0
  156. {dxpy-0.375.1 → dxpy-0.377.0}/scripts/dx-jobutil-add-output +0 -0
  157. {dxpy-0.375.1 → dxpy-0.377.0}/scripts/dx-jobutil-dxlink +0 -0
  158. {dxpy-0.375.1 → dxpy-0.377.0}/scripts/dx-jobutil-get-identity-token +0 -0
  159. {dxpy-0.375.1 → dxpy-0.377.0}/scripts/dx-jobutil-new-job +0 -0
  160. {dxpy-0.375.1 → dxpy-0.377.0}/scripts/dx-jobutil-parse-link +0 -0
  161. {dxpy-0.375.1 → dxpy-0.377.0}/scripts/dx-jobutil-report-error +0 -0
  162. {dxpy-0.375.1 → dxpy-0.377.0}/scripts/dx-log-stream +0 -0
  163. {dxpy-0.375.1 → dxpy-0.377.0}/scripts/dx-mount-all-inputs +0 -0
  164. {dxpy-0.375.1 → dxpy-0.377.0}/scripts/dx-notebook-reconnect +0 -0
  165. {dxpy-0.375.1 → dxpy-0.377.0}/scripts/dx-print-bash-vars +0 -0
  166. {dxpy-0.375.1 → dxpy-0.377.0}/scripts/dx-upload-all-outputs +0 -0
  167. {dxpy-0.375.1 → dxpy-0.377.0}/setup.cfg +0 -0
  168. {dxpy-0.375.1 → dxpy-0.377.0}/setup.py +0 -0
  169. {dxpy-0.375.1 → dxpy-0.377.0}/test/test_batch.py +0 -0
  170. {dxpy-0.375.1 → dxpy-0.377.0}/test/test_create_cohort.py +0 -0
  171. {dxpy-0.375.1 → dxpy-0.377.0}/test/test_describe.py +0 -0
  172. {dxpy-0.375.1 → dxpy-0.377.0}/test/test_dx-docker.py +0 -0
  173. {dxpy-0.375.1 → dxpy-0.377.0}/test/test_dx_app_wizard.py +0 -0
  174. {dxpy-0.375.1 → dxpy-0.377.0}/test/test_dx_bash_helpers.py +0 -0
  175. {dxpy-0.375.1 → dxpy-0.377.0}/test/test_dx_completion.py +0 -0
  176. {dxpy-0.375.1 → dxpy-0.377.0}/test/test_dx_symlink.py +0 -0
  177. {dxpy-0.375.1 → dxpy-0.377.0}/test/test_dxabs.py +0 -0
  178. {dxpy-0.375.1 → dxpy-0.377.0}/test/test_dxasset.py +0 -0
  179. {dxpy-0.375.1 → dxpy-0.377.0}/test/test_dxclient.py +0 -0
  180. {dxpy-0.375.1 → dxpy-0.377.0}/test/test_dxpy.py +0 -0
  181. {dxpy-0.375.1 → dxpy-0.377.0}/test/test_dxpy_utils.py +0 -0
  182. {dxpy-0.375.1 → dxpy-0.377.0}/test/test_dxunpack.py +0 -0
  183. {dxpy-0.375.1 → dxpy-0.377.0}/test/test_extract_assay.py +0 -0
  184. {dxpy-0.375.1 → dxpy-0.377.0}/test/test_extract_dataset.py +0 -0
  185. {dxpy-0.375.1 → dxpy-0.377.0}/test/test_extract_expression.py +0 -0
  186. {dxpy-0.375.1 → dxpy-0.377.0}/test/test_extract_somatic.py +0 -0
  187. {dxpy-0.375.1 → dxpy-0.377.0}/test/test_nextflow.py +0 -0
  188. {dxpy-0.375.1 → dxpy-0.377.0}/test/test_nextflow_ImageRef.py +0 -0
  189. {dxpy-0.375.1 → dxpy-0.377.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.375.1
3
+ Version: 0.377.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
@@ -314,7 +314,7 @@ class DXProject(DXContainer):
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
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
317
+ :type default_symlink: dict
318
318
 
319
319
  Creates a new project. Initially only the user performing this action
320
320
  will be in the permissions/member list, with ADMINISTER access.
@@ -0,0 +1,8 @@
1
+ {
2
+ "aws:ap-southeast-2": "record-Gk3VxJ05bffyxg1Y6X9G4Z3Y",
3
+ "aws:eu-central-1": "record-Gk3VyZ04VXJ4GgFvxFbkGb71",
4
+ "aws:eu-west-2-g": "record-Gk3X07XKVKQxKfGGF9JYFy2y",
5
+ "aws:us-east-1": "record-Gk3VkVj078x5394xgK8VPX2Y",
6
+ "azure:westeurope": "record-Gk3X3YjBk3009Vk2PbY1GyGG",
7
+ "azure:westus": "record-Gk3X7G09p6b5yq2VxbGkY0Y3"
8
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "aws:ap-southeast-2": "record-Gk32FZj5YJVVV8by4B40bJkZ",
3
+ "aws:eu-central-1": "record-Gk32J5j4Z1GQQjXj19yYQ81Y",
4
+ "aws:eu-west-2-g": "record-Gk32KfpK0939FJZbjk7v07Gg",
5
+ "aws:us-east-1": "record-Gk323bQ0b30QQ2fyy4vP2FxV",
6
+ "azure:westeurope": "record-Gk32V5jB6V79g9kG53p2VjPK",
7
+ "azure:westus": "record-Gk32Yk89G8qQQ2fyy4vP2Fy6"
8
+ }
@@ -4119,27 +4119,6 @@ def ssh(args, ssh_config_verified=False):
4119
4119
  print(fill(tip.format(job_id=args.job_id)))
4120
4120
  exit(exit_code)
4121
4121
 
4122
- def upgrade(args):
4123
- if len(args.args) == 0:
4124
- try:
4125
- greeting = dxpy.api.system_greet({'client': 'dxclient', 'version': 'v'+dxpy.TOOLKIT_VERSION}, auth=None)
4126
- if greeting['update']['available']:
4127
- recommended_version = greeting['update']['version']
4128
- else:
4129
- err_exit("Your SDK is up to date.", code=0)
4130
- except default_expected_exceptions as e:
4131
- print(e)
4132
- recommended_version = "current"
4133
- print("Upgrading to", recommended_version)
4134
- args.args = [recommended_version]
4135
-
4136
- try:
4137
- cmd = os.path.join(os.environ['DNANEXUS_HOME'], 'build', 'upgrade.sh')
4138
- args.args.insert(0, cmd)
4139
- os.execv(cmd, args.args)
4140
- except:
4141
- err_exit()
4142
-
4143
4122
  def generate_batch_inputs(args):
4144
4123
 
4145
4124
  # Internally restricted maximum batch size for a TSV
@@ -6346,16 +6325,6 @@ parser_api.set_defaults(func=api)
6346
6325
  # parser_api.completer = TODO
6347
6326
  register_parser(parser_api)
6348
6327
 
6349
- #####################################
6350
- # upgrade
6351
- #####################################
6352
- parser_upgrade = subparsers.add_parser('upgrade', help='Upgrade dx-toolkit (the DNAnexus SDK and this program)',
6353
- description='Upgrades dx-toolkit (the DNAnexus SDK and this program) to the latest recommended version, or to a specified version and platform.',
6354
- prog='dx upgrade')
6355
- parser_upgrade.add_argument('args', nargs='*')
6356
- parser_upgrade.set_defaults(func=upgrade)
6357
- register_parser(parser_upgrade)
6358
-
6359
6328
  #####################################
6360
6329
  # generate_batch_inputs
6361
6330
  #####################################
@@ -5,6 +5,9 @@
5
5
 
6
6
  set -f
7
7
 
8
+ AWS_ENV="$HOME/.dx-aws.env"
9
+ USING_S3_WORKDIR=false
10
+ LOGS_DIR="$HOME/.log/"
8
11
 
9
12
  # How long to let a subjob with error keep running for Nextflow to handle it
10
13
  # before we end the DX job, in seconds
@@ -109,15 +112,14 @@ on_exit() {
109
112
  # remove .nextflow from the current folder /home/dnanexus/nextflow_execution
110
113
  rm -rf .nextflow
111
114
 
112
- if [[ -s $LOG_NAME ]]; then
115
+ if [[ -s "${LOGS_DIR}${LOG_NAME}" ]]; then
113
116
  echo "=== Execution completed — upload nextflow log to job output destination ${DX_JOB_OUTDIR%/}/"
114
- NEXFLOW_LOG_ID=$(dx upload "$LOG_NAME" --path "${DX_JOB_OUTDIR%/}/${LOG_NAME}" --wait --brief --no-progress --parents) &&
117
+ NEXFLOW_LOG_ID=$(dx upload "${LOGS_DIR}${LOG_NAME}" --path "${DX_JOB_OUTDIR%/}/${LOG_NAME}" --wait --brief --no-progress --parents) &&
115
118
  echo "Upload nextflow log as file: $NEXFLOW_LOG_ID" ||
116
119
  echo "Failed to upload log file of current session $NXF_UUID"
117
120
  else
118
121
  echo "=== Execution completed — no nextflow log file available."
119
122
  fi
120
- rm $LOG_NAME || true
121
123
 
122
124
  if [[ $ret -ne 0 ]]; then
123
125
  echo "=== Execution failed — skip uploading published files to job output destination ${DX_JOB_OUTDIR%/}/"
@@ -127,7 +129,6 @@ on_exit() {
127
129
  mkdir -p /home/dnanexus/out/published_files
128
130
  find . -type f -newermt "$BEGIN_TIME" -exec cp --parents {} /home/dnanexus/out/published_files/ \; -delete
129
131
  dx-upload-all-outputs --parallel --wait-on-close || echo "No published files has been generated."
130
- # done
131
132
  fi
132
133
  exit $ret
133
134
  }
@@ -254,11 +255,31 @@ check_running_jobs() {
254
255
  or run without preserve_cache set to true."
255
256
  }
256
257
 
258
+ detect_using_s3_workdir() {
259
+ if [[ -f "$AWS_ENV" ]]; then
260
+ source $AWS_ENV
261
+ fi
262
+
263
+ if [[ -n $workdir && $workdir != "null" ]]; then
264
+ USING_S3_WORKDIR=true
265
+ fi
266
+ }
267
+
257
268
  setup_workdir() {
258
- if [[ $preserve_cache == true ]]; then
269
+ if [[ -f "$AWS_ENV" ]]; then
270
+ source $AWS_ENV
271
+ fi
272
+
273
+ if [[ -n $workdir && $workdir != "null" ]]; then
274
+ # S3 work dir was specified, use that
275
+ NXF_WORK="${workdir}/${NXF_UUID}/work"
276
+ USING_S3_WORKDIR=true
277
+ elif [[ $preserve_cache == true ]]; then
278
+ # Work dir on platform and using cache, use project
259
279
  [[ -n $resume ]] || dx mkdir -p $DX_CACHEDIR/$NXF_UUID/work/
260
280
  NXF_WORK="dx://$DX_CACHEDIR/$NXF_UUID/work/"
261
281
  else
282
+ # Work dir on platform and not using cache, use workspace
262
283
  NXF_WORK="dx://$DX_WORKSPACE_ID:/work/"
263
284
  fi
264
285
  }
@@ -289,6 +310,21 @@ get_nextaur_version() {
289
310
  export NXF_PLUGINS_VERSION=$(dx describe ${asset_dependency} --json | jq -r .properties.version)
290
311
  }
291
312
 
313
+ get_nextflow_environment() {
314
+ NEXTFLOW_CMD_ENV=("$@")
315
+ set +e
316
+ ENV_OUTPUT=$("${NEXTFLOW_CMD_ENV[@]}" 2>&1)
317
+ ENV_EXIT=$?
318
+ set -e
319
+
320
+ if [ $ENV_EXIT -ne 0 ]; then
321
+ echo "$ENV_OUTPUT"
322
+ return $ENV_EXIT
323
+ else
324
+ echo "$ENV_OUTPUT" > "/home/dnanexus/.dx_get_env.log"
325
+ fi
326
+ }
327
+
292
328
  # Entry point for the main Nextflow orchestrator job
293
329
  main() {
294
330
  if [[ $debug == true ]]; then
@@ -381,10 +417,6 @@ main() {
381
417
  restore_cache
382
418
  fi
383
419
 
384
- # set workdir based on preserve_cache option
385
- setup_workdir
386
- export NXF_WORK
387
-
388
420
  # download default applet file type inputs
389
421
  dx-download-all-inputs --parallel @@EXCLUDE_INPUT_DOWNLOAD@@ 2>/dev/null 1>&2
390
422
  RUNTIME_CONFIG_CMD=''
@@ -397,29 +429,77 @@ main() {
397
429
  dx upload "$CREDENTIALS" --path "$DX_WORKSPACE_ID:/dx_docker_creds" --brief --wait --no-progress || true
398
430
  fi
399
431
 
432
+ # First Nextflow run, only to parse & save config required for AWS login
433
+ local env_job_suffix='-GET-ENV'
434
+ declare -a NEXTFLOW_CMD_ENV="(nextflow \
435
+ ${TRACE_CMD} \
436
+ $nextflow_top_level_opts \
437
+ ${RUNTIME_CONFIG_CMD} \
438
+ -log ${LOGS_DIR}${LOG_NAME}${env_job_suffix} \
439
+ run @@RESOURCES_SUBPATH@@ \
440
+ $profile_arg \
441
+ -name ${DX_JOB_ID}${env_job_suffix} \
442
+ $RESUME_CMD \
443
+ $nextflow_run_opts \
444
+ $RUNTIME_PARAMS_FILE \
445
+ $nextflow_pipeline_params)"
446
+
447
+ NEXTFLOW_CMD_ENV+=("${applet_runtime_inputs[@]}")
448
+
449
+ AWS_ENV="$HOME/.dx-aws.env"
450
+
451
+ get_nextflow_environment "${NEXTFLOW_CMD_ENV[@]}"
452
+ dx download "$DX_WORKSPACE_ID:/.dx-aws.env" -o $AWS_ENV -f --no-progress 2>/dev/null || true
453
+
454
+ # Login to AWS, if configured
455
+ aws_login
456
+ aws_relogin_loop & AWS_RELOGIN_PID=$!
457
+
458
+ # Set Nextflow workdir based on S3 workdir / preserve_cache options
459
+ setup_workdir
460
+ export NXF_WORK
461
+
400
462
  # set beginning timestamp
401
463
  BEGIN_TIME="$(date +"%Y-%m-%d %H:%M:%S")"
402
464
 
403
- # execution starts
465
+ # Start Nextflow run
404
466
  declare -a NEXTFLOW_CMD="(nextflow \
405
467
  ${TRACE_CMD} \
406
468
  $nextflow_top_level_opts \
407
469
  ${RUNTIME_CONFIG_CMD} \
408
- -log ${LOG_NAME} \
470
+ -log ${LOGS_DIR}${LOG_NAME} \
409
471
  run @@RESOURCES_SUBPATH@@ \
410
472
  $profile_arg \
411
- -name $DX_JOB_ID \
473
+ -name ${DX_JOB_ID} \
412
474
  $RESUME_CMD \
413
475
  $nextflow_run_opts \
414
476
  $RUNTIME_PARAMS_FILE \
415
477
  $nextflow_pipeline_params)"
416
478
 
417
479
  NEXTFLOW_CMD+=("${applet_runtime_inputs[@]}")
418
- # first AWS login of the headjob is done in the Nextflow code,
419
- # this is due to the dependency on config values.
420
- AWS_ENV="$HOME/.dx-aws.env"
421
- automatic_aws_relogin & AWS_RELOGIN_PID=$!
480
+
422
481
  trap on_exit EXIT
482
+ log_context_info
483
+
484
+ "${NEXTFLOW_CMD[@]}" & NXF_EXEC_PID=$!
485
+ set +x
486
+ if [[ $debug == true ]] ; then
487
+ # Forward Nextflow log to job log
488
+ touch "${LOGS_DIR}${LOG_NAME}"
489
+ tail --follow -n 0 "${LOGS_DIR}${LOG_NAME}" -s 60 >&2 & LOG_MONITOR_PID=$!
490
+ disown $LOG_MONITOR_PID
491
+ set -x
492
+ fi
493
+
494
+ # After Nextflow run
495
+ wait $NXF_EXEC_PID
496
+ ret=$?
497
+
498
+ kill "$AWS_RELOGIN_PID"
499
+ exit $ret
500
+ }
501
+
502
+ log_context_info() {
423
503
  echo "============================================================="
424
504
  echo "=== NF projectDir : @@RESOURCES_SUBPATH@@"
425
505
  echo "=== NF session ID : ${NXF_UUID}"
@@ -430,23 +510,6 @@ main() {
430
510
  echo "=== NF command :" "${NEXTFLOW_CMD[@]}"
431
511
  echo "=== Built with dxpy : @@DXPY_BUILD_VERSION@@"
432
512
  echo "============================================================="
433
-
434
- "${NEXTFLOW_CMD[@]}" & NXF_EXEC_PID=$!
435
- # forwarding nextflow log file to job monitor
436
- set +x
437
- if [[ $debug == true ]] ; then
438
- touch $LOG_NAME
439
- tail --follow -n 0 $LOG_NAME -s 60 >&2 & LOG_MONITOR_PID=$!
440
- disown $LOG_MONITOR_PID
441
- set -x
442
- fi
443
-
444
- # After Nextflow run
445
- wait $NXF_EXEC_PID
446
- ret=$?
447
-
448
- kill "$AWS_RELOGIN_PID"
449
- exit $ret
450
513
  }
451
514
 
452
515
  wait_for_terminate_or_retry() {
@@ -485,7 +548,11 @@ wait_for_terminate_or_retry() {
485
548
  # On exit, for the Nextflow task sub-jobs
486
549
  nf_task_exit() {
487
550
  if [ -f .command.log ]; then
488
- dx upload .command.log --path "${cmd_log_file}" --brief --wait --no-progress || true
551
+ if [[ $USING_S3_WORKDIR == true ]]; then
552
+ aws s3 cp .command.log "${cmd_log_file}"
553
+ else
554
+ dx upload .command.log --path "${cmd_log_file}" --brief --wait --no-progress || true
555
+ fi
489
556
  else
490
557
  >&2 echo "Missing Nextflow .command.log file"
491
558
  fi
@@ -505,20 +572,21 @@ nf_task_exit() {
505
572
  # Entry point for the Nextflow task sub-jobs
506
573
  nf_task_entry() {
507
574
  CREDENTIALS="$HOME/docker_creds"
508
- AWS_ENV="$HOME/.dx-aws.env"
509
575
  dx download "$DX_WORKSPACE_ID:/dx_docker_creds" -o $CREDENTIALS --recursive --no-progress -f 2>/dev/null || true
510
576
  [[ -f $CREDENTIALS ]] && docker_registry_login || echo "no docker credential available"
511
577
  dx download "$DX_WORKSPACE_ID:/.dx-aws.env" -o $AWS_ENV -f --no-progress 2>/dev/null || true
512
578
  aws_login
513
- automatic_aws_relogin & AWS_RELOGIN_PID=$!
579
+ aws_relogin_loop & AWS_RELOGIN_PID=$!
514
580
  # capture the exit code
515
581
  trap nf_task_exit EXIT
516
- # remove the line in .command.run to disable printing env vars if debugging is on
517
- dx cat "${cmd_launcher_file}" | sed 's/\[\[ $NXF_DEBUG > 0 ]] && nxf_env//' > .command.run
518
- set +e
582
+
583
+ download_cmd_launcher_file
584
+
519
585
  # enable debugging mode
520
586
  [[ $NXF_DEBUG ]] && set -x
587
+
521
588
  # run the task
589
+ set +e
522
590
  bash .command.run > >(tee .command.log) 2>&1
523
591
  export exit_code=$?
524
592
  kill "$AWS_RELOGIN_PID"
@@ -526,11 +594,25 @@ nf_task_entry() {
526
594
  set -e
527
595
  }
528
596
 
597
+ download_cmd_launcher_file() {
598
+ if [[ $USING_S3_WORKDIR == true ]]; then
599
+ aws s3 cp "${cmd_launcher_file}" .command.run.tmp
600
+ else
601
+ dx download "${cmd_launcher_file}" --output .command.run.tmp
602
+ fi
603
+
604
+ # remove the line in .command.run to disable printing env vars if debugging is on
605
+ cat .command.run.tmp | sed 's/\[\[ $NXF_DEBUG > 0 ]] && nxf_env//' > .command.run
606
+ }
607
+
529
608
  aws_login() {
530
609
  if [ -f "$AWS_ENV" ]; then
531
610
  source $AWS_ENV
611
+ detect_using_s3_workdir
612
+
532
613
  # aws env file example values:
533
- # "iamRoleArnToAssume", "roleSessionName", "jobTokenAudience", "jobTokenSubjectClaims", "awsRegion"
614
+ # "iamRoleArnToAssume", "jobTokenAudience", "jobTokenSubjectClaims", "awsRegion"
615
+ roleSessionName="dnanexus_${DX_JOB_ID}"
534
616
  job_id_token=$(dx-jobutil-get-identity-token --aud ${jobTokenAudience} --subject_claims ${jobTokenSubjectClaims})
535
617
  output=$(aws sts assume-role-with-web-identity --role-arn $iamRoleArnToAssume --role-session-name $roleSessionName --web-identity-token $job_id_token --duration-seconds 3600)
536
618
  mkdir -p /home/dnanexus/.aws/
@@ -545,17 +627,15 @@ EOF
545
627
  [default]
546
628
  region = $awsRegion
547
629
  EOF
548
- # else
549
- # echo "No AWS environment variables available" // TODO: uncomment with Nextaur update
630
+ echo "Successfully authenticated to AWS - $(aws sts get-caller-identity)"
550
631
  fi
551
632
  }
552
633
 
553
- automatic_aws_relogin() {
634
+ aws_relogin_loop() {
554
635
  while true; do
555
- sleep 3300 # 55 minutes, first login is done independently, so we wait first
636
+ sleep 3300 # relogin every 55 minutes, first login is done separately, so we wait before the login
556
637
  if [ -f "$AWS_ENV" ]; then
557
638
  aws_login
558
- echo "Successfully reauthenticated to AWS"
559
639
  fi
560
640
  done
561
641
  }
@@ -0,0 +1 @@
1
+ version = '0.377.0'
@@ -110,10 +110,10 @@ class DXJobLogStreamClient:
110
110
  try:
111
111
  self._app = WebSocketApp(
112
112
  self.url,
113
- on_open=self.opened,
114
- on_close=self.closed,
115
- on_error=self.errored,
116
- on_message=self.received_message
113
+ on_open=lambda app: self.opened(),
114
+ on_close=lambda app, close_status_code, close_msg: self.closed(close_status_code, close_msg),
115
+ on_error=lambda app, exception: self.errored(exception),
116
+ on_message=lambda app, message: self.received_message(message)
117
117
  )
118
118
  self._app.run_forever(sslopt={"cert_reqs": ssl.CERT_NONE})
119
119
  except:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: dxpy
3
- Version: 0.375.1
3
+ Version: 0.377.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
@@ -1,4 +1,4 @@
1
- websocket-client==0.54.0
1
+ websocket-client<1.8.0,>=1.6.0
2
2
  python-dateutil>=2.5
3
3
  psutil>=5.9.3
4
4
  certifi
@@ -1,6 +1,6 @@
1
1
  argcomplete>=2.0.0; python_version >= "3.10"
2
2
  argcomplete>=1.9.4,<2.0.0; python_version < "3.10"
3
- websocket-client==0.54.0
3
+ websocket-client>=1.6.0,<1.8.0
4
4
  python-dateutil>=2.5
5
5
  psutil>=5.9.3
6
6
  certifi
@@ -1,8 +0,0 @@
1
- {
2
- "aws:ap-southeast-2": "record-Gj7Fx0j572QPB4zfX8z6qvpZ",
3
- "aws:eu-central-1": "record-Gj7Fxxj45pxQ0Xzkp8xKQb4b",
4
- "aws:eu-west-2-g": "record-Gj7FzJpKzK6qvB48564zK0QB",
5
- "aws:us-east-1": "record-Gj7Fkg804X0GkkPpgj2yP15q",
6
- "azure:westeurope": "record-Gj7G2BQB4KJZJVKBZjbZqYkF",
7
- "azure:westus": "record-Gj7G5v8975yvvb63gpf2Q0bb"
8
- }
@@ -1,8 +0,0 @@
1
- {
2
- "aws:ap-southeast-2": "record-Gj7FKZj5ZjJBzf18k10qqvJq",
3
- "aws:eu-central-1": "record-Gj7FQK04qv1xxQYz4fvGPq8p",
4
- "aws:eu-west-2-g": "record-Gj7FVVBKK41xxQYz4fvGPq8x",
5
- "aws:us-east-1": "record-Gj7BJb803JZ6VGyXP8kgBVB6",
6
- "azure:westeurope": "record-Gj7FYz8B75FB765j89j2Q5yJ",
7
- "azure:westus": "record-Gj7FfYQ9pjxQGZG020y00309"
8
- }
@@ -1 +0,0 @@
1
- version = '0.375.1'
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
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
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