latch 2.51.2__tar.gz → 2.51.2.dev2__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.51.2/latch.egg-info → latch-2.51.2.dev2}/PKG-INFO +1 -1
- {latch-2.51.2 → latch-2.51.2.dev2/latch.egg-info}/PKG-INFO +1 -1
- {latch-2.51.2 → latch-2.51.2.dev2}/latch.egg-info/SOURCES.txt +11 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/menus.py +57 -10
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/services/execute/main.py +4 -10
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/services/get_executions.py +13 -17
- latch-2.51.2.dev2/latch_cli/services/init/__pycache__/__init__.cpython-310.pyc +0 -0
- latch-2.51.2.dev2/latch_cli/services/init/__pycache__/__init__.cpython-311.pyc +0 -0
- latch-2.51.2.dev2/latch_cli/services/init/__pycache__/__init__.cpython-38.pyc +0 -0
- latch-2.51.2.dev2/latch_cli/services/init/__pycache__/__init__.cpython-39.pyc +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/services/init/__pycache__/init.cpython-310.pyc +0 -0
- latch-2.51.2.dev2/latch_cli/services/init/__pycache__/init.cpython-311.pyc +0 -0
- latch-2.51.2.dev2/latch_cli/services/init/__pycache__/init.cpython-38.pyc +0 -0
- latch-2.51.2.dev2/latch_cli/services/init/__pycache__/init.cpython-39.pyc +0 -0
- latch-2.51.2.dev2/latch_cli/services/init/assemble_and_sort/__pycache__/__init__.cpython-310.pyc +0 -0
- latch-2.51.2.dev2/latch_cli/services/init/example_conda/__pycache__/__init__.cpython-310.pyc +0 -0
- latch-2.51.2.dev2/latch_cli/services/init/example_nf_integration/latch_metadata/__pycache__/__init__.cpython-311.pyc +0 -0
- latch-2.51.2.dev2/latch_cli/services/init/example_r/__pycache__/__init__.cpython-310.pyc +0 -0
- latch-2.51.2.dev2/latch_cli/services/init/template/__pycache__/__init__.cpython-310.pyc +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/services/local_dev_old.py +2 -5
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/services/preview.py +4 -9
- {latch-2.51.2 → latch-2.51.2.dev2}/setup.py +1 -1
- latch-2.51.2/latch_cli/services/init/__pycache__/__init__.cpython-310.pyc +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/LICENSE +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/MANIFEST.in +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/README.md +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch/__init__.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch/account.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch/executions.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch/functions/__init__.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch/functions/messages.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch/functions/operators.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch/functions/secrets.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch/ldata/__init__.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch/ldata/_transfer/__init__.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch/ldata/_transfer/download.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch/ldata/_transfer/manager.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch/ldata/_transfer/node.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch/ldata/_transfer/progress.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch/ldata/_transfer/remote_copy.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch/ldata/_transfer/throttle.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch/ldata/_transfer/upload.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch/ldata/_transfer/utils.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch/ldata/path.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch/ldata/type.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch/registry/__init__.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch/registry/project.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch/registry/record.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch/registry/table.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch/registry/types.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch/registry/upstream_types/__init__.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch/registry/upstream_types/types.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch/registry/upstream_types/values.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch/registry/utils.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch/resources/__init__.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch/resources/conditional.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch/resources/dynamic.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch/resources/launch_plan.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch/resources/map_tasks.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch/resources/reference_workflow.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch/resources/tasks.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch/resources/workflow.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch/types/__init__.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch/types/directory.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch/types/file.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch/types/glob.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch/types/json.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch/types/metadata.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch/types/utils.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch/utils.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch/verified/__init__.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch/verified/deseq2.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch/verified/mafft.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch/verified/pathway.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch/verified/rnaseq.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch/verified/trim_galore.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch.egg-info/dependency_links.txt +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch.egg-info/entry_points.txt +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch.egg-info/requires.txt +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch.egg-info/top_level.txt +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/__init__.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/auth/__init__.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/auth/csrf.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/auth/oauth2.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/auth/pkce.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/auth/utils.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/centromere/__init__.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/centromere/ctx.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/centromere/utils.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/click_utils.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/constants.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/docker_utils/__init__.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/exceptions/__init__.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/exceptions/cache.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/exceptions/errors.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/exceptions/handler.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/exceptions/traceback.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/main.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/nextflow/__init__.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/nextflow/config.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/nextflow/utils.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/nextflow/workflow.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/services/__init__.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/services/cp/__init__.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/services/cp/autocomplete.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/services/cp/glob.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/services/cp/main.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/services/cp/utils.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/services/execute/__init__.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/services/execute/utils.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/services/get.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/services/get_params.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/services/init/__init__.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/services/init/assemble_and_sort/.env +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/services/init/assemble_and_sort/LICENSE +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/services/init/assemble_and_sort/README.md +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/services/init/assemble_and_sort/__init__.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/services/init/assemble_and_sort/assemble.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/services/init/assemble_and_sort/sort.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/services/init/assemble_and_sort/system-requirements.txt +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/services/init/common/.dockerignore +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/services/init/example_conda/__init__.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/services/init/example_conda/conda_task.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/services/init/example_conda/environment.yaml +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/services/init/example_docker/__init__.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/services/init/example_docker/task.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/services/init/example_nfcore/Dockerfile +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/services/init/example_nfcore/__init__.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/services/init/example_nfcore/task.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/services/init/example_r/__init__.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/services/init/example_r/environment.R +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/services/init/example_r/r_task.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/services/init/example_snakemake/.latch/latch_entrypoint +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/services/init/example_snakemake/Dockerfile +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/services/init/example_snakemake/Snakefile +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/services/init/example_snakemake/config.yaml +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/services/init/example_snakemake/environment.yaml +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/services/init/example_snakemake/latch_metadata.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/services/init/example_snakemake/scripts/plot-quals.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/services/init/example_snakemake/version +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/services/init/init.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/services/init/template/LICENSE +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/services/init/template/README.md +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/services/init/template/__init__.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/services/init/template/task.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/services/launch.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/services/local_dev.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/services/login.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/services/ls.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/services/mkdir.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/services/move.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/services/register/__init__.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/services/register/constants.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/services/register/register.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/services/register/utils.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/services/rm.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/services/stop_pod.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/services/sync.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/services/test_data/__init__.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/services/test_data/ls.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/services/test_data/remove.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/services/test_data/upload.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/services/test_data/utils.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/services/workspace.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/snakemake/__init__.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/snakemake/config/__init__.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/snakemake/config/parser.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/snakemake/config/utils.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/snakemake/serialize.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/snakemake/serialize_utils.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/snakemake/single_task_snakemake.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/snakemake/utils.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/snakemake/workflow.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/tinyrequests.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/tui/__init__.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/utils/__init__.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/utils/path.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/workflow_config.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/pyproject.toml +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/setup.cfg +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/tests/__init__.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/tests/cp/__init__.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/tests/fixtures.py +0 -0
- {latch-2.51.2 → latch-2.51.2.dev2}/tests/test_ls.py +0 -0
|
@@ -111,7 +111,13 @@ latch_cli/services/execute/utils.py
|
|
|
111
111
|
latch_cli/services/init/__init__.py
|
|
112
112
|
latch_cli/services/init/init.py
|
|
113
113
|
latch_cli/services/init/__pycache__/__init__.cpython-310.pyc
|
|
114
|
+
latch_cli/services/init/__pycache__/__init__.cpython-311.pyc
|
|
115
|
+
latch_cli/services/init/__pycache__/__init__.cpython-38.pyc
|
|
116
|
+
latch_cli/services/init/__pycache__/__init__.cpython-39.pyc
|
|
114
117
|
latch_cli/services/init/__pycache__/init.cpython-310.pyc
|
|
118
|
+
latch_cli/services/init/__pycache__/init.cpython-311.pyc
|
|
119
|
+
latch_cli/services/init/__pycache__/init.cpython-38.pyc
|
|
120
|
+
latch_cli/services/init/__pycache__/init.cpython-39.pyc
|
|
115
121
|
latch_cli/services/init/assemble_and_sort/.env
|
|
116
122
|
latch_cli/services/init/assemble_and_sort/LICENSE
|
|
117
123
|
latch_cli/services/init/assemble_and_sort/README.md
|
|
@@ -119,18 +125,22 @@ latch_cli/services/init/assemble_and_sort/__init__.py
|
|
|
119
125
|
latch_cli/services/init/assemble_and_sort/assemble.py
|
|
120
126
|
latch_cli/services/init/assemble_and_sort/sort.py
|
|
121
127
|
latch_cli/services/init/assemble_and_sort/system-requirements.txt
|
|
128
|
+
latch_cli/services/init/assemble_and_sort/__pycache__/__init__.cpython-310.pyc
|
|
122
129
|
latch_cli/services/init/common/.dockerignore
|
|
123
130
|
latch_cli/services/init/example_conda/__init__.py
|
|
124
131
|
latch_cli/services/init/example_conda/conda_task.py
|
|
125
132
|
latch_cli/services/init/example_conda/environment.yaml
|
|
133
|
+
latch_cli/services/init/example_conda/__pycache__/__init__.cpython-310.pyc
|
|
126
134
|
latch_cli/services/init/example_docker/__init__.py
|
|
127
135
|
latch_cli/services/init/example_docker/task.py
|
|
136
|
+
latch_cli/services/init/example_nf_integration/latch_metadata/__pycache__/__init__.cpython-311.pyc
|
|
128
137
|
latch_cli/services/init/example_nfcore/Dockerfile
|
|
129
138
|
latch_cli/services/init/example_nfcore/__init__.py
|
|
130
139
|
latch_cli/services/init/example_nfcore/task.py
|
|
131
140
|
latch_cli/services/init/example_r/__init__.py
|
|
132
141
|
latch_cli/services/init/example_r/environment.R
|
|
133
142
|
latch_cli/services/init/example_r/r_task.py
|
|
143
|
+
latch_cli/services/init/example_r/__pycache__/__init__.cpython-310.pyc
|
|
134
144
|
latch_cli/services/init/example_snakemake/Dockerfile
|
|
135
145
|
latch_cli/services/init/example_snakemake/Snakefile
|
|
136
146
|
latch_cli/services/init/example_snakemake/config.yaml
|
|
@@ -143,6 +153,7 @@ latch_cli/services/init/template/LICENSE
|
|
|
143
153
|
latch_cli/services/init/template/README.md
|
|
144
154
|
latch_cli/services/init/template/__init__.py
|
|
145
155
|
latch_cli/services/init/template/task.py
|
|
156
|
+
latch_cli/services/init/template/__pycache__/__init__.cpython-310.pyc
|
|
146
157
|
latch_cli/services/register/__init__.py
|
|
147
158
|
latch_cli/services/register/constants.py
|
|
148
159
|
latch_cli/services/register/register.py
|
|
@@ -1,13 +1,66 @@
|
|
|
1
1
|
import os
|
|
2
2
|
import sys
|
|
3
|
-
import
|
|
4
|
-
import tty
|
|
3
|
+
from functools import wraps
|
|
5
4
|
from typing import Any, Callable, Generic, List, Optional, Tuple, TypeVar
|
|
6
5
|
|
|
7
|
-
from typing_extensions import TypedDict
|
|
6
|
+
from typing_extensions import ParamSpec, TypedDict
|
|
8
7
|
|
|
9
8
|
from latch_cli.click_utils import AnsiCodes
|
|
10
9
|
|
|
10
|
+
P = ParamSpec("P")
|
|
11
|
+
T = TypeVar("T")
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def raw_input_if_available(f: Callable[P, T]) -> Callable[P, T]:
|
|
15
|
+
if sys.platform == "win32":
|
|
16
|
+
|
|
17
|
+
@wraps(f)
|
|
18
|
+
def wrapper(*args: P.args, **kwargs: P.kwargs) -> T:
|
|
19
|
+
try:
|
|
20
|
+
from ctypes import pointer, windll
|
|
21
|
+
from ctypes.wintypes import DWORD, HANDLE
|
|
22
|
+
except ImportError:
|
|
23
|
+
return f(*args, **kwargs)
|
|
24
|
+
|
|
25
|
+
original_mode = DWORD()
|
|
26
|
+
handle = HANDLE(windll.kernel32.GetStdHandle(STD_INPUT_HANDLE))
|
|
27
|
+
windll.kernel32.GetConsoleMode(handle, pointer(original_mode))
|
|
28
|
+
|
|
29
|
+
ENABLE_ECHO_INPUT = 0x0004
|
|
30
|
+
ENABLE_LINE_INPUT = 0x0002
|
|
31
|
+
ENABLE_PROCESSED_INPUT = 0x0001
|
|
32
|
+
|
|
33
|
+
windll.kernel32.SetConsoleMode(
|
|
34
|
+
handle,
|
|
35
|
+
original_mode.value
|
|
36
|
+
& ~(ENABLE_ECHO_INPUT | ENABLE_LINE_INPUT | ENABLE_PROCESSED_INPUT),
|
|
37
|
+
)
|
|
38
|
+
|
|
39
|
+
try:
|
|
40
|
+
return f(*args, **kwargs)
|
|
41
|
+
finally:
|
|
42
|
+
windll.kernel32.SetConsoleMode(handle, original_mode)
|
|
43
|
+
|
|
44
|
+
else:
|
|
45
|
+
|
|
46
|
+
@wraps(f)
|
|
47
|
+
def wrapper(*args: P.args, **kwargs: P.kwargs) -> T:
|
|
48
|
+
try:
|
|
49
|
+
import termios
|
|
50
|
+
import tty
|
|
51
|
+
except ImportError:
|
|
52
|
+
return f(*args, **kwargs)
|
|
53
|
+
|
|
54
|
+
old_settings = termios.tcgetattr(sys.stdin.fileno())
|
|
55
|
+
tty.setraw(sys.stdin.fileno())
|
|
56
|
+
|
|
57
|
+
try:
|
|
58
|
+
return f(*args, **kwargs)
|
|
59
|
+
finally:
|
|
60
|
+
termios.tcsetattr(sys.stdin.fileno(), termios.TCSANOW, old_settings)
|
|
61
|
+
|
|
62
|
+
return wrapper
|
|
63
|
+
|
|
11
64
|
|
|
12
65
|
def buffered_print() -> Tuple[Callable, Callable]:
|
|
13
66
|
buffer = []
|
|
@@ -196,14 +249,12 @@ def read_bytes(num_bytes: int) -> bytes:
|
|
|
196
249
|
return result
|
|
197
250
|
|
|
198
251
|
|
|
199
|
-
T = TypeVar("T")
|
|
200
|
-
|
|
201
|
-
|
|
202
252
|
class SelectOption(TypedDict, Generic[T]):
|
|
203
253
|
display_name: str
|
|
204
254
|
value: T
|
|
205
255
|
|
|
206
256
|
|
|
257
|
+
@raw_input_if_available
|
|
207
258
|
def select_tui(
|
|
208
259
|
title: str, options: List[SelectOption[T]], clear_terminal: bool = True
|
|
209
260
|
) -> Optional[T]:
|
|
@@ -261,9 +312,6 @@ def select_tui(
|
|
|
261
312
|
|
|
262
313
|
return num_lines_rendered
|
|
263
314
|
|
|
264
|
-
old_settings = termios.tcgetattr(sys.stdin.fileno())
|
|
265
|
-
tty.setraw(sys.stdin.fileno())
|
|
266
|
-
|
|
267
315
|
curr_selected = 0
|
|
268
316
|
start_index = 0
|
|
269
317
|
_, term_height = os.get_terminal_size()
|
|
@@ -319,4 +367,3 @@ def select_tui(
|
|
|
319
367
|
clear(num_lines_rendered)
|
|
320
368
|
reveal_cursor()
|
|
321
369
|
_show()
|
|
322
|
-
termios.tcsetattr(sys.stdin.fileno(), termios.TCSANOW, old_settings)
|
|
@@ -4,15 +4,14 @@ import json
|
|
|
4
4
|
import os
|
|
5
5
|
import signal
|
|
6
6
|
import sys
|
|
7
|
-
import
|
|
8
|
-
import tty
|
|
9
|
-
from typing import Generic, Literal, Optional, Tuple, TypedDict, TypeVar, Union
|
|
7
|
+
from typing import Literal, Optional, TypedDict, Union
|
|
10
8
|
from urllib.parse import urljoin, urlparse
|
|
11
9
|
|
|
12
10
|
import websockets.client as websockets
|
|
13
11
|
from latch_sdk_config.latch import NUCLEUS_URL
|
|
14
12
|
from typing_extensions import TypeAlias
|
|
15
13
|
|
|
14
|
+
from latch_cli.menus import raw_input_if_available
|
|
16
15
|
from latch_cli.services.execute.utils import (
|
|
17
16
|
ContainerNode,
|
|
18
17
|
EGNNode,
|
|
@@ -174,6 +173,7 @@ async def connect(egn_info: EGNNode, container_info: Optional[ContainerNode]):
|
|
|
174
173
|
pass
|
|
175
174
|
|
|
176
175
|
|
|
176
|
+
@raw_input_if_available
|
|
177
177
|
def exec(
|
|
178
178
|
execution_id: Optional[str] = None,
|
|
179
179
|
egn_id: Optional[str] = None,
|
|
@@ -186,10 +186,4 @@ def exec(
|
|
|
186
186
|
egn_info = get_egn_info(execution_info, egn_id)
|
|
187
187
|
container_info = get_container_info(egn_info, container_index)
|
|
188
188
|
|
|
189
|
-
|
|
190
|
-
tty.setraw(sys.stdin)
|
|
191
|
-
|
|
192
|
-
try:
|
|
193
|
-
asyncio.run(connect(egn_info, container_info))
|
|
194
|
-
finally:
|
|
195
|
-
termios.tcsetattr(sys.stdin.fileno(), termios.TCSANOW, old_settings_stdin)
|
|
189
|
+
asyncio.run(connect(egn_info, container_info))
|
|
@@ -1,8 +1,5 @@
|
|
|
1
1
|
import os
|
|
2
|
-
import sys
|
|
3
|
-
import termios
|
|
4
2
|
import textwrap
|
|
5
|
-
import tty
|
|
6
3
|
from pathlib import Path
|
|
7
4
|
from typing import Dict, List
|
|
8
5
|
|
|
@@ -50,12 +47,10 @@ def get_executions():
|
|
|
50
47
|
]
|
|
51
48
|
|
|
52
49
|
for execution_data in sorted(data.values(), key=lambda x: -int(x["id"])):
|
|
53
|
-
options.append(
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
}
|
|
58
|
-
)
|
|
50
|
+
options.append({
|
|
51
|
+
**execution_data,
|
|
52
|
+
"workflow_tagged": f'{execution_data["workflow_name"]}/{execution_data["workflow_version"]}',
|
|
53
|
+
})
|
|
59
54
|
|
|
60
55
|
_all_executions(
|
|
61
56
|
title="All Executions",
|
|
@@ -64,6 +59,7 @@ def get_executions():
|
|
|
64
59
|
)
|
|
65
60
|
|
|
66
61
|
|
|
62
|
+
@menus.raw_input_if_available
|
|
67
63
|
def _all_executions(
|
|
68
64
|
title: str,
|
|
69
65
|
column_names: List[str],
|
|
@@ -142,9 +138,6 @@ def _all_executions(
|
|
|
142
138
|
menus._show()
|
|
143
139
|
return max_row_len
|
|
144
140
|
|
|
145
|
-
old_settings = termios.tcgetattr(sys.stdin.fileno())
|
|
146
|
-
tty.setraw(sys.stdin.fileno())
|
|
147
|
-
|
|
148
141
|
curr_selected = hor_index = 0
|
|
149
142
|
|
|
150
143
|
menus.remove_cursor()
|
|
@@ -223,13 +216,13 @@ def _all_executions(
|
|
|
223
216
|
prev = (curr_selected, hor_index, term_width, term_height)
|
|
224
217
|
menus.clear_screen()
|
|
225
218
|
max_row_len = render(curr_selected, hor_index, term_width, term_height)
|
|
226
|
-
except KeyboardInterrupt:
|
|
219
|
+
except KeyboardInterrupt:
|
|
220
|
+
...
|
|
227
221
|
finally:
|
|
228
222
|
menus.clear_screen()
|
|
229
223
|
menus.reveal_cursor()
|
|
230
224
|
menus.move_cursor((0, 0))
|
|
231
225
|
menus._show()
|
|
232
|
-
termios.tcsetattr(sys.stdin.fileno(), termios.TCSANOW, old_settings)
|
|
233
226
|
|
|
234
227
|
|
|
235
228
|
def _execution_dashboard(execution_data: Dict[str, str], workflow_graph: Dict):
|
|
@@ -316,7 +309,8 @@ def _execution_dashboard(execution_data: Dict[str, str], workflow_graph: Dict):
|
|
|
316
309
|
menus.clear_screen()
|
|
317
310
|
prev = (curr_selected, term_width, term_height)
|
|
318
311
|
render(curr_selected, term_width, term_height)
|
|
319
|
-
except KeyboardInterrupt:
|
|
312
|
+
except KeyboardInterrupt:
|
|
313
|
+
...
|
|
320
314
|
finally:
|
|
321
315
|
menus.clear_screen()
|
|
322
316
|
menus.move_cursor((0, 0))
|
|
@@ -452,7 +446,8 @@ def _log_window(execution_data, fixed_workflow_graph: list, selected: int):
|
|
|
452
446
|
menus.clear_screen()
|
|
453
447
|
prev_term_dims = (vert_index, hor_index, term_width, term_height)
|
|
454
448
|
render(vert_index, hor_index, term_width, term_height)
|
|
455
|
-
except KeyboardInterrupt:
|
|
449
|
+
except KeyboardInterrupt:
|
|
450
|
+
...
|
|
456
451
|
finally:
|
|
457
452
|
log_sched.shutdown()
|
|
458
453
|
log_file.unlink(missing_ok=True)
|
|
@@ -513,7 +508,8 @@ def _abort_modal(execution_data):
|
|
|
513
508
|
if prev_term_dims != (term_width, term_height):
|
|
514
509
|
prev_term_dims = (term_width, term_height)
|
|
515
510
|
render(term_width, term_height)
|
|
516
|
-
except KeyboardInterrupt:
|
|
511
|
+
except KeyboardInterrupt:
|
|
512
|
+
...
|
|
517
513
|
finally:
|
|
518
514
|
menus.clear_screen()
|
|
519
515
|
menus.move_cursor((0, 0))
|
|
Binary file
|
latch-2.51.2.dev2/latch_cli/services/init/assemble_and_sort/__pycache__/__init__.cpython-310.pyc
ADDED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -4,10 +4,8 @@ import os
|
|
|
4
4
|
import signal
|
|
5
5
|
import subprocess
|
|
6
6
|
import sys
|
|
7
|
-
import termios
|
|
8
7
|
import time
|
|
9
8
|
import traceback
|
|
10
|
-
import tty
|
|
11
9
|
from enum import Enum
|
|
12
10
|
from http.client import HTTPException
|
|
13
11
|
from pathlib import Path
|
|
@@ -25,6 +23,7 @@ from watchfiles import awatch
|
|
|
25
23
|
|
|
26
24
|
from latch.utils import current_workspace, retrieve_or_login
|
|
27
25
|
from latch_cli.constants import docker_image_name_illegal_pat
|
|
26
|
+
from latch_cli.menus import raw_input_if_available
|
|
28
27
|
from latch_cli.tinyrequests import post
|
|
29
28
|
from latch_cli.utils import TemporarySSHCredentials, identifier_suffix_from_str
|
|
30
29
|
|
|
@@ -253,11 +252,10 @@ async def _send_resize_message(
|
|
|
253
252
|
)
|
|
254
253
|
|
|
255
254
|
|
|
255
|
+
@raw_input_if_available
|
|
256
256
|
async def _shell_session(
|
|
257
257
|
ws: client.WebSocketClientProtocol,
|
|
258
258
|
):
|
|
259
|
-
old_settings_stdin = termios.tcgetattr(sys.stdin.fileno())
|
|
260
|
-
tty.setraw(sys.stdin)
|
|
261
259
|
|
|
262
260
|
loop = asyncio.get_event_loop()
|
|
263
261
|
reader = asyncio.StreamReader(loop=loop)
|
|
@@ -332,7 +330,6 @@ async def _shell_session(
|
|
|
332
330
|
except asyncio.CancelledError:
|
|
333
331
|
...
|
|
334
332
|
finally:
|
|
335
|
-
termios.tcsetattr(sys.stdin.fileno(), termios.TCSANOW, old_settings_stdin)
|
|
336
333
|
signal.signal(signal.SIGWINCH, old_sigwinch_handler)
|
|
337
334
|
|
|
338
335
|
|
|
@@ -1,7 +1,4 @@
|
|
|
1
1
|
import os
|
|
2
|
-
import sys
|
|
3
|
-
import termios
|
|
4
|
-
import tty
|
|
5
2
|
import webbrowser
|
|
6
3
|
from pathlib import Path
|
|
7
4
|
from typing import List
|
|
@@ -72,7 +69,8 @@ def preview(pkg_root: Path):
|
|
|
72
69
|
webbrowser.open(url)
|
|
73
70
|
|
|
74
71
|
|
|
75
|
-
#
|
|
72
|
+
# todo(ayush): abstract this logic in a unified interface that all tui commands use
|
|
73
|
+
@menus.raw_input_if_available
|
|
76
74
|
def _select_workflow_tui(title: str, options: List[str], clear_terminal: bool = True):
|
|
77
75
|
"""
|
|
78
76
|
Renders a terminal UI that allows users to select one of the options
|
|
@@ -125,9 +123,6 @@ def _select_workflow_tui(title: str, options: List[str], clear_terminal: bool =
|
|
|
125
123
|
|
|
126
124
|
return num_lines_rendered
|
|
127
125
|
|
|
128
|
-
old_settings = termios.tcgetattr(sys.stdin.fileno())
|
|
129
|
-
tty.setraw(sys.stdin.fileno())
|
|
130
|
-
|
|
131
126
|
curr_selected = 0
|
|
132
127
|
start_index = 0
|
|
133
128
|
_, term_height = os.get_terminal_size()
|
|
@@ -176,9 +171,9 @@ def _select_workflow_tui(title: str, options: List[str], clear_terminal: bool =
|
|
|
176
171
|
start_index=start_index,
|
|
177
172
|
max_per_page=max_per_page,
|
|
178
173
|
)
|
|
179
|
-
except KeyboardInterrupt:
|
|
174
|
+
except KeyboardInterrupt:
|
|
175
|
+
...
|
|
180
176
|
finally:
|
|
181
177
|
menus.clear(num_lines_rendered)
|
|
182
178
|
menus.reveal_cursor()
|
|
183
179
|
menus._show()
|
|
184
|
-
termios.tcsetattr(sys.stdin.fileno(), termios.TCSANOW, old_settings)
|
|
Binary file
|
|
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
|
|
File without changes
|
{latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/services/init/assemble_and_sort/system-requirements.txt
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
|
{latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/services/init/example_snakemake/.latch/latch_entrypoint
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/services/init/example_snakemake/environment.yaml
RENAMED
|
File without changes
|
{latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/services/init/example_snakemake/latch_metadata.py
RENAMED
|
File without changes
|
{latch-2.51.2 → latch-2.51.2.dev2}/latch_cli/services/init/example_snakemake/scripts/plot-quals.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
|
|
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
|