latch 2.40.4.dev8__tar.gz → 2.40.4.dev10__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 (204) hide show
  1. {latch-2.40.4.dev8/latch.egg-info → latch-2.40.4.dev10}/PKG-INFO +1 -1
  2. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch/types/directory.py +2 -0
  3. {latch-2.40.4.dev8 → latch-2.40.4.dev10/latch.egg-info}/PKG-INFO +1 -1
  4. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch.egg-info/SOURCES.txt +11 -0
  5. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/extras/common/config/utils.py +8 -0
  6. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/extras/nextflow/build.py +2 -1
  7. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/extras/nextflow/tasks/operator.py +12 -6
  8. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/extras/nextflow/tasks/process.py +10 -6
  9. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/extras/nextflow/workflow.py +42 -24
  10. latch-2.40.4.dev10/latch_cli/services/init/__pycache__/__init__.cpython-310.pyc +0 -0
  11. latch-2.40.4.dev10/latch_cli/services/init/__pycache__/__init__.cpython-311.pyc +0 -0
  12. latch-2.40.4.dev10/latch_cli/services/init/__pycache__/__init__.cpython-38.pyc +0 -0
  13. latch-2.40.4.dev10/latch_cli/services/init/__pycache__/__init__.cpython-39.pyc +0 -0
  14. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/services/init/__pycache__/init.cpython-310.pyc +0 -0
  15. latch-2.40.4.dev10/latch_cli/services/init/__pycache__/init.cpython-311.pyc +0 -0
  16. latch-2.40.4.dev10/latch_cli/services/init/__pycache__/init.cpython-38.pyc +0 -0
  17. latch-2.40.4.dev10/latch_cli/services/init/__pycache__/init.cpython-39.pyc +0 -0
  18. latch-2.40.4.dev10/latch_cli/services/init/assemble_and_sort/__pycache__/__init__.cpython-310.pyc +0 -0
  19. latch-2.40.4.dev10/latch_cli/services/init/example_conda/__pycache__/__init__.cpython-310.pyc +0 -0
  20. latch-2.40.4.dev10/latch_cli/services/init/example_nf_integration/latch_metadata/__pycache__/__init__.cpython-311.pyc +0 -0
  21. latch-2.40.4.dev10/latch_cli/services/init/example_r/__pycache__/__init__.cpython-310.pyc +0 -0
  22. latch-2.40.4.dev10/latch_cli/services/init/template/__pycache__/__init__.cpython-310.pyc +0 -0
  23. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/setup.py +1 -1
  24. latch-2.40.4.dev8/latch_cli/services/init/__pycache__/__init__.cpython-310.pyc +0 -0
  25. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/LICENSE +0 -0
  26. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/MANIFEST.in +0 -0
  27. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/README.md +0 -0
  28. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch/__init__.py +0 -0
  29. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch/account.py +0 -0
  30. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch/executions.py +0 -0
  31. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch/functions/__init__.py +0 -0
  32. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch/functions/messages.py +0 -0
  33. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch/functions/operators.py +0 -0
  34. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch/functions/secrets.py +0 -0
  35. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch/ldata/__init__.py +0 -0
  36. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch/ldata/_transfer/__init__.py +0 -0
  37. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch/ldata/_transfer/download.py +0 -0
  38. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch/ldata/_transfer/manager.py +0 -0
  39. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch/ldata/_transfer/node.py +0 -0
  40. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch/ldata/_transfer/progress.py +0 -0
  41. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch/ldata/_transfer/remote_copy.py +0 -0
  42. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch/ldata/_transfer/throttle.py +0 -0
  43. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch/ldata/_transfer/upload.py +0 -0
  44. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch/ldata/_transfer/utils.py +0 -0
  45. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch/ldata/path.py +0 -0
  46. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch/ldata/type.py +0 -0
  47. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch/registry/__init__.py +0 -0
  48. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch/registry/project.py +0 -0
  49. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch/registry/record.py +0 -0
  50. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch/registry/table.py +0 -0
  51. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch/registry/types.py +0 -0
  52. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch/registry/upstream_types/__init__.py +0 -0
  53. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch/registry/upstream_types/types.py +0 -0
  54. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch/registry/upstream_types/values.py +0 -0
  55. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch/registry/utils.py +0 -0
  56. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch/resources/__init__.py +0 -0
  57. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch/resources/conditional.py +0 -0
  58. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch/resources/dynamic.py +0 -0
  59. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch/resources/launch_plan.py +0 -0
  60. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch/resources/map_tasks.py +0 -0
  61. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch/resources/reference_workflow.py +0 -0
  62. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch/resources/tasks.py +0 -0
  63. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch/resources/workflow.py +0 -0
  64. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch/types/__init__.py +0 -0
  65. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch/types/file.py +0 -0
  66. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch/types/glob.py +0 -0
  67. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch/types/json.py +0 -0
  68. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch/types/metadata.py +0 -0
  69. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch/types/utils.py +0 -0
  70. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch/utils.py +0 -0
  71. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch/verified/__init__.py +0 -0
  72. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch/verified/deseq2.py +0 -0
  73. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch/verified/mafft.py +0 -0
  74. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch/verified/pathway.py +0 -0
  75. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch/verified/rnaseq.py +0 -0
  76. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch/verified/trim_galore.py +0 -0
  77. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch.egg-info/dependency_links.txt +0 -0
  78. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch.egg-info/entry_points.txt +0 -0
  79. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch.egg-info/requires.txt +0 -0
  80. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch.egg-info/top_level.txt +0 -0
  81. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/__init__.py +0 -0
  82. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/auth/__init__.py +0 -0
  83. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/auth/csrf.py +0 -0
  84. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/auth/oauth2.py +0 -0
  85. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/auth/pkce.py +0 -0
  86. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/auth/utils.py +0 -0
  87. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/centromere/__init__.py +0 -0
  88. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/centromere/ctx.py +0 -0
  89. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/centromere/utils.py +0 -0
  90. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/click_utils.py +0 -0
  91. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/constants.py +0 -0
  92. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/docker_utils/__init__.py +0 -0
  93. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/exceptions/__init__.py +0 -0
  94. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/exceptions/cache.py +0 -0
  95. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/exceptions/errors.py +0 -0
  96. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/exceptions/handler.py +0 -0
  97. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/exceptions/traceback.py +0 -0
  98. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/extras/__init__.py +0 -0
  99. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/extras/common/__init__.py +0 -0
  100. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/extras/common/config/__init__.py +0 -0
  101. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/extras/common/config/parser.py +0 -0
  102. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/extras/common/serialize.py +0 -0
  103. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/extras/common/utils.py +0 -0
  104. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/extras/nextflow/__init__.py +0 -0
  105. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/extras/nextflow/channel.py +0 -0
  106. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/extras/nextflow/config.py +0 -0
  107. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/extras/nextflow/dag.py +0 -0
  108. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/extras/nextflow/file_persistence.py +0 -0
  109. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/extras/nextflow/serialize.py +0 -0
  110. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/extras/nextflow/tasks/__init__.py +0 -0
  111. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/extras/nextflow/tasks/adapters.py +0 -0
  112. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/extras/nextflow/tasks/base.py +0 -0
  113. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/extras/nextflow/tasks/conditional.py +0 -0
  114. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/extras/nextflow/tasks/map.py +0 -0
  115. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/extras/nextflow/tasks/merge.py +0 -0
  116. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/extras/snakemake/__init__.py +0 -0
  117. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/extras/snakemake/config.py +0 -0
  118. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/extras/snakemake/serialize.py +0 -0
  119. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/extras/snakemake/single_task_snakemake.py +0 -0
  120. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/extras/snakemake/utils.py +0 -0
  121. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/extras/snakemake/workflow.py +0 -0
  122. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/main.py +0 -0
  123. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/menus.py +0 -0
  124. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/services/__init__.py +0 -0
  125. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/services/cp/__init__.py +0 -0
  126. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/services/cp/autocomplete.py +0 -0
  127. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/services/cp/glob.py +0 -0
  128. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/services/cp/main.py +0 -0
  129. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/services/cp/utils.py +0 -0
  130. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/services/execute/__init__.py +0 -0
  131. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/services/execute/main.py +0 -0
  132. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/services/execute/utils.py +0 -0
  133. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/services/get.py +0 -0
  134. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/services/get_executions.py +0 -0
  135. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/services/get_params.py +0 -0
  136. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/services/init/__init__.py +0 -0
  137. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/services/init/assemble_and_sort/.env +0 -0
  138. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/services/init/assemble_and_sort/LICENSE +0 -0
  139. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/services/init/assemble_and_sort/README.md +0 -0
  140. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/services/init/assemble_and_sort/__init__.py +0 -0
  141. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/services/init/assemble_and_sort/assemble.py +0 -0
  142. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/services/init/assemble_and_sort/sort.py +0 -0
  143. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/services/init/assemble_and_sort/system-requirements.txt +0 -0
  144. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/services/init/common/.dockerignore +0 -0
  145. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/services/init/example_conda/__init__.py +0 -0
  146. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/services/init/example_conda/conda_task.py +0 -0
  147. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/services/init/example_conda/environment.yaml +0 -0
  148. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/services/init/example_docker/__init__.py +0 -0
  149. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/services/init/example_docker/task.py +0 -0
  150. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/services/init/example_nextflow/main.nf +0 -0
  151. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/services/init/example_nextflow/nextflow.config +0 -0
  152. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/services/init/example_nextflow/workflow.nf +0 -0
  153. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/services/init/example_nfcore/Dockerfile +0 -0
  154. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/services/init/example_nfcore/__init__.py +0 -0
  155. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/services/init/example_nfcore/task.py +0 -0
  156. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/services/init/example_r/__init__.py +0 -0
  157. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/services/init/example_r/environment.R +0 -0
  158. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/services/init/example_r/r_task.py +0 -0
  159. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/services/init/example_snakemake/.latch/latch_entrypoint +0 -0
  160. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/services/init/example_snakemake/Dockerfile +0 -0
  161. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/services/init/example_snakemake/Snakefile +0 -0
  162. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/services/init/example_snakemake/config.yaml +0 -0
  163. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/services/init/example_snakemake/environment.yaml +0 -0
  164. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/services/init/example_snakemake/latch_metadata.py +0 -0
  165. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/services/init/example_snakemake/scripts/plot-quals.py +0 -0
  166. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/services/init/example_snakemake/version +0 -0
  167. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/services/init/init.py +0 -0
  168. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/services/init/template/LICENSE +0 -0
  169. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/services/init/template/README.md +0 -0
  170. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/services/init/template/__init__.py +0 -0
  171. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/services/init/template/task.py +0 -0
  172. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/services/launch.py +0 -0
  173. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/services/local_dev.py +0 -0
  174. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/services/local_dev_old.py +0 -0
  175. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/services/login.py +0 -0
  176. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/services/ls.py +0 -0
  177. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/services/mkdir.py +0 -0
  178. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/services/move.py +0 -0
  179. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/services/preview.py +0 -0
  180. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/services/register/__init__.py +0 -0
  181. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/services/register/constants.py +0 -0
  182. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/services/register/register.py +0 -0
  183. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/services/register/utils.py +0 -0
  184. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/services/rm.py +0 -0
  185. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/services/stop_pod.py +0 -0
  186. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/services/sync.py +0 -0
  187. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/services/test_data/__init__.py +0 -0
  188. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/services/test_data/ls.py +0 -0
  189. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/services/test_data/remove.py +0 -0
  190. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/services/test_data/upload.py +0 -0
  191. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/services/test_data/utils.py +0 -0
  192. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/services/workspace.py +0 -0
  193. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/tinyrequests.py +0 -0
  194. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/tui/__init__.py +0 -0
  195. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/utils/__init__.py +0 -0
  196. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/utils/path.py +0 -0
  197. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/utils/workflow.py +0 -0
  198. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/latch_cli/workflow_config.py +0 -0
  199. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/pyproject.toml +0 -0
  200. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/setup.cfg +0 -0
  201. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/tests/__init__.py +0 -0
  202. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/tests/cp/__init__.py +0 -0
  203. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/tests/fixtures.py +0 -0
  204. {latch-2.40.4.dev8 → latch-2.40.4.dev10}/tests/test_ls.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: latch
