latch 2.39.0.dev19__tar.gz → 2.39.0.dev20__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 (201) hide show
  1. {latch-2.39.0.dev19/latch.egg-info → latch-2.39.0.dev20}/PKG-INFO +1 -1
  2. {latch-2.39.0.dev19 → latch-2.39.0.dev20/latch.egg-info}/PKG-INFO +1 -1
  3. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/extras/nextflow/build.py +6 -2
  4. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/extras/nextflow/file_persistence.py +10 -10
  5. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/extras/nextflow/tasks/conditional.py +1 -1
  6. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/extras/nextflow/tasks/process.py +24 -12
  7. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/main.py +8 -0
  8. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/services/register/register.py +2 -0
  9. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/setup.py +1 -1
  10. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/LICENSE +0 -0
  11. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/MANIFEST.in +0 -0
  12. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/README.md +0 -0
  13. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch/__init__.py +0 -0
  14. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch/account.py +0 -0
  15. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch/executions.py +0 -0
  16. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch/functions/__init__.py +0 -0
  17. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch/functions/messages.py +0 -0
  18. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch/functions/operators.py +0 -0
  19. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch/functions/secrets.py +0 -0
  20. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch/ldata/__init__.py +0 -0
  21. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch/ldata/_transfer/__init__.py +0 -0
  22. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch/ldata/_transfer/download.py +0 -0
  23. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch/ldata/_transfer/manager.py +0 -0
  24. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch/ldata/_transfer/node.py +0 -0
  25. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch/ldata/_transfer/progress.py +0 -0
  26. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch/ldata/_transfer/remote_copy.py +0 -0
  27. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch/ldata/_transfer/throttle.py +0 -0
  28. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch/ldata/_transfer/upload.py +0 -0
  29. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch/ldata/_transfer/utils.py +0 -0
  30. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch/ldata/path.py +0 -0
  31. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch/ldata/type.py +0 -0
  32. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch/registry/__init__.py +0 -0
  33. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch/registry/project.py +0 -0
  34. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch/registry/record.py +0 -0
  35. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch/registry/table.py +0 -0
  36. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch/registry/types.py +0 -0
  37. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch/registry/upstream_types/__init__.py +0 -0
  38. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch/registry/upstream_types/types.py +0 -0
  39. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch/registry/upstream_types/values.py +0 -0
  40. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch/registry/utils.py +0 -0
  41. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch/resources/__init__.py +0 -0
  42. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch/resources/conditional.py +0 -0
  43. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch/resources/launch_plan.py +0 -0
  44. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch/resources/map_tasks.py +0 -0
  45. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch/resources/reference_workflow.py +0 -0
  46. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch/resources/tasks.py +0 -0
  47. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch/resources/workflow.py +0 -0
  48. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch/types/__init__.py +0 -0
  49. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch/types/directory.py +0 -0
  50. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch/types/file.py +0 -0
  51. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch/types/glob.py +0 -0
  52. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch/types/json.py +0 -0
  53. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch/types/metadata.py +0 -0
  54. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch/types/utils.py +0 -0
  55. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch/verified/__init__.py +0 -0
  56. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch/verified/deseq2.py +0 -0
  57. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch/verified/mafft.py +0 -0
  58. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch/verified/pathway.py +0 -0
  59. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch/verified/rnaseq.py +0 -0
  60. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch/verified/trim_galore.py +0 -0
  61. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch.egg-info/SOURCES.txt +0 -0
  62. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch.egg-info/dependency_links.txt +0 -0
  63. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch.egg-info/entry_points.txt +0 -0
  64. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch.egg-info/requires.txt +0 -0
  65. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch.egg-info/top_level.txt +0 -0
  66. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/__init__.py +0 -0
  67. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/auth/__init__.py +0 -0
  68. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/auth/csrf.py +0 -0
  69. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/auth/oauth2.py +0 -0
  70. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/auth/pkce.py +0 -0
  71. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/auth/utils.py +0 -0
  72. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/centromere/__init__.py +0 -0
  73. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/centromere/ctx.py +0 -0
  74. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/centromere/utils.py +0 -0
  75. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/click_utils.py +0 -0
  76. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/constants.py +0 -0
  77. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/docker_utils/__init__.py +0 -0
  78. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/exceptions/__init__.py +0 -0
  79. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/exceptions/cache.py +0 -0
  80. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/exceptions/errors.py +0 -0
  81. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/exceptions/handler.py +0 -0
  82. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/exceptions/traceback.py +0 -0
  83. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/extras/__init__.py +0 -0
  84. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/extras/common/__init__.py +0 -0
  85. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/extras/common/serialize.py +0 -0
  86. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/extras/common/utils.py +0 -0
  87. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/extras/nextflow/__init__.py +0 -0
  88. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/extras/nextflow/channel.py +0 -0
  89. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/extras/nextflow/dag.py +0 -0
  90. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/extras/nextflow/serialize.py +0 -0
  91. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/extras/nextflow/tasks/__init__.py +0 -0
  92. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/extras/nextflow/tasks/adapters.py +0 -0
  93. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/extras/nextflow/tasks/base.py +0 -0
  94. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/extras/nextflow/tasks/input.py +0 -0
  95. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/extras/nextflow/tasks/map.py +0 -0
  96. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/extras/nextflow/tasks/merge.py +0 -0
  97. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/extras/nextflow/tasks/operator.py +0 -0
  98. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/extras/nextflow/tasks/output.py +0 -0
  99. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/extras/nextflow/workflow.py +0 -0
  100. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/extras/snakemake/__init__.py +0 -0
  101. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/extras/snakemake/config/__init__.py +0 -0
  102. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/extras/snakemake/config/parser.py +0 -0
  103. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/extras/snakemake/config/utils.py +0 -0
  104. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/extras/snakemake/serialize.py +0 -0
  105. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/extras/snakemake/single_task_snakemake.py +0 -0
  106. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/extras/snakemake/utils.py +0 -0
  107. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/extras/snakemake/workflow.py +0 -0
  108. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/menus.py +0 -0
  109. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/services/__init__.py +0 -0
  110. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/services/cp/__init__.py +0 -0
  111. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/services/cp/autocomplete.py +0 -0
  112. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/services/cp/glob.py +0 -0
  113. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/services/cp/main.py +0 -0
  114. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/services/cp/utils.py +0 -0
  115. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/services/execute/__init__.py +0 -0
  116. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/services/execute/main.py +0 -0
  117. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/services/execute/utils.py +0 -0
  118. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/services/get.py +0 -0
  119. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/services/get_executions.py +0 -0
  120. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/services/get_params.py +0 -0
  121. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/services/init/__init__.py +0 -0
  122. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/services/init/__pycache__/__init__.cpython-310.pyc +0 -0
  123. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/services/init/__pycache__/__init__.cpython-311.pyc +0 -0
  124. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/services/init/__pycache__/__init__.cpython-38.pyc +0 -0
  125. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/services/init/__pycache__/__init__.cpython-39.pyc +0 -0
  126. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/services/init/__pycache__/init.cpython-310.pyc +0 -0
  127. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/services/init/__pycache__/init.cpython-311.pyc +0 -0
  128. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/services/init/__pycache__/init.cpython-38.pyc +0 -0
  129. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/services/init/__pycache__/init.cpython-39.pyc +0 -0
  130. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/services/init/assemble_and_sort/.env +0 -0
  131. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/services/init/assemble_and_sort/LICENSE +0 -0
  132. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/services/init/assemble_and_sort/README.md +0 -0
  133. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/services/init/assemble_and_sort/__init__.py +0 -0
  134. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/services/init/assemble_and_sort/__pycache__/__init__.cpython-310.pyc +0 -0
  135. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/services/init/assemble_and_sort/assemble.py +0 -0
  136. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/services/init/assemble_and_sort/sort.py +0 -0
  137. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/services/init/assemble_and_sort/system-requirements.txt +0 -0
  138. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/services/init/common/.dockerignore +0 -0
  139. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/services/init/example_conda/__init__.py +0 -0
  140. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/services/init/example_conda/__pycache__/__init__.cpython-310.pyc +0 -0
  141. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/services/init/example_conda/conda_task.py +0 -0
  142. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/services/init/example_conda/environment.yaml +0 -0
  143. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/services/init/example_docker/__init__.py +0 -0
  144. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/services/init/example_docker/task.py +0 -0
  145. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/services/init/example_nf_integration/Dockerfile +0 -0
  146. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/services/init/example_nf_integration/latch_metadata/__init__.py +0 -0
  147. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/services/init/example_nf_integration/latch_metadata/__pycache__/__init__.cpython-311.pyc +0 -0
  148. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/services/init/example_nf_integration/main.nf +0 -0
  149. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/services/init/example_nf_integration/workflow.nf +0 -0
  150. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/services/init/example_nfcore/Dockerfile +0 -0
  151. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/services/init/example_nfcore/__init__.py +0 -0
  152. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/services/init/example_nfcore/task.py +0 -0
  153. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/services/init/example_r/__init__.py +0 -0
  154. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/services/init/example_r/__pycache__/__init__.cpython-310.pyc +0 -0
  155. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/services/init/example_r/environment.R +0 -0
  156. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/services/init/example_r/r_task.py +0 -0
  157. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/services/init/example_snakemake/.latch/latch_entrypoint +0 -0
  158. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/services/init/example_snakemake/Dockerfile +0 -0
  159. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/services/init/example_snakemake/Snakefile +0 -0
  160. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/services/init/example_snakemake/config.yaml +0 -0
  161. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/services/init/example_snakemake/environment.yaml +0 -0
  162. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/services/init/example_snakemake/latch_metadata.py +0 -0
  163. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/services/init/example_snakemake/scripts/plot-quals.py +0 -0
  164. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/services/init/example_snakemake/version +0 -0
  165. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/services/init/init.py +0 -0
  166. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/services/init/template/LICENSE +0 -0
  167. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/services/init/template/README.md +0 -0
  168. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/services/init/template/__init__.py +0 -0
  169. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/services/init/template/__pycache__/__init__.cpython-310.pyc +0 -0
  170. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/services/init/template/task.py +0 -0
  171. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/services/launch.py +0 -0
  172. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/services/local_dev.py +0 -0
  173. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/services/local_dev_old.py +0 -0
  174. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/services/login.py +0 -0
  175. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/services/ls.py +0 -0
  176. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/services/mkdir.py +0 -0
  177. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/services/move.py +0 -0
  178. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/services/preview.py +0 -0
  179. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/services/register/__init__.py +0 -0
  180. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/services/register/constants.py +0 -0
  181. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/services/register/utils.py +0 -0
  182. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/services/rm.py +0 -0
  183. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/services/stop_pod.py +0 -0
  184. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/services/sync.py +0 -0
  185. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/services/test_data/__init__.py +0 -0
  186. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/services/test_data/ls.py +0 -0
  187. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/services/test_data/remove.py +0 -0
  188. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/services/test_data/upload.py +0 -0
  189. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/services/test_data/utils.py +0 -0
  190. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/services/workspace.py +0 -0
  191. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/tinyrequests.py +0 -0
  192. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/tui/__init__.py +0 -0
  193. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/utils/__init__.py +0 -0
  194. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/utils/path.py +0 -0
  195. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/latch_cli/workflow_config.py +0 -0
  196. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/pyproject.toml +0 -0
  197. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/setup.cfg +0 -0
  198. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/tests/__init__.py +0 -0
  199. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/tests/cp/__init__.py +0 -0
  200. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/tests/fixtures.py +0 -0
  201. {latch-2.39.0.dev19 → latch-2.39.0.dev20}/tests/test_ls.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: latch
