hpc-beeflow 0.1.11.dev0__tar.gz → 0.1.11.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.
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/PKG-INFO +4 -2
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/README.rst +2 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/client/bee_client.py +14 -20
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/cwl/cwl.py +32 -7
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/cwl/examples/comd.py +1 -1
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/cwl/workflow.py +30 -3
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/parser/parser.py +43 -11
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/wf_data.py +42 -20
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/wf_interface.py +3 -3
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/worker/worker.py +16 -6
- hpc_beeflow-0.1.11.dev2/beeflow/tests/cwl_files/cat-grep-tar.cwl +109 -0
- hpc_beeflow-0.1.11.dev2/beeflow/tests/cwl_files/cat-grep-tar.yml +5 -0
- hpc_beeflow-0.1.11.dev2/beeflow/tests/cwl_files/clamr.cwl +95 -0
- hpc_beeflow-0.1.11.dev2/beeflow/tests/cwl_files/clamr.yml +8 -0
- hpc_beeflow-0.1.11.dev2/beeflow/tests/cwl_files/comd.cwl +79 -0
- hpc_beeflow-0.1.11.dev2/beeflow/tests/cwl_files/comd.yml +8 -0
- hpc_beeflow-0.1.11.dev2/beeflow/tests/cwl_files/task-req.cwl +57 -0
- hpc_beeflow-0.1.11.dev2/beeflow/tests/cwl_files/task-req.yml +3 -0
- hpc_beeflow-0.1.11.dev2/beeflow/tests/test_bee_client.py +971 -0
- hpc_beeflow-0.1.11.dev2/beeflow/tests/test_cwl.py +418 -0
- hpc_beeflow-0.1.11.dev2/beeflow/tests/test_cwl_workflow.py +245 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/tests/test_parser.py +95 -11
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/tests/test_wf_interface.py +2 -2
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/wf_manager/resources/wf_utils.py +12 -10
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/pyproject.toml +3 -3
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/LICENSE +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/__init__.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/client/README.md +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/client/__init__.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/client/core.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/client/remote_client.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/cloud_launcher.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/README.md +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/__init__.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/api.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/build/README.md +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/build/__init__.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/build/build_driver.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/build/container_drivers.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/build/utils.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/build_interfaces.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/cli.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/cli_connection.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/cloud/README.md +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/cloud/__init__.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/cloud/chameleoncloud.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/cloud/cloud.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/cloud/constants.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/cloud/google.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/cloud/openstack.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/cloud/provider.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/config_driver.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/config_utils.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/config_validator.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/connection.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/container_path.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/crt/__init__.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/crt/charliecloud_driver.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/crt/crt_driver.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/crt/singularity_driver.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/crt_interface.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/cwl/__init__.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/cwl/examples/Dockerfile.comd-x86_64 +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/cwl/examples/README.txt +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/cwl/examples/cat_grep_tar.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/cwl/examples/comd_driver.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/cwl/examples/comd_pre.sh +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/cwl/examples/lorem.txt +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/db/__init__.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/db/bdb.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/db/client_db.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/db/sched_db.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/db/tm_db.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/db/wfm_db.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/deps/__init__.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/deps/celery_manager.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/deps/container_manager.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/deps/neo4j_manager.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/deps/redis_manager.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/expr.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/gdb/DESIGN.md +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/gdb/__init__.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/gdb/gdb_driver.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/gdb/generate_graph.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/gdb/graphml_key_updater.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/gdb/neo4j_cypher.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/gdb/neo4j_driver.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/integration/__init__.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/integration/generated_workflows.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/integration/utils.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/integration_test.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/log.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/parser/.gitignore +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/parser/README.md +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/parser/__init__.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/paths.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/states.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/tab_completion.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/validation.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/wf_profiler.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/worker/README.md +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/worker/__init__.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/worker/flux_worker.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/worker/lsf_worker.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/worker/simple_worker.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/worker/slurm_worker.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/worker/utils.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/worker_interface.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cloud_templates/dora.jinja +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cloud_templates/dora.yaml +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/README.md +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/README.md +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/blast/README.md +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/blast/blast.yml +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/blast/blast_output.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/blast/blast_output_err.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/blast/blast_split.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/blast/blast_wf.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/blast/blast_worker001.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/blast/blast_worker002.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/blast/input/small.fasta +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/cat-grep-fail/README.md +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/cat-grep-fail/cat.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/cat-grep-fail/grep0.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/cat-grep-fail/grep1.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/cat-grep-fail/input.yml +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/cat-grep-fail/lorem.txt +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/cat-grep-fail/tar.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/cat-grep-fail/workflow.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/cgt-2branches/README.txt +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/cgt-2branches/cat.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/cgt-2branches/cat2.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/cgt-2branches/grep0.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/cgt-2branches/grep1.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/cgt-2branches/grep2.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/cgt-2branches/grep3.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/cgt-2branches/input.yml +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/cgt-2branches/lorem.txt +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/cgt-2branches/tar.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/cgt-2branches/tar2.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/cgt-2branches/workflow.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-ci/README.md +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-ci/clamr.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-ci/clamr_job.json +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-ci/clamr_job.yml +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-ci/clamr_wf.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-ci/ffmpeg.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-build_script/Dockerfile.clamr-ffmpeg +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-build_script/README.md +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-build_script/clamr.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-build_script/clamr_job.json +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-build_script/clamr_job.yml +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-build_script/clamr_wf.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-build_script/ffmpeg.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-build_script/post_run.sh +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-build_script/pre_run.sh +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-validate_script/Dockerfile.clamr-ffmpeg +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-validate_script/README.md +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-validate_script/clamr.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-validate_script/clamr_job.json +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-validate_script/clamr_job.yml +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-validate_script/clamr_wf.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-validate_script/ffmpeg.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-validate_script/post_run.sh +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-validate_script/pre_run.sh +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-wf/README.md +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-wf/clamr.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-wf/clamr_job.json +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-wf/clamr_job.yml +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-wf/clamr_wf.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-wf/ffmpeg.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-wf-chicoma/README.md +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-wf-chicoma/clamr.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-wf-chicoma/clamr_job.json +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-wf-chicoma/clamr_job.yml +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-wf-chicoma/clamr_wf.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-wf-chicoma/ffmpeg.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-wf-noyaml/README.md +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-wf-noyaml/lsf-charliecloud/README.md +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-wf-noyaml/lsf-charliecloud/cf-summit.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-wf-noyaml/slurm-charliecloud/Dockerfile.clamr-lanl-x86_64 +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-wf-noyaml/slurm-charliecloud/README.md +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-wf-noyaml/slurm-charliecloud/cf-darwin.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-wf-noyaml/slurm-charliecloud/cf-no-owrite.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-wf-noyaml/slurm-charliecloud/cf.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-wf-noyaml/slurm-charliecloud/copyContainer_containerName.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-wf-noyaml/slurm-charliecloud/dockerFile_containerName.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-wf-noyaml/slurm-charliecloud/dockerPull.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-wf-noyaml/slurm-singularity/README.md +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-wf-noyaml/slurm-singularity/cf-singularity.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-wf-singularity/README.md +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-wf-singularity/clamr.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-wf-singularity/clamr_job.json +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-wf-singularity/clamr_job.yml +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-wf-singularity/clamr_wf.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-wf-singularity/ffmpeg.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-wf-summit/README.md +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-wf-summit/clamr.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-wf-summit/clamr_job.json +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-wf-summit/clamr_job.yml +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-wf-summit/clamr_wf.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-wf-summit/ffmpeg.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-wf-use-container/README.md +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-wf-use-container/clamr.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-wf-use-container/clamr_job.json +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-wf-use-container/clamr_job.yml +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-wf-use-container/clamr_wf.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-wf-use-container/ffmpeg.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/lulesh-mpi/lulesh.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/lulesh-mpi/lulesh.yml +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/lulesh-mpi-multi-file/lulesh.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/lulesh-mpi-multi-file/lulesh_job.yml +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/lulesh-mpi-multi-file/lulesh_wf.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/nwchem-mpi/README.md +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/nwchem-mpi/nwchem.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/nwchem-mpi/nwchem.yml +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/nwchem-mpi/nwchem_bin.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/pennant/graph.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/pennant/pennant.yml +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/pennant/pennant_1_node.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/pennant/pennant_2_node.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/pennant/pennant_4_node.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/pennant/pennant_wf.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/pennant-build/Dockerfile.pennant-flux-x86_64 +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/pennant-build/Dockerfile.pennant-graph-x86_64 +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/pennant-build/graph.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/pennant-build/graph_pennant.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/pennant-build/graph_pennant.sh +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/pennant-build/pennant.yml +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/pennant-build/pennant_1_node.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/pennant-build/pennant_2_node.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/pennant-build/pennant_4_node.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/pennant-build/pennant_8_node.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/pennant-build/pennant_wf.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/pytest.ini +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/simple-workflows/README.md +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/simple-workflows/cancel.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/simple-workflows/grep-wordcount/README.md +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/simple-workflows/grep-wordcount/gc-nc.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/simple-workflows/grep-wordcount/gc.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/simple-workflows/grep-wordcount/lorem.txt +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/cwl_validation/README.md +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/cwl_validation/builder/dockerFile.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/cwl_validation/builder/dockerPull.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/cwl_validation/grep-wordcount/gc.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/cwl_validation/grep-wordcount/lorem.txt +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/cwl_validation/helloworld.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/cwl_validation/helloworld_input.yaml +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/cwl_validation/ml-workflow/example-1/DAG_example-1.png +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/cwl_validation/ml-workflow/example-1/README.md +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/cwl_validation/ml-workflow/example-1/add.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/cwl_validation/ml-workflow/example-1/add_multiply_example_workflow.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/cwl_validation/ml-workflow/example-1/add_step1.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/cwl_validation/ml-workflow/example-1/isolated test.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/cwl_validation/ml-workflow/example-1/job.yaml +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/cwl_validation/ml-workflow/example-1/multiply.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/cwl_validation/ml-workflow/example-1/multiply_step2.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/cwl_validation/ml-workflow/example-1/workflow_generater_python.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/README.md +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/decision_tree.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/decision_tree_output.txt +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/decision_tree_tool.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/expectedValue.txt +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/hiring1.txt +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/linear_regress_output.txt +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/linear_regression.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/machinelearning_pipeline.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/out.PNG +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/predict_code.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/predict_tool.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/read_dataset.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/read_dataset_tool.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/regress_tool.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/dockerfiles/Dockerfile.builder_demo +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/dockerfiles/Dockerfile.clamr-ffmpeg +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/dockerfiles/Dockerfile.clamr-lanl-x86_64 +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/dockerfiles/Dockerfile.clamr-ppc64le +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/dockerfiles/Dockerfile.comd-flux-x86_64 +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/dockerfiles/Dockerfile.deb9ompi-x86_64 +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/dockerfiles/Dockerfile.lulesh-x86_64 +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/dockerfiles/Dockerfile.neo4j +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/dockerfiles/Dockerfile.nwchem-x86_64 +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/dockerfiles/Dockerfile.pennant-flux-x86_64 +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/dockerfiles/Dockerfile.vaspompi-x86_64 +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/dockerfiles/README.md +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/dockerfiles/comd-pmix-support/Dockerfile.comd-x86_64-wpmix +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/dockerfiles/comd-pmix-support/Dockerfile.debian +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/dockerfiles/comd-pmix-support/Dockerfile.openmpi-3.1.5 +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/dockerfiles/comd-pmix-support/README.md +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/dockerfiles/comd-pmix-support/dont-init-ucx-on-intel-cray.patch +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/dockerfiles/pennant-graph/Dockerfile.pennant-graph-x86_64 +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/dockerfiles/pennant-graph/graph_pennant.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/dockerfiles/pennant-graph/graph_pennant.sh +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/remote/__init__.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/remote/remote.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/scheduler/README.md +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/scheduler/__init__.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/scheduler/algorithms.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/scheduler/resource_allocation.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/scheduler/scheduler.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/scheduler/scheduler.yaml +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/scheduler/serializable.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/scheduler/task.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/task_manager/__init__.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/task_manager/background.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/task_manager/task_actions.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/task_manager/task_manager.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/task_manager/task_submit.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/task_manager/utils.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/tests/42.tgz +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/tests/README.md +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/tests/cf.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/tests/clamr-wf/clamr.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/tests/clamr-wf/clamr_job.json +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/tests/clamr-wf/clamr_job.yml +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/tests/clamr-wf/clamr_wf.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/tests/clamr-wf/ffmpeg.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/tests/clamr-wf/mv_script.cwl +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/tests/clamr-wf/mv_script.sh +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/tests/clamr-wf.tgz +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/tests/gdb.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/tests/mocks.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/tests/test_charliecloud_driver.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/tests/test_cloud.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/tests/test_config_driver.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/tests/test_config_utils.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/tests/test_config_validator.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/tests/test_container_path.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/tests/test_db_client.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/tests/test_db_sched.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/tests/test_db_tm.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/tests/test_neo4j_cypher.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/tests/test_remote.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/tests/test_remote_client.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/tests/test_scheduler.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/tests/test_scheduler_resource_allocation.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/tests/test_scheduler_rest.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/tests/test_slurm_worker.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/tests/test_tm.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/tests/test_wf_manager.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/tests/test_wf_update.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/wf_manager/__init__.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/wf_manager/resources/__init__.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/wf_manager/resources/wf_actions.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/wf_manager/resources/wf_list.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/wf_manager/resources/wf_update.py +0 -0
- {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/wf_manager/wf_manager.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: hpc-beeflow
|
|
3
|
-
Version: 0.1.11.
|
|
3
|
+
Version: 0.1.11.dev2
|
|
4
4
|
Summary: A software package for containerizing HPC applications and managing job workflows
|
|
5
5
|
Keywords: bee,hpc,workflow,cluster,computing
|
|
6
6
|
Author: BEE-LANL Dev Team
|
|
@@ -43,7 +43,7 @@ Requires-Dist: jsonpickle (>=2.2.0,<3.0.0)
|
|
|
43
43
|
Requires-Dist: neo4j (>=5,<6)
|
|
44
44
|
Requires-Dist: networkx (==3.1)
|
|
45
45
|
Requires-Dist: pre-commit (==3.5.0)
|
|
46
|
-
Requires-Dist: pylint (
|
|
46
|
+
Requires-Dist: pylint (>=3.2.7,<4.0.0)
|
|
47
47
|
Requires-Dist: python-daemon (>=2.3.1,<3.0.0)
|
|
48
48
|
Requires-Dist: python-heatclient (>=3.1.0,<4.0.0) ; extra == "cloud-extras"
|
|
49
49
|
Requires-Dist: python-openstackclient (>=6.0.0,<7.0.0) ; extra == "cloud-extras"
|
|
@@ -119,10 +119,12 @@ Contributors:
|
|
|
119
119
|
* Tim Randles - `trandles-lanl <https://github.com/trandles-lanl>`_
|
|
120
120
|
* Jacob Tronge - `jtronge <https://github.com/jtronge>`_
|
|
121
121
|
* Kabir Vats - `kabir-vats <https://github.com/kabir-vats>`_
|
|
122
|
+
* Sare Beste Zeytun - `sbzeytun <https://github.com/sbzeytun>`_
|
|
122
123
|
|
|
123
124
|
Concept and Design Contributors
|
|
124
125
|
|
|
125
126
|
* James Ahrens
|
|
127
|
+
* Curt Canada
|
|
126
128
|
* Allen McPherson
|
|
127
129
|
* Li-Ta Lo
|
|
128
130
|
* Louis Vernon
|
|
@@ -63,10 +63,12 @@ Contributors:
|
|
|
63
63
|
* Tim Randles - `trandles-lanl <https://github.com/trandles-lanl>`_
|
|
64
64
|
* Jacob Tronge - `jtronge <https://github.com/jtronge>`_
|
|
65
65
|
* Kabir Vats - `kabir-vats <https://github.com/kabir-vats>`_
|
|
66
|
+
* Sare Beste Zeytun - `sbzeytun <https://github.com/sbzeytun>`_
|
|
66
67
|
|
|
67
68
|
Concept and Design Contributors
|
|
68
69
|
|
|
69
70
|
* James Ahrens
|
|
71
|
+
* Curt Canada
|
|
70
72
|
* Allen McPherson
|
|
71
73
|
* Li-Ta Lo
|
|
72
74
|
* Louis Vernon
|
|
@@ -231,7 +231,6 @@ def get_wf_list():
|
|
|
231
231
|
if resp.status_code != requests.codes.okay: # pylint: disable=no-member
|
|
232
232
|
error_exit('WF Manager did not return workflow list')
|
|
233
233
|
|
|
234
|
-
logging.info('List Jobs: {resp.text}')
|
|
235
234
|
return jsonpickle.decode(resp.json()['workflow_list'])
|
|
236
235
|
|
|
237
236
|
|
|
@@ -275,10 +274,7 @@ def match_short_id(wf_id):
|
|
|
275
274
|
"workflow ID {matched_ids[0]}")
|
|
276
275
|
long_wf_id = matched_ids[0]
|
|
277
276
|
return long_wf_id
|
|
278
|
-
|
|
279
|
-
sys.exit("There are currently no workflows.")
|
|
280
|
-
|
|
281
|
-
return None
|
|
277
|
+
sys.exit("There are currently no workflows.")
|
|
282
278
|
|
|
283
279
|
|
|
284
280
|
def get_wf_status(wf_id):
|
|
@@ -324,6 +320,18 @@ def submit(wf_name: str = typer.Argument(..., help='the workflow name'), # pyli
|
|
|
324
320
|
wf_path = wf_path.resolve()
|
|
325
321
|
workdir = workdir.resolve()
|
|
326
322
|
|
|
323
|
+
# Make sure the workdir is an absolute path and exists
|
|
324
|
+
workdir = os.path.expanduser(workdir)
|
|
325
|
+
workdir = os.path.abspath(workdir)
|
|
326
|
+
if not os.path.exists(workdir):
|
|
327
|
+
error_exit(f"Workflow working directory \"{workdir}\" doesn't exist")
|
|
328
|
+
|
|
329
|
+
# Make sure the workdir is not in /var or /var/tmp
|
|
330
|
+
if os.path.commonpath([os.path.realpath('/tmp'), workdir]) == os.path.realpath('/tmp'):
|
|
331
|
+
error_exit("Workflow working directory cannot be in \"/tmp\"")
|
|
332
|
+
if os.path.commonpath([os.path.realpath('/var/tmp'), workdir]) == os.path.realpath('/var/tmp'):
|
|
333
|
+
error_exit("Workflow working directory cannot be in \"/var/tmp\"")
|
|
334
|
+
|
|
327
335
|
tarball_path = ""
|
|
328
336
|
workflow = None
|
|
329
337
|
wf_tarball = None
|
|
@@ -363,7 +371,7 @@ def submit(wf_name: str = typer.Argument(..., help='the workflow name'), # pyli
|
|
|
363
371
|
parser = CwlParser()
|
|
364
372
|
workflow_id = generate_workflow_id()
|
|
365
373
|
workflow, tasks = parser.parse_workflow(workflow_id, str(main_cwl_path),
|
|
366
|
-
job=str(yaml_path))
|
|
374
|
+
job=str(yaml_path), workdir=workdir)
|
|
367
375
|
tasks = [jsonpickle.encode(task) for task in tasks]
|
|
368
376
|
|
|
369
377
|
wf_tarball = open(package_path, 'rb')
|
|
@@ -373,18 +381,6 @@ def submit(wf_name: str = typer.Argument(..., help='the workflow name'), # pyli
|
|
|
373
381
|
else:
|
|
374
382
|
error_exit(f'Workflow tarball {wf_path} cannot be found')
|
|
375
383
|
|
|
376
|
-
# Make sure the workdir is an absolute path and exists
|
|
377
|
-
workdir = os.path.expanduser(workdir)
|
|
378
|
-
workdir = os.path.abspath(workdir)
|
|
379
|
-
if not os.path.exists(workdir):
|
|
380
|
-
error_exit(f"Workflow working directory \"{workdir}\" doesn't exist")
|
|
381
|
-
|
|
382
|
-
# Make sure the workdir is not in /var or /var/tmp
|
|
383
|
-
if os.path.commonpath([os.path.realpath('/tmp'), workdir]) == os.path.realpath('/tmp'):
|
|
384
|
-
error_exit("Workflow working directory cannot be in \"/tmp\"")
|
|
385
|
-
if os.path.commonpath([os.path.realpath('/var/tmp'), workdir]) == os.path.realpath('/var/tmp'):
|
|
386
|
-
error_exit("Workflow working directory cannot be in \"/var/tmp\"")
|
|
387
|
-
|
|
388
384
|
# TODO: Can all of this information be sent as a file?
|
|
389
385
|
data = {
|
|
390
386
|
'wf_name': wf_name.encode(),
|
|
@@ -558,8 +554,6 @@ def list_workflows():
|
|
|
558
554
|
else:
|
|
559
555
|
typer.echo("There are currently no workflows.")
|
|
560
556
|
|
|
561
|
-
logging.info('List workflows: {resp.text}')
|
|
562
|
-
|
|
563
557
|
|
|
564
558
|
@app.command()
|
|
565
559
|
def query(wf_id: str = typer.Argument(..., callback=match_short_id)):
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"""Create and manage CWL files."""
|
|
2
2
|
from dataclasses import dataclass
|
|
3
3
|
from io import StringIO
|
|
4
|
+
from typing import Optional
|
|
4
5
|
import ruamel.yaml
|
|
5
6
|
|
|
6
7
|
# Create the global object for ruamel.ymal
|
|
@@ -72,6 +73,7 @@ class InputBinding:
|
|
|
72
73
|
|
|
73
74
|
prefix: str = None
|
|
74
75
|
position: int = None
|
|
76
|
+
value_from: str = None
|
|
75
77
|
|
|
76
78
|
def dump(self):
|
|
77
79
|
"""Dump returns dictionary that will be used by pyyaml dump."""
|
|
@@ -80,6 +82,8 @@ class InputBinding:
|
|
|
80
82
|
binding_yaml['inputBinding']['position'] = self.position
|
|
81
83
|
if self.prefix:
|
|
82
84
|
binding_yaml['inputBinding']['prefix'] = self.prefix
|
|
85
|
+
if self.value_from:
|
|
86
|
+
binding_yaml['inputBinding']['valueFrom'] = self.value_from
|
|
83
87
|
return binding_yaml
|
|
84
88
|
|
|
85
89
|
def __repr__(self):
|
|
@@ -321,7 +325,7 @@ class DockerRequirement:
|
|
|
321
325
|
if self.container_name:
|
|
322
326
|
docker_dump['DockerRequirement']['beeflow:containerName'] = self.container_name
|
|
323
327
|
if self.force_type:
|
|
324
|
-
docker_dump['DockerRequirement']['beeflow:
|
|
328
|
+
docker_dump['DockerRequirement']['beeflow:forceType'] = self.force_type
|
|
325
329
|
return docker_dump
|
|
326
330
|
|
|
327
331
|
def __repr__(self):
|
|
@@ -359,7 +363,7 @@ class SlurmRequirement:
|
|
|
359
363
|
"""Represents a beeflow custom MPI requirement."""
|
|
360
364
|
|
|
361
365
|
account: str = None
|
|
362
|
-
time_limit:
|
|
366
|
+
time_limit: str = None
|
|
363
367
|
partition: str = None
|
|
364
368
|
qos: str = None
|
|
365
369
|
reservation: str = None
|
|
@@ -396,6 +400,7 @@ class CheckpointRequirement:
|
|
|
396
400
|
restart_parameters: str
|
|
397
401
|
num_tries: int
|
|
398
402
|
enabled: bool = True
|
|
403
|
+
add_parameters: Optional[str] = None
|
|
399
404
|
|
|
400
405
|
def dump(self):
|
|
401
406
|
"""Dump beeflow requirement to a dictionary."""
|
|
@@ -406,8 +411,9 @@ class CheckpointRequirement:
|
|
|
406
411
|
checkpoint_dump[req_name]['container_path'] = self.container_path
|
|
407
412
|
checkpoint_dump[req_name]['file_regex'] = self.file_regex
|
|
408
413
|
checkpoint_dump[req_name]['restart_parameters'] = self.restart_parameters
|
|
409
|
-
checkpoint_dump[req_name]['
|
|
410
|
-
|
|
414
|
+
checkpoint_dump[req_name]['add_parameters'] = self.add_parameters
|
|
415
|
+
checkpoint_dump[req_name]['num_tries'] = self.num_tries
|
|
416
|
+
return checkpoint_dump
|
|
411
417
|
|
|
412
418
|
def __repr__(self):
|
|
413
419
|
"""Return CheckpointRequirement as a yaml string."""
|
|
@@ -447,6 +453,27 @@ class ScriptRequirement:
|
|
|
447
453
|
return stream.getvalue()
|
|
448
454
|
|
|
449
455
|
|
|
456
|
+
@dataclass
|
|
457
|
+
class TaskRequirement:
|
|
458
|
+
"""Defines task requirement."""
|
|
459
|
+
|
|
460
|
+
workdir: str
|
|
461
|
+
|
|
462
|
+
def dump(self):
|
|
463
|
+
"""Dump task requirement to a dictionary."""
|
|
464
|
+
key = 'beeflow:TaskRequirement'
|
|
465
|
+
this_dump = {key: {}}
|
|
466
|
+
if self.workdir:
|
|
467
|
+
this_dump[key]['workdir'] = self.workdir
|
|
468
|
+
return this_dump
|
|
469
|
+
|
|
470
|
+
def __repr__(self):
|
|
471
|
+
"""Return TaskRequirement as a yaml string."""
|
|
472
|
+
stream = StringIO()
|
|
473
|
+
yaml.dump(self.dump(), stream)
|
|
474
|
+
return stream.getvalue()
|
|
475
|
+
|
|
476
|
+
|
|
450
477
|
@dataclass
|
|
451
478
|
class Hints:
|
|
452
479
|
"""Holds all the hints for a CWL workflow."""
|
|
@@ -627,6 +654,4 @@ class CWL:
|
|
|
627
654
|
|
|
628
655
|
def __repr__(self):
|
|
629
656
|
"""Return CWL file as a string."""
|
|
630
|
-
|
|
631
|
-
yaml.dump(self.dump_wf(), stream)
|
|
632
|
-
return stream.getvalue()
|
|
657
|
+
return self.dump_wf()
|
|
@@ -33,7 +33,7 @@ def main():
|
|
|
33
33
|
# Slurm(account="standard", time_limit=60, partition="standard",
|
|
34
34
|
# qos="debug", reservation="standard"),
|
|
35
35
|
Script(pre_script="comd_pre.sh"),
|
|
36
|
-
Slurm(time_limit=500),
|
|
36
|
+
Slurm(time_limit="500"),
|
|
37
37
|
Charliecloud(docker_file="Dockerfile.comd-x86_64",
|
|
38
38
|
container_name="comd-mpi")
|
|
39
39
|
])
|
|
@@ -5,7 +5,8 @@ from dataclasses import dataclass
|
|
|
5
5
|
from beeflow.common.cwl.cwl import (CWL, CWLInput, CWLInputs, RunInput, Inputs, CWLOutput,
|
|
6
6
|
Outputs, Run, RunOutput, Step, Steps, Hints,
|
|
7
7
|
InputBinding, MPIRequirement, DockerRequirement,
|
|
8
|
-
ScriptRequirement, SlurmRequirement
|
|
8
|
+
ScriptRequirement, SlurmRequirement,
|
|
9
|
+
CheckpointRequirement, TaskRequirement)
|
|
9
10
|
|
|
10
11
|
|
|
11
12
|
@dataclass
|
|
@@ -14,12 +15,13 @@ class Input:
|
|
|
14
15
|
name: str
|
|
15
16
|
type_: str
|
|
16
17
|
# This is either a value or a source connection
|
|
17
|
-
value: str
|
|
18
|
+
value: str = None
|
|
18
19
|
# The prefix or position of the argument
|
|
19
20
|
# This can either be a prefix such as -f or --file
|
|
20
21
|
# Or a position like 2 if the command is "foo <file>"
|
|
21
22
|
prefix: str = None
|
|
22
23
|
position: int = None
|
|
24
|
+
value_from: str = None
|
|
23
25
|
|
|
24
26
|
pattern = re.compile(r"^[^/]+/[^/]+$")
|
|
25
27
|
|
|
@@ -35,7 +37,8 @@ class Input:
|
|
|
35
37
|
|
|
36
38
|
def run_input(self):
|
|
37
39
|
"""Create a RunInput from generic Input."""
|
|
38
|
-
bindings = {'prefix': self.prefix, 'position': self.position
|
|
40
|
+
bindings = {'prefix': self.prefix, 'position': self.position,
|
|
41
|
+
'value_from': self.value_from}
|
|
39
42
|
source = {}
|
|
40
43
|
if self.has_source():
|
|
41
44
|
source.update({"source": self.value})
|
|
@@ -120,6 +123,30 @@ class Script:
|
|
|
120
123
|
shell=self.shell)
|
|
121
124
|
|
|
122
125
|
|
|
126
|
+
@dataclass
|
|
127
|
+
class Checkpoint(CheckpointRequirement):
|
|
128
|
+
"""Get Checkpoint Requirements."""
|
|
129
|
+
|
|
130
|
+
def requirement(self):
|
|
131
|
+
"""Return a checkpoint requirement object."""
|
|
132
|
+
return CheckpointRequirement(file_path=self.file_path,
|
|
133
|
+
container_path=self.container_path,
|
|
134
|
+
file_regex=self.file_regex,
|
|
135
|
+
restart_parameters=self.restart_parameters,
|
|
136
|
+
add_parameters=self.add_parameters,
|
|
137
|
+
num_tries=self.num_tries,
|
|
138
|
+
enabled=self.enabled)
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
@dataclass
|
|
142
|
+
class TaskReq(TaskRequirement):
|
|
143
|
+
"""Get Task Requirements."""
|
|
144
|
+
|
|
145
|
+
def requirement(self):
|
|
146
|
+
"""Return a task requirement object."""
|
|
147
|
+
return TaskRequirement(workdir=self.workdir)
|
|
148
|
+
|
|
149
|
+
|
|
123
150
|
@dataclass
|
|
124
151
|
class Task:
|
|
125
152
|
"""Represents a task."""
|
|
@@ -10,6 +10,7 @@ import argparse
|
|
|
10
10
|
import json
|
|
11
11
|
import os
|
|
12
12
|
import traceback
|
|
13
|
+
from pathlib import Path
|
|
13
14
|
import yaml
|
|
14
15
|
import cwl_utils.parser.cwl_v1_2 as cwl_parser
|
|
15
16
|
from schema_salad.exceptions import ValidationException
|
|
@@ -22,7 +23,8 @@ from beeflow.common.wf_data import (Workflow,
|
|
|
22
23
|
StepOutput,
|
|
23
24
|
Hint,
|
|
24
25
|
Requirement,
|
|
25
|
-
generate_workflow_id
|
|
26
|
+
generate_workflow_id,
|
|
27
|
+
get_requirement)
|
|
26
28
|
|
|
27
29
|
# Map CWL types to Python types
|
|
28
30
|
type_map = {
|
|
@@ -57,7 +59,7 @@ class CwlParser:
|
|
|
57
59
|
self.steps = []
|
|
58
60
|
self.params = None
|
|
59
61
|
|
|
60
|
-
def parse_workflow(self, workflow_id, cwl_path, job=None):
|
|
62
|
+
def parse_workflow(self, workflow_id, cwl_path, job=None, workdir='.'):
|
|
61
63
|
"""Parse a CWL Workflow file and load it into the graph database.
|
|
62
64
|
|
|
63
65
|
Returns an instance of the WorkflowInterface.
|
|
@@ -117,11 +119,11 @@ class CwlParser:
|
|
|
117
119
|
|
|
118
120
|
workflow = Workflow(workflow_name, workflow_hints, workflow_requirements, workflow_inputs,
|
|
119
121
|
workflow_outputs, workflow_id)
|
|
120
|
-
tasks = [self.parse_step(step, workflow_id) for step in self.cwl.steps]
|
|
122
|
+
tasks = [self.parse_step(step, workflow_id, workdir) for step in self.cwl.steps]
|
|
121
123
|
|
|
122
124
|
return workflow, tasks
|
|
123
125
|
|
|
124
|
-
def parse_step(self, step, workflow_id):
|
|
126
|
+
def parse_step(self, step, workflow_id, workdir):
|
|
125
127
|
"""Parse a CWL step object.
|
|
126
128
|
|
|
127
129
|
Calling this to parse a CommandLineTool file without a corresponding
|
|
@@ -153,17 +155,34 @@ class CwlParser:
|
|
|
153
155
|
step_name = os.path.basename(step_id).split(".")[0]
|
|
154
156
|
step_command = step_cwl.baseCommand
|
|
155
157
|
step_inputs = self.parse_step_inputs(step.in_, step_cwl.inputs)
|
|
156
|
-
step_outputs = self.parse_step_outputs(step.out, step_cwl.outputs, step_cwl.stdout,
|
|
157
|
-
step_cwl.stderr)
|
|
158
158
|
step_requirements = self.parse_requirements(step.requirements)
|
|
159
159
|
step_requirements.extend(self.parse_requirements(step_cwl.requirements))
|
|
160
160
|
step_hints = self.parse_requirements(step.hints, as_hints=True)
|
|
161
161
|
step_hints.extend(self.parse_requirements(step_cwl.hints, as_hints=True))
|
|
162
|
+
step_workdir = resolve_step_workdir(
|
|
163
|
+
get_requirement(
|
|
164
|
+
step_requirements,
|
|
165
|
+
step_hints,
|
|
166
|
+
"beeflow:TaskRequirement",
|
|
167
|
+
"workdir",
|
|
168
|
+
default=''
|
|
169
|
+
),
|
|
170
|
+
workdir,
|
|
171
|
+
)
|
|
172
|
+
|
|
173
|
+
# When using container do not add the path to the output
|
|
174
|
+
# This can be changed when we fix binding for containers
|
|
175
|
+
if any(hint.class_ == 'DockerRequirement' for hint in step_hints):
|
|
176
|
+
step_outputs = self.parse_step_outputs(step.out, step_cwl.outputs, step_cwl.stdout,
|
|
177
|
+
step_cwl.stderr)
|
|
178
|
+
else:
|
|
179
|
+
step_outputs = self.parse_step_outputs(step.out, step_cwl.outputs, step_cwl.stdout,
|
|
180
|
+
step_cwl.stderr, workdir=step_workdir)
|
|
162
181
|
step_stdout = step_cwl.stdout
|
|
163
182
|
step_stderr = step_cwl.stderr
|
|
164
183
|
|
|
165
184
|
return Task(step_name, step_command, step_hints, step_requirements, step_inputs,
|
|
166
|
-
step_outputs, step_stdout, step_stderr, workflow_id)
|
|
185
|
+
step_outputs, step_stdout, step_stderr, workflow_id, workdir=step_workdir)
|
|
167
186
|
|
|
168
187
|
def parse_job(self, job):
|
|
169
188
|
"""Parse a CWL input job file.
|
|
@@ -229,11 +248,10 @@ class CwlParser:
|
|
|
229
248
|
inputs.append(StepInput(_shortname(step_input.id), input_type, None,
|
|
230
249
|
step_input.default, source_map[_shortname(step_input.id)],
|
|
231
250
|
None, None))
|
|
232
|
-
|
|
233
251
|
return inputs
|
|
234
252
|
|
|
235
253
|
@staticmethod
|
|
236
|
-
def parse_step_outputs(cwl_out, step_outputs, stdout, stderr):
|
|
254
|
+
def parse_step_outputs(cwl_out, step_outputs, stdout, stderr, workdir=None):
|
|
237
255
|
"""Parse step outputs from CWL step output objects.
|
|
238
256
|
|
|
239
257
|
:param cwl_out: the step outputs from the Workflow file
|
|
@@ -280,8 +298,10 @@ class CwlParser:
|
|
|
280
298
|
if out_map[out].outputBinding:
|
|
281
299
|
glob = out_map[out].outputBinding.glob
|
|
282
300
|
|
|
283
|
-
|
|
301
|
+
if workdir is not None:
|
|
302
|
+
glob = os.path.abspath(os.path.join(workdir, glob))
|
|
284
303
|
|
|
304
|
+
outputs.append(StepOutput(out, output_type, None, glob))
|
|
285
305
|
return outputs
|
|
286
306
|
|
|
287
307
|
def _read_requirement_file(self, key, items):
|
|
@@ -339,7 +359,7 @@ class CwlParser:
|
|
|
339
359
|
for req in requirements:
|
|
340
360
|
items = {}
|
|
341
361
|
for k, v in req.items():
|
|
342
|
-
if k != 'class':
|
|
362
|
+
if k != 'class' and v is not None:
|
|
343
363
|
if isinstance(v, (int, float)):
|
|
344
364
|
items[k] = v
|
|
345
365
|
else:
|
|
@@ -403,6 +423,18 @@ def parse_args(args=None):
|
|
|
403
423
|
return parser.parse_args(args)
|
|
404
424
|
|
|
405
425
|
|
|
426
|
+
def resolve_step_workdir(step_workdir, workdir):
|
|
427
|
+
"""Resolve step workdir relative to workflow workdir."""
|
|
428
|
+
if not step_workdir or step_workdir.strip() == '':
|
|
429
|
+
return workdir
|
|
430
|
+
# should be redundant
|
|
431
|
+
workdir = Path(workdir).expanduser().resolve()
|
|
432
|
+
desired = Path(step_workdir).expanduser()
|
|
433
|
+
if desired.is_absolute():
|
|
434
|
+
return str(desired.resolve())
|
|
435
|
+
return str((workdir / desired).resolve())
|
|
436
|
+
|
|
437
|
+
|
|
406
438
|
def main():
|
|
407
439
|
"""Run the parser on a CWL Workflow and job file directly."""
|
|
408
440
|
wf_id = generate_workflow_id()
|
|
@@ -96,6 +96,45 @@ class Workflow:
|
|
|
96
96
|
f"requirements = {self.requirements} inputs={self.inputs} outputs={self.outputs}>")
|
|
97
97
|
|
|
98
98
|
|
|
99
|
+
def get_requirement(requirements, hints, req_type, req_param, default=None):
|
|
100
|
+
"""Get requirement from hints or requirements, prioritizing requirements over hints.
|
|
101
|
+
|
|
102
|
+
:param requirements: list of requirements
|
|
103
|
+
:type requirements: list
|
|
104
|
+
:param hints: list of hints
|
|
105
|
+
:type hints: list
|
|
106
|
+
:param req_type: the type of requirement (e.g. 'DockerRequirement')
|
|
107
|
+
:type req_type: str
|
|
108
|
+
:param req_param: the requirement parameter (e.g. 'dockerFile')
|
|
109
|
+
:type req_param: str
|
|
110
|
+
:param default: default value if the requirement is not found
|
|
111
|
+
:type default: any
|
|
112
|
+
|
|
113
|
+
When requirements are specified hints will be ignored.
|
|
114
|
+
By default, tasks need not specify hints or requirements
|
|
115
|
+
"""
|
|
116
|
+
requirements = dict(requirements)
|
|
117
|
+
requirement = default
|
|
118
|
+
# Get value if specified in requirements
|
|
119
|
+
try:
|
|
120
|
+
# Try to get Requirement
|
|
121
|
+
requirement = requirements[req_type][req_param]
|
|
122
|
+
except (KeyError, TypeError):
|
|
123
|
+
# Task Requirements are not mandatory. No docker_req_param specified in task reqs.
|
|
124
|
+
requirement = None
|
|
125
|
+
# Ignore hints if requirements available
|
|
126
|
+
if not requirement:
|
|
127
|
+
hints = dict(hints)
|
|
128
|
+
# Get value if specified in hints
|
|
129
|
+
try:
|
|
130
|
+
# Try to get Hints
|
|
131
|
+
requirement = hints[req_type][req_param]
|
|
132
|
+
except (KeyError, TypeError):
|
|
133
|
+
# Task Hints are not mandatory. No docker_req_param specified in task hints.
|
|
134
|
+
requirement = default
|
|
135
|
+
return requirement
|
|
136
|
+
|
|
137
|
+
|
|
99
138
|
class Task:
|
|
100
139
|
"""Data structure for holding data about a single task."""
|
|
101
140
|
|
|
@@ -180,26 +219,7 @@ class Task:
|
|
|
180
219
|
When requirements are specified hints will be ignored.
|
|
181
220
|
By default, tasks need not specify hints or requirements
|
|
182
221
|
"""
|
|
183
|
-
|
|
184
|
-
requirement = default
|
|
185
|
-
# Get value if specified in requirements
|
|
186
|
-
try:
|
|
187
|
-
# Try to get Requirement
|
|
188
|
-
requirement = requirements[req_type][req_param]
|
|
189
|
-
except (KeyError, TypeError):
|
|
190
|
-
# Task Requirements are not mandatory. No docker_req_param specified in task reqs.
|
|
191
|
-
requirement = None
|
|
192
|
-
# Ignore hints if requirements available
|
|
193
|
-
if not requirement:
|
|
194
|
-
hints = dict(self.hints)
|
|
195
|
-
# Get value if specified in hints
|
|
196
|
-
try:
|
|
197
|
-
# Try to get Hints
|
|
198
|
-
requirement = hints[req_type][req_param]
|
|
199
|
-
except (KeyError, TypeError):
|
|
200
|
-
# Task Hints are not mandatory. No docker_req_param specified in task hints.
|
|
201
|
-
requirement = default
|
|
202
|
-
return requirement
|
|
222
|
+
return get_requirement(self.requirements, self.hints, req_type, req_param, default)
|
|
203
223
|
|
|
204
224
|
def get_full_requirement(self, req_type):
|
|
205
225
|
"""Get the full requirement (or hint) for this task, if it has one.
|
|
@@ -330,6 +350,8 @@ class Task:
|
|
|
330
350
|
os.getenv('HOME'): os.path.join('/home', os.getenv('USER')),
|
|
331
351
|
}
|
|
332
352
|
command.append(convert_path(checkpoint_file, bind_mounts))
|
|
353
|
+
if "add_parameters" in hint.params:
|
|
354
|
+
command.append(hint.params["add_parameters"])
|
|
333
355
|
break
|
|
334
356
|
|
|
335
357
|
return command
|
|
@@ -121,12 +121,12 @@ class WorkflowInterface:
|
|
|
121
121
|
# Pattern match on task name
|
|
122
122
|
# Append (1) if not in name already
|
|
123
123
|
# Increment number on each restart
|
|
124
|
-
match = re.
|
|
124
|
+
match = re.search(r"-(\d+)$", new_task.name)
|
|
125
125
|
if not match:
|
|
126
|
-
new_task.name += "
|
|
126
|
+
new_task.name += "-1"
|
|
127
127
|
else:
|
|
128
128
|
i = int(match.group(1))
|
|
129
|
-
new_task.name = re.sub(r"\
|
|
129
|
+
new_task.name = re.sub(r"-(\d+)$", f"-{i + 1}", new_task.name)
|
|
130
130
|
metadata = self.get_task_metadata(task)
|
|
131
131
|
self._gdb_driver.restart_task(task, new_task)
|
|
132
132
|
self.set_task_metadata(new_task, metadata)
|
|
@@ -54,28 +54,37 @@ class Worker(ABC):
|
|
|
54
54
|
self.workdir = bee_workdir
|
|
55
55
|
|
|
56
56
|
def resolve_stdout_stderr(self, task):
|
|
57
|
-
"""
|
|
57
|
+
"""Resolves the path to the stderr and stdout in the task workdir."""
|
|
58
|
+
task_dir = f"{task.workdir}/{task.name}-{task.id[:4]}"
|
|
59
|
+
os.makedirs(task_dir,exist_ok=True)
|
|
58
60
|
if task.stdout:
|
|
59
61
|
stdout_path = f"{task.workdir}/{task.stdout}"
|
|
60
62
|
else:
|
|
61
63
|
# If user provide no stdout or stderr name use this as a fallback
|
|
62
|
-
stdout_path = f"{task.workdir}/{task.name}-{task.id[:4]}.out"
|
|
64
|
+
stdout_path = f"{task.workdir}/{task.name}-{task.id[:4]}/{task.name}-{task.id[:4]}.out"
|
|
63
65
|
if task.stderr:
|
|
64
66
|
stderr_path = f"{task.workdir}/{task.stderr}"
|
|
65
67
|
else:
|
|
66
|
-
stderr_path = f"{task.workdir}/{task.name}-{task.id[:4]}.err"
|
|
68
|
+
stderr_path = f"{task.workdir}/{task.name}-{task.id[:4]}/{task.name}-{task.id[:4]}.err"
|
|
67
69
|
return stdout_path, stderr_path
|
|
68
70
|
|
|
69
71
|
|
|
70
72
|
def task_save_path(self, task):
|
|
71
73
|
"""Return the task save path used for storing submission scripts output logs."""
|
|
72
|
-
return f'{self.workdir}/workflows/{task.workflow_id}/{task.name}-{task.id}'
|
|
74
|
+
return f'{self.workdir}/workflows/{task.workflow_id}/{task.name}-{task.id[:4]}'
|
|
73
75
|
|
|
74
76
|
def write_script(self, task):
|
|
75
77
|
"""Build task script; returns filename of script."""
|
|
76
78
|
task_text = self.build_text(task)
|
|
77
|
-
|
|
78
|
-
|
|
79
|
+
task_archive_dir = self.task_save_path(task)
|
|
80
|
+
os.makedirs(task_archive_dir,exist_ok=True)
|
|
81
|
+
task_script_archive = f"{self.task_save_path(task)}"\
|
|
82
|
+
f"/{task.name}-{task.id[:4]}.sh"
|
|
83
|
+
task_script_dir = f"{task.workdir}/{task.name}-{task.id[:4]}"
|
|
84
|
+
os.makedirs(task_script_dir,exist_ok=True)
|
|
85
|
+
task_script_workdir = f"{task.workdir}/{task.name}-{task.id[:4]}"\
|
|
86
|
+
f"/{task.name}-{task.id[:4]}.sh"
|
|
87
|
+
|
|
79
88
|
with open(task_script_workdir, 'w', encoding="UTF-8") as workdir_script, \
|
|
80
89
|
open(task_script_archive, 'w', encoding="UTF-8") as archive_script:
|
|
81
90
|
workdir_script.write(task_text)
|
|
@@ -85,6 +94,7 @@ class Worker(ABC):
|
|
|
85
94
|
def prepare(self, task):
|
|
86
95
|
"""Prepare for the task; create the task save directory, etc."""
|
|
87
96
|
task_save_path = self.task_save_path(task)
|
|
97
|
+
os.makedirs(task.workdir, exist_ok=True)
|
|
88
98
|
os.makedirs(task_save_path, exist_ok=True)
|
|
89
99
|
|
|
90
100
|
@abstractmethod
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
cwlVersion: v1.0
|
|
2
|
+
class: Workflow
|
|
3
|
+
|
|
4
|
+
inputs:
|
|
5
|
+
input_file: File
|
|
6
|
+
word0: string
|
|
7
|
+
word1: string
|
|
8
|
+
tarball_fname: string
|
|
9
|
+
|
|
10
|
+
outputs:
|
|
11
|
+
cat_stderr:
|
|
12
|
+
type: File
|
|
13
|
+
outputSource: cat/cat_stderr
|
|
14
|
+
tarball:
|
|
15
|
+
type: File
|
|
16
|
+
outputSource: tar/tarball
|
|
17
|
+
|
|
18
|
+
steps:
|
|
19
|
+
cat:
|
|
20
|
+
run:
|
|
21
|
+
class: CommandLineTool
|
|
22
|
+
baseCommand: cat
|
|
23
|
+
stdout: cat.txt
|
|
24
|
+
stderr: cat.err
|
|
25
|
+
inputs:
|
|
26
|
+
input_file:
|
|
27
|
+
type: File
|
|
28
|
+
inputBinding:
|
|
29
|
+
position: 1
|
|
30
|
+
outputs:
|
|
31
|
+
contents:
|
|
32
|
+
type: stdout
|
|
33
|
+
cat_stderr:
|
|
34
|
+
type: stderr
|
|
35
|
+
in:
|
|
36
|
+
input_file: input_file
|
|
37
|
+
out: [contents, cat_stderr]
|
|
38
|
+
grep0:
|
|
39
|
+
run:
|
|
40
|
+
class: CommandLineTool
|
|
41
|
+
baseCommand: grep
|
|
42
|
+
stdout: occur0.txt
|
|
43
|
+
inputs:
|
|
44
|
+
word0:
|
|
45
|
+
type: string
|
|
46
|
+
inputBinding:
|
|
47
|
+
position: 1
|
|
48
|
+
text_file:
|
|
49
|
+
type: File
|
|
50
|
+
inputBinding:
|
|
51
|
+
position: 2
|
|
52
|
+
outputs:
|
|
53
|
+
occur:
|
|
54
|
+
type: stdout
|
|
55
|
+
in:
|
|
56
|
+
word0: word0
|
|
57
|
+
text_file: cat/contents
|
|
58
|
+
out: [occur]
|
|
59
|
+
grep1:
|
|
60
|
+
run:
|
|
61
|
+
class: CommandLineTool
|
|
62
|
+
baseCommand: grep
|
|
63
|
+
stdout: occur1.txt
|
|
64
|
+
inputs:
|
|
65
|
+
word1:
|
|
66
|
+
type: string
|
|
67
|
+
inputBinding:
|
|
68
|
+
position: 1
|
|
69
|
+
text_file:
|
|
70
|
+
type: File
|
|
71
|
+
inputBinding:
|
|
72
|
+
position: 2
|
|
73
|
+
outputs:
|
|
74
|
+
occur:
|
|
75
|
+
type: stdout
|
|
76
|
+
in:
|
|
77
|
+
word1: word1
|
|
78
|
+
text_file: cat/contents
|
|
79
|
+
out: [occur]
|
|
80
|
+
tar:
|
|
81
|
+
run:
|
|
82
|
+
class: CommandLineTool
|
|
83
|
+
baseCommand: tar
|
|
84
|
+
stdout: occur1.txt
|
|
85
|
+
inputs:
|
|
86
|
+
tarball_fname:
|
|
87
|
+
type: string
|
|
88
|
+
inputBinding:
|
|
89
|
+
position: 1
|
|
90
|
+
prefix: -cf
|
|
91
|
+
file0:
|
|
92
|
+
type: File
|
|
93
|
+
inputBinding:
|
|
94
|
+
position: 2
|
|
95
|
+
file1:
|
|
96
|
+
type: File
|
|
97
|
+
inputBinding:
|
|
98
|
+
position: 3
|
|
99
|
+
outputs:
|
|
100
|
+
tarball:
|
|
101
|
+
type: File
|
|
102
|
+
outputBinding:
|
|
103
|
+
glob: $(inputs.tarball_fname)
|
|
104
|
+
in:
|
|
105
|
+
tarball_fname: tarball_fname
|
|
106
|
+
file0: grep0/occur
|
|
107
|
+
file1: grep1/occur
|
|
108
|
+
out: [tarball]
|
|
109
|
+
|