3
- Version: 2.40.4.dev8
3
+ Version: 2.40.4.dev10
4
4
  Summary: The Latch SDK
5
5
  Author-email: kenny@latch.bio
6
6
  Classifier: Programming Language :: Python :: 3.8
@@ -115,8 +115,10 @@ class LatchDir(FlyteDirectory):
115
115
 
116
116
  if is_valid_url(self.path) and remote_path is None:
117
117
  self._remote_directory = self.path
118
+ self.raw_remote_path = str(path)
118
119
  else:
119
120
  self._remote_directory = None if remote_path is None else str(remote_path)
121
+ self.raw_remote_path = self._remote_directory
120
122
 
121
123
  if kwargs.get("downloader") is not None:
122
124
  super().__init__(self.path, kwargs["downloader"], self._remote_directory)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: latch
3
- Version: 2.40.4.dev8
3
+ Version: 2.40.4.dev10
4
4
  Summary: The Latch SDK
5
5
  Author-email: kenny@latch.bio
6
6
  Classifier: Programming Language :: Python :: 3.8
@@ -136,7 +136,13 @@ latch_cli/services/execute/utils.py
136
136
  latch_cli/services/init/__init__.py
137
137
  latch_cli/services/init/init.py
138
138
  latch_cli/services/init/__pycache__/__init__.cpython-310.pyc