3
- Version: 2.39.0.dev19
3
+ Version: 2.39.0.dev20
4
4
  Summary: The Latch SDK
5
5
  Author-email: kenny@latch.bio
6
6
  Classifier: Programming Language :: Python :: 3.8
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: latch
3
- Version: 2.39.0.dev19
3
+ Version: 2.39.0.dev20
4
4
  Summary: The Latch SDK
5
5
  Author-email: kenny@latch.bio
6
6
  Classifier: Programming Language :: Python :: 3.8
@@ -42,7 +42,9 @@ def get_node_name(vertex_id: str) -> str:
42
42
  return f"n{vertex_id}"
43
43
 
44
44
 
45
- def build_from_nextflow_dag(wf: NextflowWorkflow):
45
+ def build_from_nextflow_dag(
46
+ wf: NextflowWorkflow, *, execution_profile: Optional[str] = None
47
+ ):
46
48
  global_start_node = Node(
47
49
  id=_common_constants.GLOBAL_INPUT_NODE_ID,
48
50
  metadata=None,
@@ -158,6 +160,7 @@ def build_from_nextflow_dag(wf: NextflowWorkflow):
158
160
  import_path=Path(vertex.module),
159
161
  process_name=vertex.label,
160
162
  unaliased=vertex.unaliased,
163
+ execution_profile=execution_profile,
161
164
  wf=wf,
162
165
  )
