latch 2.39.0.dev31__tar.gz → 2.39.0.dev33__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.
- {latch-2.39.0.dev31/latch.egg-info → latch-2.39.0.dev33}/PKG-INFO +1 -1
- {latch-2.39.0.dev31 → latch-2.39.0.dev33/latch.egg-info}/PKG-INFO +1 -1
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/extras/nextflow/build.py +50 -26
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/extras/nextflow/file_persistence.py +9 -1
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/extras/nextflow/tasks/operator.py +3 -1
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/extras/nextflow/tasks/process.py +4 -2
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/setup.py +1 -1
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/LICENSE +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/MANIFEST.in +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/README.md +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch/__init__.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch/account.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch/executions.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch/functions/__init__.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch/functions/messages.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch/functions/operators.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch/functions/secrets.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch/ldata/__init__.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch/ldata/_transfer/__init__.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch/ldata/_transfer/download.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch/ldata/_transfer/manager.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch/ldata/_transfer/node.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch/ldata/_transfer/progress.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch/ldata/_transfer/remote_copy.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch/ldata/_transfer/throttle.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch/ldata/_transfer/upload.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch/ldata/_transfer/utils.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch/ldata/path.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch/ldata/type.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch/registry/__init__.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch/registry/project.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch/registry/record.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch/registry/table.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch/registry/types.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch/registry/upstream_types/__init__.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch/registry/upstream_types/types.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch/registry/upstream_types/values.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch/registry/utils.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch/resources/__init__.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch/resources/conditional.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch/resources/launch_plan.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch/resources/map_tasks.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch/resources/reference_workflow.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch/resources/tasks.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch/resources/workflow.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch/types/__init__.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch/types/directory.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch/types/file.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch/types/glob.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch/types/json.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch/types/metadata.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch/types/utils.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch/verified/__init__.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch/verified/deseq2.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch/verified/mafft.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch/verified/pathway.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch/verified/rnaseq.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch/verified/trim_galore.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch.egg-info/SOURCES.txt +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch.egg-info/dependency_links.txt +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch.egg-info/entry_points.txt +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch.egg-info/requires.txt +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch.egg-info/top_level.txt +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/__init__.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/auth/__init__.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/auth/csrf.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/auth/oauth2.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/auth/pkce.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/auth/utils.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/centromere/__init__.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/centromere/ctx.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/centromere/utils.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/click_utils.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/constants.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/docker_utils/__init__.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/exceptions/__init__.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/exceptions/cache.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/exceptions/errors.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/exceptions/handler.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/exceptions/traceback.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/extras/__init__.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/extras/common/__init__.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/extras/common/config/__init__.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/extras/common/config/parser.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/extras/common/config/utils.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/extras/common/serialize.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/extras/common/utils.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/extras/nextflow/__init__.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/extras/nextflow/channel.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/extras/nextflow/config.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/extras/nextflow/dag.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/extras/nextflow/serialize.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/extras/nextflow/tasks/__init__.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/extras/nextflow/tasks/adapters.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/extras/nextflow/tasks/base.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/extras/nextflow/tasks/conditional.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/extras/nextflow/tasks/map.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/extras/nextflow/tasks/merge.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/extras/nextflow/workflow.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/extras/snakemake/__init__.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/extras/snakemake/config.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/extras/snakemake/serialize.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/extras/snakemake/single_task_snakemake.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/extras/snakemake/utils.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/extras/snakemake/workflow.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/main.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/menus.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/__init__.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/cp/__init__.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/cp/autocomplete.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/cp/glob.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/cp/main.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/cp/utils.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/execute/__init__.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/execute/main.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/execute/utils.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/get.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/get_executions.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/get_params.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/init/__init__.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/init/__pycache__/__init__.cpython-310.pyc +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/init/__pycache__/__init__.cpython-311.pyc +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/init/__pycache__/__init__.cpython-38.pyc +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/init/__pycache__/__init__.cpython-39.pyc +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/init/__pycache__/init.cpython-310.pyc +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/init/__pycache__/init.cpython-311.pyc +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/init/__pycache__/init.cpython-38.pyc +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/init/__pycache__/init.cpython-39.pyc +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/init/assemble_and_sort/.env +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/init/assemble_and_sort/LICENSE +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/init/assemble_and_sort/README.md +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/init/assemble_and_sort/__init__.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/init/assemble_and_sort/__pycache__/__init__.cpython-310.pyc +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/init/assemble_and_sort/assemble.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/init/assemble_and_sort/sort.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/init/assemble_and_sort/system-requirements.txt +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/init/common/.dockerignore +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/init/example_conda/__init__.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/init/example_conda/__pycache__/__init__.cpython-310.pyc +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/init/example_conda/conda_task.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/init/example_conda/environment.yaml +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/init/example_docker/__init__.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/init/example_docker/task.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/init/example_nf_integration/Dockerfile +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/init/example_nf_integration/latch_metadata/__init__.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/init/example_nf_integration/latch_metadata/__pycache__/__init__.cpython-311.pyc +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/init/example_nf_integration/main.nf +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/init/example_nf_integration/workflow.nf +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/init/example_nfcore/Dockerfile +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/init/example_nfcore/__init__.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/init/example_nfcore/task.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/init/example_r/__init__.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/init/example_r/__pycache__/__init__.cpython-310.pyc +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/init/example_r/environment.R +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/init/example_r/r_task.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/init/example_snakemake/.latch/latch_entrypoint +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/init/example_snakemake/Dockerfile +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/init/example_snakemake/Snakefile +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/init/example_snakemake/config.yaml +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/init/example_snakemake/environment.yaml +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/init/example_snakemake/latch_metadata.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/init/example_snakemake/scripts/plot-quals.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/init/example_snakemake/version +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/init/init.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/init/template/LICENSE +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/init/template/README.md +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/init/template/__init__.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/init/template/__pycache__/__init__.cpython-310.pyc +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/init/template/task.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/launch.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/local_dev.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/local_dev_old.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/login.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/ls.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/mkdir.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/move.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/preview.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/register/__init__.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/register/constants.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/register/register.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/register/utils.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/rm.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/stop_pod.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/sync.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/test_data/__init__.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/test_data/ls.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/test_data/remove.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/test_data/upload.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/test_data/utils.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/workspace.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/tinyrequests.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/tui/__init__.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/utils/__init__.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/utils/path.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/utils/workflow.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/workflow_config.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/pyproject.toml +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/setup.cfg +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/tests/__init__.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/tests/cp/__init__.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/tests/fixtures.py +0 -0
- {latch-2.39.0.dev31 → latch-2.39.0.dev33}/tests/test_ls.py +0 -0
|
@@ -1,12 +1,17 @@
|
|
|
1
1
|
import glob
|
|
2
|
+
import multiprocessing
|
|
2
3
|
import os
|
|
3
4
|
import shutil
|
|
4
5
|
import subprocess
|
|
5
6
|
import sys
|
|
6
7
|
from collections import OrderedDict, defaultdict
|
|
8
|
+
from concurrent.futures import ProcessPoolExecutor, as_completed, wait
|
|
9
|
+
from ctypes import c_int
|
|
10
|
+
from multiprocessing.managers import SyncManager
|
|
7
11
|
from pathlib import Path
|
|
8
12
|
from textwrap import dedent
|
|
9
13
|
from typing import Dict, List, Optional, cast
|
|
14
|
+
from urllib.parse import urljoin, urlunparse
|
|
10
15
|
|
|
11
16
|
import boto3
|
|
12
17
|
import click
|
|
@@ -301,6 +306,50 @@ def build_from_nextflow_dag(
|
|
|
301
306
|
wf._nodes = list(node_map.values()) + extra_nodes
|
|
302
307
|
|
|
303
308
|
|
|
309
|
+
def _do_download(
|
|
310
|
+
url: str,
|
|
311
|
+
output_path: Path,
|
|
312
|
+
total_count: int,
|
|
313
|
+
counter,
|
|
314
|
+
lock,
|
|
315
|
+
): # todo(ayush): figure out the right type annotation for counter/lock
|
|
316
|
+
res = tinyrequests.get(url)
|
|
317
|
+
output_path.parent.mkdir(parents=True, exist_ok=True)
|
|
318
|
+
output_path.write_bytes(res.content)
|
|
319
|
+
|
|
320
|
+
with lock:
|
|
321
|
+
counter.value += 1
|
|
322
|
+
progress_str = f"{counter.value}/{total_count}"
|
|
323
|
+
|
|
324
|
+
click.echo("\x1b[0K", nl=False)
|
|
325
|
+
click.secho(progress_str, dim=True, italic=True, nl=False)
|
|
326
|
+
click.echo(f"\x1b[{len(progress_str)}D", nl=False)
|
|
327
|
+
|
|
328
|
+
|
|
329
|
+
def download_nf_jars(pkg_root: Path):
|
|
330
|
+
s3_resource = boto3.resource("s3")
|
|
331
|
+
bucket = s3_resource.Bucket("latch-public")
|
|
332
|
+
|
|
333
|
+
objects = list(bucket.objects.filter(Prefix=".nextflow/"))
|
|
334
|
+
|
|
335
|
+
click.secho(" Downloading Nextflow binaries: \x1b[?25l", italic=True, nl=False)
|
|
336
|
+
|
|
337
|
+
with SyncManager() as man:
|
|
338
|
+
counter = man.Value(c_int, 0)
|
|
339
|
+
lock = man.Lock()
|
|
340
|
+
with ProcessPoolExecutor() as exec:
|
|
341
|
+
for obj in objects:
|
|
342
|
+
url = urljoin(
|
|
343
|
+
"https://latch-public.s3.us-west-2.amazonaws.com/", obj.key
|
|
344
|
+
)
|
|
345
|
+
obj_path = pkg_root / ".latch" / obj.key
|
|
346
|
+
|
|
347
|
+
exec.submit(_do_download, url, obj_path, len(objects), counter, lock)
|
|
348
|
+
|
|
349
|
+
click.echo("\x1b[0K", nl=False)
|
|
350
|
+
click.secho("Done. \x1b[?25h", italic=True)
|
|
351
|
+
|
|
352
|
+
|
|
304
353
|
# todo(ayush): add versioning system to nf download
|
|
305
354
|
# todo(ayush): allow user to redownload nf anyway via cli option
|
|
306
355
|
def ensure_nf_dependencies(pkg_root: Path, *, force_redownload: bool = False):
|
|
@@ -335,32 +384,7 @@ def ensure_nf_dependencies(pkg_root: Path, *, force_redownload: bool = False):
|
|
|
335
384
|
nf_executable.chmod(0o700)
|
|
336
385
|
|
|
337
386
|
if not nf_jars.exists():
|
|
338
|
-
|
|
339
|
-
" Downloading Nextflow binaries: \x1b[?25l",
|
|
340
|
-
italic=True,
|
|
341
|
-
nl=False,
|
|
342
|
-
)
|
|
343
|
-
|
|
344
|
-
s3_resource = boto3.resource("s3")
|
|
345
|
-
bucket = s3_resource.Bucket("latch-public")
|
|
346
|
-
|
|
347
|
-
objects = list(bucket.objects.filter(Prefix=".nextflow/"))
|
|
348
|
-
|
|
349
|
-
# todo(ayush): parallelize
|
|
350
|
-
for i, obj in enumerate(objects):
|
|
351
|
-
obj_path = pkg_root / ".latch" / obj.key
|
|
352
|
-
obj_path.parent.mkdir(parents=True, exist_ok=True)
|
|
353
|
-
|
|
354
|
-
bucket.download_file(obj.key, str(obj_path))
|
|
355
|
-
|
|
356
|
-
progress_str = f"{i + 1}/{len(objects)}"
|
|
357
|
-
|
|
358
|
-
click.echo("\x1b[0K", nl=False)
|
|
359
|
-
click.secho(progress_str, dim=True, italic=True, nl=False)
|
|
360
|
-
click.echo(f"\x1b[{len(progress_str)}D", nl=False)
|
|
361
|
-
|
|
362
|
-
click.echo("\x1b[0K", nl=False)
|
|
363
|
-
click.secho("Done. \x1b[?25h", italic=True)
|
|
387
|
+
download_nf_jars(pkg_root)
|
|
364
388
|
|
|
365
389
|
|
|
366
390
|
def build_nf_wf(
|
|
@@ -2,6 +2,7 @@ import os
|
|
|
2
2
|
import shutil
|
|
3
3
|
from pathlib import Path
|
|
4
4
|
from typing import Dict, List, Optional, Set, Union
|
|
5
|
+
from urllib.parse import urlparse
|
|
5
6
|
|
|
6
7
|
import click
|
|
7
8
|
import gql
|
|
@@ -59,7 +60,14 @@ def _extract_paths(parameter: JSONValue, res: List[Path]):
|
|
|
59
60
|
if k == "path":
|
|
60
61
|
assert isinstance(v, str)
|
|
61
62
|
|
|
62
|
-
|
|
63
|
+
parsed = urlparse(v)
|
|
64
|
+
if parsed.scheme == "latch":
|
|
65
|
+
p = LPath(v).download()
|
|
66
|
+
res.append(p)
|
|
67
|
+
parameter[k] = str(p)
|
|
68
|
+
elif parsed.scheme == "":
|
|
69
|
+
res.append(Path(v).absolute().relative_to(Path.home()))
|
|
70
|
+
|
|
63
71
|
elif k == "list":
|
|
64
72
|
assert isinstance(v, List)
|
|
65
73
|
|
|
@@ -90,7 +90,7 @@ class NextflowOperatorTask(NextflowBaseTask):
|
|
|
90
90
|
results.append(
|
|
91
91
|
reindent(
|
|
92
92
|
rf"""
|
|
93
|
-
{out_name}=out_channels.get("{out_name}", "")
|
|
93
|
+
{out_name}=out_channels.get("{out_name}", "[]")
|
|
94
94
|
""",
|
|
95
95
|
2,
|
|
96
96
|
).rstrip()
|
|
@@ -115,6 +115,8 @@ class NextflowOperatorTask(NextflowBaseTask):
|
|
|
115
115
|
"/root/nextflow",
|
|
116
116
|
"run",
|
|
117
117
|
str(nf_script_path_in_container),
|
|
118
|
+
"-lib",
|
|
119
|
+
"lib",
|
|
118
120
|
]
|
|
119
121
|
|
|
120
122
|
for flag, val in self.wf.flags_to_params.items():
|
|
@@ -29,7 +29,7 @@ class NextflowProcessTask(NextflowBaseTask):
|
|
|
29
29
|
wf: NextflowWorkflow,
|
|
30
30
|
):
|
|
31
31
|
super().__init__(
|
|
32
|
-
inputs, outputs, id, name, {}, wf, NFTaskType.Process, cpu=16, memory=
|
|
32
|
+
inputs, outputs, id, name, {}, wf, NFTaskType.Process, cpu=16, memory=96
|
|
33
33
|
)
|
|
34
34
|
|
|
35
35
|
self.wf_inputs = {}
|
|
@@ -85,7 +85,7 @@ class NextflowProcessTask(NextflowBaseTask):
|
|
|
85
85
|
results.append(
|
|
86
86
|
reindent(
|
|
87
87
|
rf"""
|
|
88
|
-
{field.name}=out_channels.get(f"{field.name}", "")
|
|
88
|
+
{field.name}=out_channels.get(f"{field.name}", "[]")
|
|
89
89
|
""",
|
|
90
90
|
2,
|
|
91
91
|
).rstrip()
|
|
@@ -116,6 +116,8 @@ class NextflowProcessTask(NextflowBaseTask):
|
|
|
116
116
|
"/root/nextflow",
|
|
117
117
|
"run",
|
|
118
118
|
str(nf_script_path_in_container),
|
|
119
|
+
"-lib",
|
|
120
|
+
"lib",
|
|
119
121
|
]
|
|
120
122
|
|
|
121
123
|
if self.execution_profile is not None:
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/extras/snakemake/single_task_snakemake.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/init/__pycache__/init.cpython-310.pyc
RENAMED
|
File without changes
|
{latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/init/__pycache__/init.cpython-311.pyc
RENAMED
|
File without changes
|
{latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/init/__pycache__/init.cpython-38.pyc
RENAMED
|
File without changes
|
{latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/init/__pycache__/init.cpython-39.pyc
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/init/assemble_and_sort/README.md
RENAMED
|
File without changes
|
{latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/init/assemble_and_sort/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/init/assemble_and_sort/assemble.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/init/example_conda/conda_task.py
RENAMED
|
File without changes
|
{latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/init/example_conda/environment.yaml
RENAMED
|
File without changes
|
{latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/init/example_docker/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/init/example_nf_integration/Dockerfile
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/init/example_nf_integration/main.nf
RENAMED
|
File without changes
|
{latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/init/example_nf_integration/workflow.nf
RENAMED
|
File without changes
|
|
File without changes
|
{latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/init/example_nfcore/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/init/example_snakemake/Dockerfile
RENAMED
|
File without changes
|
{latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/init/example_snakemake/Snakefile
RENAMED
|
File without changes
|
{latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/init/example_snakemake/config.yaml
RENAMED
|
File without changes
|
{latch-2.39.0.dev31 → latch-2.39.0.dev33}/latch_cli/services/init/example_snakemake/environment.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|