latch 2.40.4.dev2__tar.gz → 2.40.4.dev4__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 (209) hide show
  1. latch-2.40.4.dev4/PKG-INFO +13 -0
  2. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch/types/metadata.py +12 -0
  3. latch-2.40.4.dev4/latch.egg-info/PKG-INFO +13 -0
  4. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch.egg-info/SOURCES.txt +3 -11
  5. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch.egg-info/requires.txt +1 -1
  6. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/extras/common/utils.py +16 -2
  7. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/extras/nextflow/build.py +9 -1
  8. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/extras/nextflow/tasks/operator.py +9 -2
  9. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/extras/nextflow/tasks/process.py +14 -2
  10. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/extras/nextflow/workflow.py +13 -2
  11. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/main.py +0 -2
  12. latch-2.40.4.dev4/latch_cli/services/init/__pycache__/__init__.cpython-310.pyc +0 -0
  13. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/services/init/__pycache__/init.cpython-310.pyc +0 -0
  14. latch-2.40.4.dev4/latch_cli/services/init/example_docker/.__init__.py.swn +0 -0
  15. latch-2.40.4.dev4/latch_cli/services/init/example_docker/.__init__.py.swo +0 -0
  16. latch-2.40.4.dev4/latch_cli/services/init/example_docker/.__init__.py.swp +0 -0
  17. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/services/register/utils.py +0 -1
  18. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/setup.py +2 -2
  19. latch-2.40.4.dev2/PKG-INFO +0 -39
  20. latch-2.40.4.dev2/latch.egg-info/PKG-INFO +0 -39
  21. latch-2.40.4.dev2/latch_cli/services/init/__pycache__/__init__.cpython-310.pyc +0 -0
  22. latch-2.40.4.dev2/latch_cli/services/init/__pycache__/__init__.cpython-311.pyc +0 -0
  23. latch-2.40.4.dev2/latch_cli/services/init/__pycache__/__init__.cpython-38.pyc +0 -0
  24. latch-2.40.4.dev2/latch_cli/services/init/__pycache__/__init__.cpython-39.pyc +0 -0
  25. latch-2.40.4.dev2/latch_cli/services/init/__pycache__/init.cpython-311.pyc +0 -0
  26. latch-2.40.4.dev2/latch_cli/services/init/__pycache__/init.cpython-38.pyc +0 -0
  27. latch-2.40.4.dev2/latch_cli/services/init/__pycache__/init.cpython-39.pyc +0 -0
  28. latch-2.40.4.dev2/latch_cli/services/init/assemble_and_sort/__pycache__/__init__.cpython-310.pyc +0 -0
  29. latch-2.40.4.dev2/latch_cli/services/init/example_conda/__pycache__/__init__.cpython-310.pyc +0 -0
  30. latch-2.40.4.dev2/latch_cli/services/init/example_nf_integration/latch_metadata/__pycache__/__init__.cpython-311.pyc +0 -0
  31. latch-2.40.4.dev2/latch_cli/services/init/example_r/__pycache__/__init__.cpython-310.pyc +0 -0
  32. latch-2.40.4.dev2/latch_cli/services/init/template/__pycache__/__init__.cpython-310.pyc +0 -0
  33. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/LICENSE +0 -0
  34. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/MANIFEST.in +0 -0
  35. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/README.md +0 -0
  36. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch/__init__.py +0 -0
  37. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch/account.py +0 -0
  38. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch/executions.py +0 -0
  39. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch/functions/__init__.py +0 -0
  40. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch/functions/messages.py +0 -0
  41. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch/functions/operators.py +0 -0
  42. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch/functions/secrets.py +0 -0
  43. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch/ldata/__init__.py +0 -0
  44. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch/ldata/_transfer/__init__.py +0 -0
  45. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch/ldata/_transfer/download.py +0 -0
  46. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch/ldata/_transfer/manager.py +0 -0
  47. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch/ldata/_transfer/node.py +0 -0
  48. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch/ldata/_transfer/progress.py +0 -0
  49. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch/ldata/_transfer/remote_copy.py +0 -0
  50. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch/ldata/_transfer/throttle.py +0 -0
  51. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch/ldata/_transfer/upload.py +0 -0
  52. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch/ldata/_transfer/utils.py +0 -0
  53. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch/ldata/path.py +0 -0
  54. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch/ldata/type.py +0 -0
  55. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch/registry/__init__.py +0 -0
  56. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch/registry/project.py +0 -0
  57. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch/registry/record.py +0 -0
  58. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch/registry/table.py +0 -0
  59. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch/registry/types.py +0 -0
  60. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch/registry/upstream_types/__init__.py +0 -0
  61. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch/registry/upstream_types/types.py +0 -0
  62. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch/registry/upstream_types/values.py +0 -0
  63. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch/registry/utils.py +0 -0
  64. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch/resources/__init__.py +0 -0
  65. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch/resources/conditional.py +0 -0
  66. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch/resources/dynamic.py +0 -0
  67. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch/resources/launch_plan.py +0 -0
  68. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch/resources/map_tasks.py +0 -0
  69. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch/resources/reference_workflow.py +0 -0
  70. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch/resources/tasks.py +0 -0
  71. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch/resources/workflow.py +0 -0
  72. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch/types/__init__.py +0 -0
  73. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch/types/directory.py +0 -0
  74. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch/types/file.py +0 -0
  75. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch/types/glob.py +0 -0
  76. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch/types/json.py +0 -0
  77. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch/types/utils.py +0 -0
  78. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch/utils.py +0 -0
  79. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch/verified/__init__.py +0 -0
  80. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch/verified/deseq2.py +0 -0
  81. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch/verified/mafft.py +0 -0
  82. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch/verified/pathway.py +0 -0
  83. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch/verified/rnaseq.py +0 -0
  84. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch/verified/trim_galore.py +0 -0
  85. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch.egg-info/dependency_links.txt +0 -0
  86. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch.egg-info/entry_points.txt +0 -0
  87. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch.egg-info/top_level.txt +0 -0
  88. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/__init__.py +0 -0
  89. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/auth/__init__.py +0 -0
  90. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/auth/csrf.py +0 -0
  91. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/auth/oauth2.py +0 -0
  92. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/auth/pkce.py +0 -0
  93. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/auth/utils.py +0 -0
  94. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/centromere/__init__.py +0 -0
  95. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/centromere/ctx.py +0 -0
  96. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/centromere/utils.py +0 -0
  97. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/click_utils.py +0 -0
  98. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/constants.py +0 -0
  99. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/docker_utils/__init__.py +0 -0
  100. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/exceptions/__init__.py +0 -0
  101. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/exceptions/cache.py +0 -0
  102. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/exceptions/errors.py +0 -0
  103. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/exceptions/handler.py +0 -0
  104. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/exceptions/traceback.py +0 -0
  105. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/extras/__init__.py +0 -0
  106. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/extras/common/__init__.py +0 -0
  107. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/extras/common/config/__init__.py +0 -0
  108. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/extras/common/config/parser.py +0 -0
  109. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/extras/common/config/utils.py +0 -0
  110. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/extras/common/serialize.py +0 -0
  111. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/extras/nextflow/__init__.py +0 -0
  112. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/extras/nextflow/channel.py +0 -0
  113. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/extras/nextflow/config.py +0 -0
  114. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/extras/nextflow/dag.py +0 -0
  115. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/extras/nextflow/file_persistence.py +0 -0
  116. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/extras/nextflow/serialize.py +0 -0
  117. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/extras/nextflow/tasks/__init__.py +0 -0
  118. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/extras/nextflow/tasks/adapters.py +0 -0
  119. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/extras/nextflow/tasks/base.py +0 -0
  120. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/extras/nextflow/tasks/conditional.py +0 -0
  121. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/extras/nextflow/tasks/map.py +0 -0
  122. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/extras/nextflow/tasks/merge.py +0 -0
  123. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/extras/snakemake/__init__.py +0 -0
  124. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/extras/snakemake/config.py +0 -0
  125. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/extras/snakemake/serialize.py +0 -0
  126. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/extras/snakemake/single_task_snakemake.py +0 -0
  127. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/extras/snakemake/utils.py +0 -0
  128. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/extras/snakemake/workflow.py +0 -0
  129. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/menus.py +0 -0
  130. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/services/__init__.py +0 -0
  131. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/services/cp/__init__.py +0 -0
  132. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/services/cp/autocomplete.py +0 -0
  133. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/services/cp/glob.py +0 -0
  134. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/services/cp/main.py +0 -0
  135. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/services/cp/utils.py +0 -0
  136. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/services/execute/__init__.py +0 -0
  137. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/services/execute/main.py +0 -0
  138. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/services/execute/utils.py +0 -0
  139. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/services/get.py +0 -0
  140. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/services/get_executions.py +0 -0
  141. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/services/get_params.py +0 -0
  142. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/services/init/__init__.py +0 -0
  143. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/services/init/assemble_and_sort/.env +0 -0
  144. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/services/init/assemble_and_sort/LICENSE +0 -0
  145. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/services/init/assemble_and_sort/README.md +0 -0
  146. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/services/init/assemble_and_sort/__init__.py +0 -0
  147. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/services/init/assemble_and_sort/assemble.py +0 -0
  148. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/services/init/assemble_and_sort/sort.py +0 -0
  149. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/services/init/assemble_and_sort/system-requirements.txt +0 -0
  150. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/services/init/common/.dockerignore +0 -0
  151. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/services/init/example_conda/__init__.py +0 -0
  152. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/services/init/example_conda/conda_task.py +0 -0
  153. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/services/init/example_conda/environment.yaml +0 -0
  154. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/services/init/example_docker/__init__.py +0 -0
  155. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/services/init/example_docker/task.py +0 -0
  156. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/services/init/example_nextflow/main.nf +0 -0
  157. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/services/init/example_nextflow/nextflow.config +0 -0
  158. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/services/init/example_nextflow/workflow.nf +0 -0
  159. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/services/init/example_nfcore/Dockerfile +0 -0
  160. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/services/init/example_nfcore/__init__.py +0 -0
  161. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/services/init/example_nfcore/task.py +0 -0
  162. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/services/init/example_r/__init__.py +0 -0
  163. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/services/init/example_r/environment.R +0 -0
  164. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/services/init/example_r/r_task.py +0 -0
  165. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/services/init/example_snakemake/.latch/latch_entrypoint +0 -0
  166. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/services/init/example_snakemake/Dockerfile +0 -0
  167. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/services/init/example_snakemake/Snakefile +0 -0
  168. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/services/init/example_snakemake/config.yaml +0 -0
  169. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/services/init/example_snakemake/environment.yaml +0 -0
  170. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/services/init/example_snakemake/latch_metadata.py +0 -0
  171. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/services/init/example_snakemake/scripts/plot-quals.py +0 -0
  172. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/services/init/example_snakemake/version +0 -0
  173. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/services/init/init.py +0 -0
  174. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/services/init/template/LICENSE +0 -0
  175. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/services/init/template/README.md +0 -0
  176. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/services/init/template/__init__.py +0 -0
  177. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/services/init/template/task.py +0 -0
  178. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/services/launch.py +0 -0
  179. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/services/local_dev.py +0 -0
  180. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/services/local_dev_old.py +0 -0
  181. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/services/login.py +0 -0
  182. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/services/ls.py +0 -0
  183. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/services/mkdir.py +0 -0
  184. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/services/move.py +0 -0
  185. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/services/preview.py +0 -0
  186. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/services/register/__init__.py +0 -0
  187. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/services/register/constants.py +0 -0
  188. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/services/register/register.py +0 -0
  189. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/services/rm.py +0 -0
  190. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/services/stop_pod.py +0 -0
  191. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/services/sync.py +0 -0
  192. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/services/test_data/__init__.py +0 -0
  193. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/services/test_data/ls.py +0 -0
  194. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/services/test_data/remove.py +0 -0
  195. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/services/test_data/upload.py +0 -0
  196. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/services/test_data/utils.py +0 -0
  197. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/services/workspace.py +0 -0
  198. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/tinyrequests.py +0 -0
  199. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/tui/__init__.py +0 -0
  200. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/utils/__init__.py +0 -0
  201. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/utils/path.py +0 -0
  202. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/utils/workflow.py +0 -0
  203. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/latch_cli/workflow_config.py +0 -0
  204. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/pyproject.toml +0 -0
  205. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/setup.cfg +0 -0
  206. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/tests/__init__.py +0 -0
  207. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/tests/cp/__init__.py +0 -0
  208. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/tests/fixtures.py +0 -0
  209. {latch-2.40.4.dev2 → latch-2.40.4.dev4}/tests/test_ls.py +0 -0