139
+ latch_cli/services/init/__pycache__/__init__.cpython-311.pyc
140
+ latch_cli/services/init/__pycache__/__init__.cpython-38.pyc
141
+ latch_cli/services/init/__pycache__/__init__.cpython-39.pyc
139
142
  latch_cli/services/init/__pycache__/init.cpython-310.pyc
143
+ latch_cli/services/init/__pycache__/init.cpython-311.pyc
144
+ latch_cli/services/init/__pycache__/init.cpython-38.pyc
145
+ latch_cli/services/init/__pycache__/init.cpython-39.pyc
140
146
  latch_cli/services/init/assemble_and_sort/.env
141
147
  latch_cli/services/init/assemble_and_sort/LICENSE
142
148
  latch_cli/services/init/assemble_and_sort/README.md
@@ -144,21 +150,25 @@ latch_cli/services/init/assemble_and_sort/__init__.py
144
150
  latch_cli/services/init/assemble_and_sort/assemble.py
145
151
  latch_cli/services/init/assemble_and_sort/sort.py
146
152
  latch_cli/services/init/assemble_and_sort/system-requirements.txt
153
+ latch_cli/services/init/assemble_and_sort/__pycache__/__init__.cpython-310.pyc
147
154
  latch_cli/services/init/common/.dockerignore
