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