@@ -0,0 +1,13 @@
1
+ Metadata-Version: 2.1
2
+ Name: latch
3
+ Version: 2.40.4.dev4
4
+ Summary: The Latch SDK
5
+ Author-email: kenny@latch.bio
6
+ Classifier: Programming Language :: Python :: 3.8
7
+ Classifier: Programming Language :: Python :: 3.9
8
+ Classifier: Programming Language :: Python :: 3.10
9
+ Classifier: Programming Language :: Python :: 3.11
10
+ Requires-Python: >=3.8,<3.12
11
+ Provides-Extra: snakemake
12
+ Provides-Extra: pandas
13
+ License-File: LICENSE
@@ -4,7 +4,9 @@ from enum import Enum
4
4
  from pathlib import Path
5
5
  from textwrap import indent
6
6
  from typing import (
7
+ Annotated,
7
8
  Any,
9
+ Callable,
8
10
  ClassVar,
9
11
  Collection,
10
12
  Dict,
@@ -478,6 +480,10 @@ class NextflowParameter(Generic[T], LatchParameter):
478
480
  """
479
481
  default: Optional[T] = None
480
482
 
483
+ def __post_init__(self):
484
+ if self.samplesheet is True:
485
+ self.type = Annotated[self.type, "samplesheet"]
486
+
481
487
 
482
488
  @dataclass
483
489
  class NextflowFileParameter(NextflowParameter[Union[LatchFile, LatchDir]]):
@@ -547,6 +553,10 @@ class LatchMetadata:
547
553
  """ A `LatchAuthor` object that describes the author of the workflow"""
548
554
  documentation: Optional[str] = None
549
555
  """A link to documentation for the workflow itself"""
556
+ about_page_markdown: Optional[Path] = None
557
+ """A path to a markdown file that will be rendered as the workflow About
558
+ page. If provided, it will override the docstring markdown, if it exists,
559
+ for SDK workflows."""
550
560
  repository: Optional[str] = None
551
561
  """A link to the repository where the code for the workflow is hosted"""
552
562
  license: str = "MIT"
@@ -571,6 +581,8 @@ class LatchMetadata:
571
581
  metadata_dict = asdict(self)
572
582
  # remove parameters since that will be handled by each parameters' dict() method
573
583
  del metadata_dict["parameters"]
584
+ # pyyaml is unable to serialize PosixPath objects + unused after registration
585
+ del metadata_dict["about_page_markdown"]
574
586
  metadata_dict["license"] = {"id": self.license}
575
587
 
576
588
  # flows override all other rendering, so disable them entirely if not provided
@@ -0,0 +1,13 @@
1
+ Metadata-Version: 2.1
2
+ Name: latch
3
+ Version: 2.40.4.dev4
4
+ Summary: The Latch SDK
5
+ Author-email: kenny@latch.bio
6
+ Classifier: Programming Language :: Python :: 3.8
7
+ Classifier: Programming Language :: Python :: 3.9
8
+ Classifier: Programming Language :: Python :: 3.10
9
+ Classifier: Programming Language :: Python :: 3.11
10
+ Requires-Python: >=3.8,<3.12
11
+ Provides-Extra: snakemake
12
+ Provides-Extra: pandas
13
+ License-File: LICENSE
@@ -136,13 +136,7 @@ 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
142
139
  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
146
140
  latch_cli/services/init/assemble_and_sort/.env
147
141
  latch_cli/services/init/assemble_and_sort/LICENSE
148
142
  latch_cli/services/init/assemble_and_sort/README.md
@@ -150,25 +144,24 @@ latch_cli/services/init/assemble_and_sort/__init__.py
150
144
  latch_cli/services/init/assemble_and_sort/assemble.py
151
145
  latch_cli/services/init/assemble_and_sort/sort.py
152
146
  latch_cli/services/init/assemble_and_sort/system-requirements.txt
153
- latch_cli/services/init/assemble_and_sort/__pycache__/__init__.cpython-310.pyc
154
147
  latch_cli/services/init/common/.dockerignore
155
148
  latch_cli/services/init/example_conda/__init__.py
156
149
  latch_cli/services/init/example_conda/conda_task.py
157
150
  latch_cli/services/init/example_conda/environment.yaml
158
- latch_cli/services/init/example_conda/__pycache__/__init__.cpython-310.pyc
151
+ latch_cli/services/init/example_docker/.__init__.py.swn
152
+ latch_cli/services/init/example_docker/.__init__.py.swo
153
+ latch_cli/services/init/example_docker/.__init__.py.swp
159
154
  latch_cli/services/init/example_docker/__init__.py
160
155
  latch_cli/services/init/example_docker/task.py
161
156
  latch_cli/services/init/example_nextflow/main.nf
162
157
  latch_cli/services/init/example_nextflow/nextflow.config
163
158
  latch_cli/services/init/example_nextflow/workflow.nf
164
- latch_cli/services/init/example_nf_integration/latch_metadata/__pycache__/__init__.cpython-311.pyc
165
159
  latch_cli/services/init/example_nfcore/Dockerfile
166
160
  latch_cli/services/init/example_nfcore/__init__.py
167
161
  latch_cli/services/init/example_nfcore/task.py
168
162
  latch_cli/services/init/example_r/__init__.py
169
163
  latch_cli/services/init/example_r/environment.R
170
164
  latch_cli/services/init/example_r/r_task.py
171
- latch_cli/services/init/example_r/__pycache__/__init__.cpython-310.pyc
172
165
  latch_cli/services/init/example_snakemake/Dockerfile
173
166
  latch_cli/services/init/example_snakemake/Snakefile
174
167
  latch_cli/services/init/example_snakemake/config.yaml
@@ -181,7 +174,6 @@ latch_cli/services/init/template/LICENSE
181
174
  latch_cli/services/init/template/README.md
182
175
  latch_cli/services/init/template/__init__.py
183
176
  latch_cli/services/init/template/task.py
184
- latch_cli/services/init/template/__pycache__/__init__.cpython-310.pyc
185
177
  latch_cli/services/register/__init__.py
186
178
  latch_cli/services/register/constants.py
187
179
  latch_cli/services/register/register.py
@@ -7,7 +7,7 @@ paramiko>=3.2.0
7
7
  scp>=0.14.0
8
8
  boto3>=1.26.0
9
9
  tqdm>=4.63.0
10
- lytekit==0.15.5
10
+ lytekit==0.15.6
11
11
  lytekitplugins-pods==0.6.2
12
12
  typing-extensions==4.7.1
13
13
  apscheduler==3.9.1
@@ -37,13 +37,23 @@ def is_blob_type(typ: Type) -> TypeGuard[Union[Type[LatchFile], Type[LatchDir]]]
37
37
 
38
38
 
39
39
  def is_downloadable_blob_type(typ: Type):
40
- if not is_blob_type(typ):
40
+ if not is_blob_type(typ) or typ is LatchOutputDir:
41
41
  return False
42
42
 
43
- return typ is not LatchOutputDir
43
+ origin = get_origin(typ)
44
+ if origin is not None:
45
+ return all([
46
+ is_downloadable_blob_type(sub_typ) or sub_typ is type(None)
47
+ for sub_typ in get_args(typ)
48
+ ])
49
+
50
+ return True
44
51
 
45
52
 
46
53
  def type_repr(t: Type, *, add_namespace: bool = False) -> str:
54
+ if get_origin(t) == Annotated:
55
+ return type_repr(get_args(t)[0])
56
+
47
57
  if getattr(t, "__name__", None) == "NoneType":
48
58
  return "None"
49
59
 
@@ -70,3 +80,7 @@ def type_repr(t: Type, *, add_namespace: bool = False) -> str:
70
80
  )
71
81
 
72
82
  return getattr(t, "__name__", repr(t))
83
+
84
+
85
+ def is_samplesheet_param(t: Type) -> bool:
86
+ return get_origin(t) == Annotated and get_args(t)[-1] == "samplesheet"
@@ -31,7 +31,7 @@ from ...click_utils import italic
31
31
  from ...menus import select_tui
32
32
  from ...utils import current_workspace, identifier_from_str
33
33
  from ..common.serialize import binding_from_python
34
- from ..common.utils import reindent
34
+ from ..common.utils import is_samplesheet_param, reindent
35
35
  from .dag import DAG, VertexType
36
36
  from .tasks.adapters import (
37
37
  NextflowProcessPostAdapterTask,
@@ -523,6 +523,14 @@ def generate_nf_entrypoint(
523
523
  0,
524
524
  )
525
525
 
526
+ if any([is_samplesheet_param(t) for t in wf.python_interface.inputs.values()]):
527
+ preamble += reindent(
528
+ r"""
529
+ from latch_metadata.parameters import construct_samplesheet
530
+ """,
531
+ 0,
532
+ )
533
+
526
534
  for t in wf.python_interface.inputs.values():
527
535
  preamble += get_preamble(t, make_optionals=True)
528
536
 
@@ -1,12 +1,12 @@
1
1
  import json
2
2
  from pathlib import Path
3
- from typing import Dict, List, Mapping, Type
3
+ from typing import Annotated, Dict, List, Mapping, Type, get_args, get_origin
4
4
 
5
5
  from latch.types.directory import LatchDir
6
6
  from latch.types.file import LatchFile
7
7
  from latch.types.metadata import ParameterType
8
8
 
9
- from ...common.utils import is_blob_type, reindent, type_repr
9
+ from ...common.utils import is_blob_type, is_samplesheet_param, reindent, type_repr
10
10
  from ..workflow import NextflowWorkflow
11
11
  from .base import NextflowBaseTask, NFTaskType
12
12
 
@@ -151,6 +151,13 @@ class NextflowOperatorTask(NextflowBaseTask):
151
151
  """,
152
152
  2,
153
153
  )