163
166
 
@@ -391,6 +394,7 @@ def build_nf_wf(
391
394
  nf_script: Path,
392
395
  *,
393
396
  redownload_dependencies: bool = False,
397
+ execution_profile: Optional[str] = None,
394
398
  ) -> NextflowWorkflow:
395
399
  ensure_nf_dependencies(pkg_root, force_redownload=redownload_dependencies)
396
400
 
@@ -469,7 +473,7 @@ def build_nf_wf(
469
473
 
470
474
  wf = NextflowWorkflow(nf_script, main_dag)
471
475
 
472
- build_from_nextflow_dag(wf)
476
+ build_from_nextflow_dag(wf, execution_profile=execution_profile)
473
477
 
474
478
  return wf
475
479
 
@@ -104,11 +104,11 @@ def download_files(
104
104
  ):
105
105
  paths: List[Path] = []
106
106
  for channel in channels:
107
- if type(channel) != list:
108
- continue
109
-
110
- for param in channel:
111
- _extract_paths(param, paths)
107
+ if type(channel) == dict and "value" in channel:
108
+ _extract_paths(channel["value"], paths)
109
+ elif type(channel) == list:
110
+ for param in channel:
111
+ _extract_paths(param, paths)
112
112
 
113
113
  remote = _get_remote(outdir)
114
114
 
@@ -178,11 +178,11 @@ def _upload(local: Path, remote: str):
178
178
  def upload_files(channels: Dict[str, List[JSONValue]], outdir: LatchDir):
179
179
  paths: List[Path] = []
180
180
  for channel in channels.values():
181
- if type(channel) != list:
182
- continue
183
-
184
- for param in channel:
185
- _extract_paths(param, paths)
181
+ if type(channel) == dict and "value" in channel:
182
+ _extract_paths(channel["value"], paths)
183
+ elif type(channel) == list:
184
+ for param in channel:
185
+ _extract_paths(param, paths)
186
186
 
187
187
  remote = _get_remote(outdir)
188
188
 
@@ -48,7 +48,7 @@ class NextflowConditionalTask(NextflowOperatorTask):
48
48
  res = out_channels.get({repr(out_name)})
49
49
 
50
50
  if res is not None:
51
- res = json.loads(res)[0]["boolean"]
51
+ res = get_boolean_value(res)
52
52
 
53
53
  return Res{self.name}(condition=res)
54
54
  """,
@@ -1,7 +1,7 @@
1
1
  import json
2
2
  from dataclasses import fields, is_dataclass
3
3
  from pathlib import Path
4
- from typing import List, Mapping, Type
4
+ from typing import List, Mapping, Optional, Type
5
5
 
6
6
  from latch.types.directory import LatchDir
7
7
  from latch.types.file import LatchFile
@@ -24,6 +24,7 @@ class NextflowProcessTask(NextflowBaseTask):
24
24
  import_path: Path,
25
25
  process_name: str,
26
26
  unaliased: str,
27
+ execution_profile: Optional[str],
27
28
  wf: NextflowWorkflow,
28
29
  ):
29
30
  super().__init__(inputs, outputs, id, name, {}, wf, cpu=16, memory=32)
@@ -50,6 +51,7 @@ class NextflowProcessTask(NextflowBaseTask):
50
51
  self.import_path = import_path
51
52
  self.process_name = process_name
52
53
  self.unaliased = unaliased
54
+ self.execution_profile = execution_profile
53
55
 
54
56
  def get_fn_interface(self):
55
57
  input_name, input_t = list(self._python_inputs.items())[0]
@@ -112,6 +114,9 @@ class NextflowProcessTask(NextflowBaseTask):
112
114
  str(nf_script_path_in_container),
113
115
  ]
114
116
 
117
+ if self.execution_profile is not None:
118
+ run_task_entrypoint.extend(["-profile", self.execution_profile])
119
+
115
120
  for flag, val in self.wf.flags_to_params.items():
116
121
  run_task_entrypoint.extend([flag, str(val)])
117
122
 
@@ -166,17 +171,24 @@ class NextflowProcessTask(NextflowBaseTask):
166
171
 
167
172
  download_files(channel_vals, LatchDir({repr(self.wf.output_directory.remote_path)}))
168
173
 
169
- subprocess.run(
170
- [{','.join([f"str({x})" if x.startswith("wf_") else repr(x) for x in run_task_entrypoint])}],
171
- env={{
172
- **os.environ,
173
- "LATCH_INCLUDE_META": {repr(include_str)},
174
- "LATCH_EXPRESSION": {repr(self.statement)},
175
- "LATCH_RETURN": {repr(json.dumps(self.ret))},
176
- "LATCH_PARAM_VALS": json.dumps(channel_vals),
177
- }},
178
- check=True,
179
- )
174
+ try:
175
+ subprocess.run(
176
+ [{','.join([f"str({x})" if x.startswith("wf_") else repr(x) for x in run_task_entrypoint])}],
177
+ env={{
178
+ **os.environ,
179
+ "LATCH_INCLUDE_META": {repr(include_str)},
180
+ "LATCH_EXPRESSION": {repr(self.statement)},
181
+ "LATCH_RETURN": {repr(json.dumps(self.ret))},
182
+ "LATCH_PARAM_VALS": json.dumps(channel_vals),
183
+ }},
184
+ check=True,
185
+ )
186
+ except subprocess.CalledProcessError:
187
+ log = Path("/root/.nextflow.log").read_text()
188
+ print("\n\n\n\n\n" + log)
189
+
190
+ import time
191
+ time.sleep(10000)
180
192
 
181
193
  out_channels = {{}}
182
194
  files = [Path(f) for f in glob.glob(".latch/task-outputs/*.json")]
@@ -405,6 +405,12 @@ def execute(
405
405
  default=False,
406
406
  help="Redownload external Nextflow dependencies",
407
407
  )
408
+ @click.option(
409
+ "--execution-profile",
410
+ type=str,
411
+ default=None,
412
+ help="Set execution profile for Nextflow workflow",
413
+ )
408
414
  def register(
409
415
  pkg_root: str,
410
416
  disable_auto_version: bool,
@@ -416,6 +422,7 @@ def register(
416
422
  cache_tasks: bool,
417
423
  nf_script: Optional[Path],
418
424
  redownload_dependencies: bool,
425
+ execution_profile: Optional[str],
419
426
  ):
420
427
  """Register local workflow code to Latch.
421
428
 
@@ -438,6 +445,7 @@ def register(
438
445
  snakefile=snakefile,
439
446
  nf_script=nf_script,
440
447
  nf_redownload_dependencies=redownload_dependencies,
448
+ nf_execution_profile=execution_profile,
441
449
  progress_plain=(docker_progress == "auto" and not sys.stdout.isatty())
442
450
  or docker_progress == "plain",
443
451
  use_new_centromere=use_new_centromere,
@@ -275,6 +275,7 @@ def register(
275
275
  snakefile: Optional[Path] = None,
276
276
  nf_script: Optional[Path] = None,
277
277
  nf_redownload_dependencies: bool = False,
278
+ nf_execution_profile: Optional[str] = None,
278
279
  progress_plain: bool = False,
279
280
  cache_tasks: bool = False,
280
281
  use_new_centromere: bool = False,
@@ -420,6 +421,7 @@ def register(
420
421
  ctx.pkg_root,
421
422
  ctx.nf_script,
422
423
  redownload_dependencies=nf_redownload_dependencies,
424
+ execution_profile=nf_execution_profile,
423
425
  )
424
426
  generate_nf_entrypoint(nf_wf, ctx.pkg_root, ctx.nf_script)
425
427
 
@@ -13,7 +13,7 @@ if cur_ver < (3, 8) or cur_ver > (3, 11):
13
13
 
14
14
  setup(
15
15
  name="latch",
16
- version="v2.39.0.dev19",
16
+ version="v2.39.0.dev20",
17
17
  author_email="kenny@latch.bio",
18
18
  description="The Latch SDK",
19
19
  packages=find_packages(),
File without changes
File without changes
File without changes
File without changes