148
155
  latch_cli/services/init/example_conda/__init__.py
149
156
  latch_cli/services/init/example_conda/conda_task.py
150
157
  latch_cli/services/init/example_conda/environment.yaml
158
+ latch_cli/services/init/example_conda/__pycache__/__init__.cpython-310.pyc
151
159
  latch_cli/services/init/example_docker/__init__.py
152
160
  latch_cli/services/init/example_docker/task.py
153
161
  latch_cli/services/init/example_nextflow/main.nf
154
162
  latch_cli/services/init/example_nextflow/nextflow.config
155
163
  latch_cli/services/init/example_nextflow/workflow.nf
164
+ latch_cli/services/init/example_nf_integration/latch_metadata/__pycache__/__init__.cpython-311.pyc
156
165
  latch_cli/services/init/example_nfcore/Dockerfile
157
166
  latch_cli/services/init/example_nfcore/__init__.py
158
167
  latch_cli/services/init/example_nfcore/task.py
159
168
  latch_cli/services/init/example_r/__init__.py
160
169
  latch_cli/services/init/example_r/environment.R
161
170
  latch_cli/services/init/example_r/r_task.py
171
+ latch_cli/services/init/example_r/__pycache__/__init__.cpython-310.pyc
162
172
  latch_cli/services/init/example_snakemake/Dockerfile