154
+ elif is_samplesheet_param(typ):
155
+ code_block += reindent(
156
+ f"""
157
+ {k} = construct_samplesheet({k})
158
+ """,
159
+ 2,
160
+ )
154
161
 
155
162
  # todo(ayush): figure out how to make this work
156
163
  do_file_io = False
@@ -1,13 +1,18 @@
1
1
  import json
2
2
  from dataclasses import fields, is_dataclass
3
3
  from pathlib import Path
4
- from typing import List, Mapping, Optional, Type
4
+ from typing import Annotated, List, Mapping, Optional, Type
5
+
6
+ try:
7
+ from typing import get_args, get_origin
8
+ except ImportError:
9
+ from typing_extensions import get_args, get_origin
5
10
 
6
11
  from latch.types.directory import LatchDir
7
12
  from latch.types.file import LatchFile
8
13
  from latch.types.metadata import ParameterType
9
14
 
10
- from ...common.utils import is_blob_type, reindent, type_repr
15
+ from ...common.utils import is_blob_type, is_samplesheet_param, reindent, type_repr
11
16
  from ..workflow import NextflowWorkflow
12
17
  from .base import NextflowBaseTask, NFTaskType
13
18
 
@@ -165,6 +170,13 @@ class NextflowProcessTask(NextflowBaseTask):
165
170
  """,
166
171
  1,
167
172
  )
173
+ elif is_samplesheet_param(typ):
174
+ code_block += reindent(
175
+ f"""
176
+ {k} = construct_samplesheet({k})
177
+ """,
178
+ 1,
179
+ )
168
180
 
169
181
  if self.script_path.resolve() != self.wf.nf_script.resolve():
170
182
  stem = self.script_path.resolve().relative_to(self.wf.pkg_root.resolve())
@@ -2,6 +2,7 @@ from dataclasses import fields, is_dataclass
2
2
  from pathlib import Path
3
3
  from typing import Any, Dict, List, Tuple, Type
4
4
 
5
+ import click
5
6
  from flytekit.core.class_based_resolver import ClassStorageTaskResolver
6
7
  from flytekit.core.docstring import Docstring
7
8
  from flytekit.core.interface import Interface
@@ -48,9 +49,19 @@ class NextflowWorkflow(WorkflowBase, ClassStorageTaskResolver):
48
49
 
49
50
  self.output_directory = metadata._nextflow_metadata.output_directory
50
51
  self.docker_metadata = metadata._nextflow_metadata.docker_metadata
51
-
52
+ md_path = metadata._nextflow_metadata.about_page_markdown
53
+
54
+ if md_path is not None and md_path.exists():
55
+ click.secho(f"Rendering workflow About page content from {md_path}")
56
+ markdown_content = md_path.read_text()
57
+ else:
58
+ markdown_content = (
59
+ "Add markdown content to a file and add the path",
60
+ "to your workflow metadata to populate this page.\nMore information",
61
+ "[here](https://wiki.latch.bio/docs/nextflow/quickstart).",
62
+ )
52
63
  docstring = Docstring(
53
- f"{metadata._nextflow_metadata.display_name}\n\nSample Description\n\n"
64
+ f"{metadata._nextflow_metadata.display_name}\n\n{markdown_content}\n\n"
54
65
  + str(metadata._nextflow_metadata)
55
66
  )
56
67
  python_interface = Interface(
@@ -81,8 +81,6 @@ def main():
81
81
  fg="yellow",
82
82
  )
83
83
 
84
- # crash_handler.init()
85
-
86
84
 
87
85
  """