163
173
  latch_cli/services/init/example_snakemake/Snakefile
164
174
  latch_cli/services/init/example_snakemake/config.yaml
@@ -171,6 +181,7 @@ latch_cli/services/init/template/LICENSE
171
181
  latch_cli/services/init/template/README.md
172
182
  latch_cli/services/init/template/__init__.py
173
183
  latch_cli/services/init/template/task.py
184
+ latch_cli/services/init/template/__pycache__/__init__.cpython-310.pyc
174
185
  latch_cli/services/register/__init__.py
175
186
  latch_cli/services/register/constants.py
176
187
  latch_cli/services/register/register.py
@@ -1,4 +1,5 @@
1
1
  from dataclasses import fields, is_dataclass, make_dataclass
2
+ from enum import Enum
2
3
  from typing import Any, Dict, List, Optional, Type, Union, get_args, get_origin
3
4
 
4
5
  from flytekit.core.annotation import FlyteAnnotation
@@ -220,6 +221,13 @@ def get_preamble(typ: Type, *, make_optionals: bool = False) -> str:
220
221
  [get_preamble(t, make_optionals=make_optionals) for t in get_args(typ)]
221
222
  )
222
223
 
224
+ if issubclass(typ, Enum):
225
+ lines = [f"class {typ.__name__}(Enum):"]
226
+ for k, v in typ._member_map_.items():
227
+ lines.append(f" {k} = {repr(v.value)}")
228
+
229
+ return "\n".join(lines) + "\n\n\n"
230
+
223
231
  assert is_dataclass(typ), typ
224
232
 
225
233
  preambles = []