88
86
  LOGIN COMMANDS
@@ -102,7 +102,6 @@ def build_image(
102
102
  tag=f"{ctx.dkr_repo}/{image_name}",
103
103
  decode=True,
104
104
  )
105
-
106
105
  return build_logs
107
106
 
108
107
 
@@ -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.dev2",
16
+ version="v2.40.4.dev4",
17
17
  author_email="kenny@latch.bio",
18
18
  description="The Latch SDK",
19
19
  packages=find_packages(),
@@ -30,7 +30,7 @@ setup(
30
30
  "scp>=0.14.0",
31
31
  "boto3>=1.26.0",
32
32
  "tqdm>=4.63.0",
33
- "lytekit==0.15.5",
33
+ "lytekit==0.15.6",
34
34
  "lytekitplugins-pods==0.6.2",
35
35
  "typing-extensions==4.7.1",
36
36
  "apscheduler==3.9.1",
@@ -1,39 +0,0 @@
1
- Metadata-Version: 2.1
2
- Name: latch
3
- Version: 2.40.4.dev2
4
- Summary: The Latch SDK
5
- Author-email: kenny@latch.bio
6
- Classifier: Programming Language :: Python :: 3.8
7
- Classifier: Programming Language :: Python :: 3.9
8
- Classifier: Programming Language :: Python :: 3.10
9
- Classifier: Programming Language :: Python :: 3.11
10
- Requires-Python: >=3.8,<3.12
11
- License-File: LICENSE
12
- Requires-Dist: kubernetes>=24.2.0
13
- Requires-Dist: pyjwt>=0.2.0
14
- Requires-Dist: requests>=2.28.1
15
- Requires-Dist: click>=8.0
16
- Requires-Dist: docker>=5.0
17
- Requires-Dist: paramiko>=3.2.0
18
- Requires-Dist: scp>=0.14.0
19
- Requires-Dist: boto3>=1.26.0
20
- Requires-Dist: tqdm>=4.63.0
21
- Requires-Dist: lytekit==0.15.5
22
- Requires-Dist: lytekitplugins-pods==0.6.2
23
- Requires-Dist: typing-extensions==4.7.1
24
- Requires-Dist: apscheduler==3.9.1
25
- Requires-Dist: gql==3.4.0
26
- Requires-Dist: graphql-core==3.2.3
27
- Requires-Dist: requests-toolbelt==0.10.1
28
- Requires-Dist: latch-sdk-gql==0.0.6
29
- Requires-Dist: latch-sdk-config==0.0.4
30
- Requires-Dist: python-dateutil>=2.8
31
- Requires-Dist: aioconsole==0.6.1
32
- Requires-Dist: asyncssh==2.13.2
33
- Requires-Dist: websockets==11.0.3
34
- Requires-Dist: watchfiles==0.19.0
35
- Provides-Extra: snakemake
36
- Requires-Dist: snakemake<7.30.2,>=7.18.0; extra == "snakemake"
37
- Requires-Dist: pulp<2.8,>=2.0; extra == "snakemake"
38
- Provides-Extra: pandas
39
- Requires-Dist: pandas>=2.0.0; extra == "pandas"
@@ -1,39 +0,0 @@
1
- Metadata-Version: 2.1
2
- Name: latch
3
- Version: 2.40.4.dev2
4
- Summary: The Latch SDK
5
- Author-email: kenny@latch.bio
6
- Classifier: Programming Language :: Python :: 3.8
7
- Classifier: Programming Language :: Python :: 3.9
8
- Classifier: Programming Language :: Python :: 3.10
9
- Classifier: Programming Language :: Python :: 3.11
10
- Requires-Python: >=3.8,<3.12
11
- License-File: LICENSE
12
- Requires-Dist: kubernetes>=24.2.0
13
- Requires-Dist: pyjwt>=0.2.0
14
- Requires-Dist: requests>=2.28.1
15
- Requires-Dist: click>=8.0
16
- Requires-Dist: docker>=5.0
17
- Requires-Dist: paramiko>=3.2.0
18
- Requires-Dist: scp>=0.14.0
19
- Requires-Dist: boto3>=1.26.0
20
- Requires-Dist: tqdm>=4.63.0
21
- Requires-Dist: lytekit==0.15.5
22
- Requires-Dist: lytekitplugins-pods==0.6.2
23
- Requires-Dist: typing-extensions==4.7.1
24
- Requires-Dist: apscheduler==3.9.1
25
- Requires-Dist: gql==3.4.0
26
- Requires-Dist: graphql-core==3.2.3
27
- Requires-Dist: requests-toolbelt==0.10.1
28
- Requires-Dist: latch-sdk-gql==0.0.6
29
- Requires-Dist: latch-sdk-config==0.0.4
30
- Requires-Dist: python-dateutil>=2.8
31
- Requires-Dist: aioconsole==0.6.1
32
- Requires-Dist: asyncssh==2.13.2
33
- Requires-Dist: websockets==11.0.3
34
- Requires-Dist: watchfiles==0.19.0
35
- Provides-Extra: snakemake
36
- Requires-Dist: snakemake<7.30.2,>=7.18.0; extra == "snakemake"
37
- Requires-Dist: pulp<2.8,>=2.0; extra == "snakemake"
38
- Provides-Extra: pandas
39
- Requires-Dist: pandas>=2.0.0; extra == "pandas"
File without changes
File without changes
File without changes
File without changes