@@ -531,6 +531,7 @@ def generate_nf_entrypoint(
531
531
 
532
532
  from flytekit.extras.persistence import LatchPersistence
533
533
  from latch_cli.extras.nextflow.file_persistence import download_files, upload_files
534
+ from latch_cli.extras.nextflow.workflow import get_flags
534
535
  from latch_cli.extras.nextflow.channel import get_mapper_inputs, get_boolean_value, get_mapper_outputs
535
536
  from latch_cli.utils import check_exists_and_rename, get_parameter_json_value, urljoins
536
537
  from latch_cli.utils.workflow import _override_task_status
@@ -551,7 +552,7 @@ def generate_nf_entrypoint(
551
552
  if any([is_samplesheet_param(t) for t in wf.python_interface.inputs.values()]):
552
553
  preamble += reindent(
553
554
  r"""
554
- from latch_metadata.parameters import construct_samplesheet
555
+ from latch_metadata.parameters import construct_samplesheet
555
556
  """,
556
557
  0,
557
558
  )
@@ -129,9 +129,6 @@ class NextflowOperatorTask(NextflowBaseTask):
129
129
  "lib",
130
130
  ]
131
131
 
132
- for flag, val in self.wf.flags_to_params.items():
133
- run_task_entrypoint.extend([flag, str(val)])
134
-
135
132
  code_block += reindent(
136
133
  """
137
134
  wf_paths = {}
@@ -191,23 +188,32 @@ class NextflowOperatorTask(NextflowBaseTask):
191
188
  upload_str = ""
192
189
  download_str = ""
193
190
  if do_file_io:
194
- download_str = rf"""download_files(channel_vals, LatchDir({repr(self.wf.output_directory.remote_path)}))"""
195
- upload_str = rf"""upload_files(out_channels, LatchDir({repr(self.wf.output_directory.remote_path)}))"""
191
+ download_str = rf"""download_files(channel_vals, LatchDir({repr(self.wf.output_directory.raw_remote_path)}))"""
192
+ upload_str = rf"""upload_files(out_channels, LatchDir({repr(self.wf.output_directory.raw_remote_path)}))"""
196
193
 
197
194
  if self.script_path.resolve() != self.wf.nf_script.resolve():
198
195
  stem = self.script_path.resolve().relative_to(self.wf.pkg_root.resolve())
199
196
  run_task_entrypoint[2] = str(Path("/root") / stem)
200
197
  run_task_entrypoint.extend(["-entry", self.calling_subwf_name])
201
198
 
199
+ flag_args = {}
200
+ for param in self.wf_inputs:
201
+ key = param[len("wf_") :]
202
+ flag_args[key] = param
203
+
202
204
  code_block += reindent(
203
205
  rf"""
206
+
207
+
204
208
  channel_vals = [{", ".join([f"json.loads({x})" for x in self.channel_inputs])}]
205
209
 
206
210
  {download_str}
207
211
 
212
+ flags = get_flags(wf_paths, {", ".join([f"{k}={v}" for k, v in flag_args.items()])})
213
+
208
214
  try:
209
215
  subprocess.run(
210
- [{', '.join([f"str({x})" if x.startswith("wf_") else repr(x) for x in run_task_entrypoint])}],
216
+ [{', '.join([repr(x) for x in run_task_entrypoint])}, *flags],
211
217
  env={{
212
218
  **os.environ,
213
219
  "LATCH_CONFIG_DIR_OVERRIDE": str(Path.cwd()),
@@ -97,9 +97,6 @@ class NextflowProcessTask(NextflowBaseTask):
97
97
  if self.execution_profile is not None:
98
98
  run_task_entrypoint.extend(["-profile", self.execution_profile])
99
99
 
100
- for flag, val in self.wf.flags_to_params.items():
101
- run_task_entrypoint.extend([flag, str(val)])
102
-
103
100
  for k, typ in self.wf_inputs.items():
104
101
  code_block += reindent(
105
102
  f"""
@@ -177,17 +174,24 @@ class NextflowProcessTask(NextflowBaseTask):
177
174
  0,
178
175
  )
179
176
 
177
+ flag_args = {}
178
+ for param in self.wf_inputs:
179
+ key = param[len("wf_") :]
180
+ flag_args[key] = param
181
+
180
182
  code_block += reindent(
181
183
  rf"""
182
184
 
183
185
  channel_vals = [{','.join([f"json.loads(default.{x})" for x in self.channel_inputs])}]
184
186
 
185
187
  if not {pre_execute}:
186
- download_files(channel_vals, LatchDir({repr(self.wf.output_directory.remote_path)}))
188
+ download_files(channel_vals, LatchDir({repr(self.wf.output_directory.raw_remote_path)}))
189
+
190
+ flags = get_flags(wf_paths, {", ".join([f"{k}={v}" for k, v in flag_args.items()])})
187
191
 
188
192
  try:
189
193
  subprocess.run(
190
- [{','.join([f"str({x})" if x.startswith("wf_") else repr(x) for x in run_task_entrypoint])}],
194
+ [{','.join([repr(x) for x in run_task_entrypoint])}, *flags],
191
195
  env={{
192
196
  **os.environ,
193
197
  "LATCH_BIN_DIR_OVERRIDE": str(Path.cwd() / "bin"),
@@ -301,7 +305,7 @@ class NextflowProcessTask(NextflowBaseTask):
301
305
  print(out_channels)
302
306
 
303
307
  publish_dir = {self.wf.publish_dir_param}
304
- upload_files(out_channels, LatchDir({repr(self.wf.output_directory.remote_path)}), publish_dir)
308
+ upload_files(out_channels, LatchDir({repr(self.wf.output_directory.raw_remote_path)}), publish_dir)
305
309
 
306
310
  out_channels = {{k: json.dumps(v) for k, v in out_channels.items()}}
307
311
 
@@ -1,6 +1,7 @@
1
1
  from dataclasses import fields, is_dataclass
2
+ from enum import Enum
2
3
  from pathlib import Path
3
- from typing import Any, Dict, List, Tuple, Type
4
+ from typing import Any, Dict, List, Tuple, Type, TypeVar, Union, get_args, get_origin
4
5
 
5
6
  import click
6
7
  from flytekit.core.class_based_resolver import ClassStorageTaskResolver
@@ -15,6 +16,7 @@ from flytekit.core.workflow import (
15
16
  from flytekit.exceptions import scopes as exception_scopes
16
17
 
17
18
  from latch.types import metadata
19
+ from latch.types.file import LatchFile
18
20
  from latch_cli.extras.common.utils import (
19
21
  is_blob_type,
20
22
  is_downloadable_blob_type,
@@ -23,30 +25,52 @@ from latch_cli.extras.common.utils import (
23
25
 
24
26
  from .dag import DAG
25
27
 
26
- # def _get_flattened_inputs(
27
- # key: str, t: Type, val: Any, inputs: Dict[str, Tuple[Type, Any]]
28
- # ):
29
- # if not is_dataclass(t):
30
- # inputs[key] = (t, val)
31
- # return
32
28
 
33
- # for f in fields(t):
34
- # v = val
35
- # if val is not None:
36
- # v = getattr()
29
+ def get_flags(wf_paths: Dict[str, Path], **kwargs) -> List[str]:
30
+ assert metadata._nextflow_metadata is not None
37
31
 
32
+ flags = []
33
+ for key in kwargs.keys():
34
+ param = metadata._nextflow_metadata.parameters.get(key)
35
+ assert param is not None, f"Param {key} is not a workflow parameter"
38
36
 
39
- def _get_flags_to_params(key: str, t: Type, flags: Dict[str, str]):
40
- if is_output_dir(t):
37
+ t = param.type
38
+ if param.samplesheet:
39
+ t = LatchFile
40
+ wf_paths[f"wf_{key}"] = kwargs[key]
41
+
42
+ v = kwargs[key]
43
+
44
+ _add_flags(key, t, v, flags, wf_paths)
45
+
46
+ return flags
47
+
48
+
49
+ T = TypeVar("T")
50
+
51
+
52
+ def _add_flags(key: str, t: Type[T], v: T, flags: List[str], wf_paths: Dict[str, Path]):
53
+ if v is None or is_output_dir(t):
41
54
  return
42
55
 
43
- if is_blob_type(t):
44
- flags[f"--{key}"] = f"wf_paths['wf_{key}']"
56
+ if get_origin(t) is Union:
57
+ for arg in get_args(t):
58
+ if isinstance(v, arg):
59
+ _add_flags(key, arg, v, flags, wf_paths)
60
+ return
61
+
62
+ if t is bool:
63
+ if v:
64
+ flags.append(f"--{key}")
65
+ elif is_blob_type(t):
66
+ flags.extend([f"--{key}", str(wf_paths[f"wf_{key}"])])
45
67
  elif is_dataclass(t):
46
68
  for f in fields(t):
47
- _get_flags_to_params(f"{key}.{f.name}", f.type, flags)
69
+ _add_flags(f"{key}.{f.name}", f.type, getattr(v, f.name), flags, wf_paths)
70
+ elif issubclass(t, Enum):
71
+ flags.extend([f"--{key}", getattr(v, "value")])
48
72
  else:
49
- flags[f"--{key}"] = f"wf_{key}"
73
+ flags.extend([f"--{key}", str(v)])
50
74
 
51
75
 
52
76
  class NextflowWorkflow(WorkflowBase, ClassStorageTaskResolver):
@@ -67,6 +91,7 @@ class NextflowWorkflow(WorkflowBase, ClassStorageTaskResolver):
67
91
  "to your workflow metadata to populate this page.\nMore information",
68
92
  "[here](https://wiki.latch.bio/docs/nextflow/quickstart).",
69
93
  )
94
+
70
95
  docstring = Docstring(
71
96
  f"{metadata._nextflow_metadata.display_name}\n\n{markdown_content}\n\n"
72
97
  + str(metadata._nextflow_metadata)
@@ -81,13 +106,6 @@ class NextflowWorkflow(WorkflowBase, ClassStorageTaskResolver):
81
106
  docstring=docstring,
82
107
  )
83
108
 
84
- self.flattened_inputs = {}
85
-
86
- self.flags_to_params = {}
87
- for k, v in metadata._nextflow_metadata.parameters.items():
88
- assert v.type is not None
89
- _get_flags_to_params(k, v.type, self.flags_to_params)
90
-
91
109
  self.downloadable_params = {
92
110
  k
93
111
  for k, v in metadata._nextflow_metadata.parameters.items()
@@ -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.40.4.dev8",
16
+ version="v2.40.4.dev10",
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
File without changes
File without changes