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.
Files changed (347) hide show
  1. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/PKG-INFO +4 -2
  2. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/README.rst +2 -0
  3. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/client/bee_client.py +14 -20
  4. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/cwl/cwl.py +32 -7
  5. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/cwl/examples/comd.py +1 -1
  6. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/cwl/workflow.py +30 -3
  7. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/parser/parser.py +43 -11
  8. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/wf_data.py +42 -20
  9. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/wf_interface.py +3 -3
  10. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/worker/worker.py +16 -6
  11. hpc_beeflow-0.1.11.dev2/beeflow/tests/cwl_files/cat-grep-tar.cwl +109 -0
  12. hpc_beeflow-0.1.11.dev2/beeflow/tests/cwl_files/cat-grep-tar.yml +5 -0
  13. hpc_beeflow-0.1.11.dev2/beeflow/tests/cwl_files/clamr.cwl +95 -0
  14. hpc_beeflow-0.1.11.dev2/beeflow/tests/cwl_files/clamr.yml +8 -0
  15. hpc_beeflow-0.1.11.dev2/beeflow/tests/cwl_files/comd.cwl +79 -0
  16. hpc_beeflow-0.1.11.dev2/beeflow/tests/cwl_files/comd.yml +8 -0
  17. hpc_beeflow-0.1.11.dev2/beeflow/tests/cwl_files/task-req.cwl +57 -0
  18. hpc_beeflow-0.1.11.dev2/beeflow/tests/cwl_files/task-req.yml +3 -0
  19. hpc_beeflow-0.1.11.dev2/beeflow/tests/test_bee_client.py +971 -0
  20. hpc_beeflow-0.1.11.dev2/beeflow/tests/test_cwl.py +418 -0
  21. hpc_beeflow-0.1.11.dev2/beeflow/tests/test_cwl_workflow.py +245 -0
  22. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/tests/test_parser.py +95 -11
  23. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/tests/test_wf_interface.py +2 -2
  24. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/wf_manager/resources/wf_utils.py +12 -10
  25. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/pyproject.toml +3 -3
  26. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/LICENSE +0 -0
  27. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/__init__.py +0 -0
  28. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/client/README.md +0 -0
  29. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/client/__init__.py +0 -0
  30. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/client/core.py +0 -0
  31. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/client/remote_client.py +0 -0
  32. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/cloud_launcher.py +0 -0
  33. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/README.md +0 -0
  34. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/__init__.py +0 -0
  35. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/api.py +0 -0
  36. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/build/README.md +0 -0
  37. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/build/__init__.py +0 -0
  38. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/build/build_driver.py +0 -0
  39. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/build/container_drivers.py +0 -0
  40. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/build/utils.py +0 -0
  41. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/build_interfaces.py +0 -0
  42. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/cli.py +0 -0
  43. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/cli_connection.py +0 -0
  44. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/cloud/README.md +0 -0
  45. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/cloud/__init__.py +0 -0
  46. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/cloud/chameleoncloud.py +0 -0
  47. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/cloud/cloud.py +0 -0
  48. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/cloud/constants.py +0 -0
  49. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/cloud/google.py +0 -0
  50. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/cloud/openstack.py +0 -0
  51. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/cloud/provider.py +0 -0
  52. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/config_driver.py +0 -0
  53. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/config_utils.py +0 -0
  54. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/config_validator.py +0 -0
  55. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/connection.py +0 -0
  56. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/container_path.py +0 -0
  57. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/crt/__init__.py +0 -0
  58. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/crt/charliecloud_driver.py +0 -0
  59. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/crt/crt_driver.py +0 -0
  60. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/crt/singularity_driver.py +0 -0
  61. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/crt_interface.py +0 -0
  62. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/cwl/__init__.py +0 -0
  63. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/cwl/examples/Dockerfile.comd-x86_64 +0 -0
  64. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/cwl/examples/README.txt +0 -0
  65. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/cwl/examples/cat_grep_tar.py +0 -0
  66. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/cwl/examples/comd_driver.py +0 -0
  67. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/cwl/examples/comd_pre.sh +0 -0
  68. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/cwl/examples/lorem.txt +0 -0
  69. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/db/__init__.py +0 -0
  70. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/db/bdb.py +0 -0
  71. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/db/client_db.py +0 -0
  72. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/db/sched_db.py +0 -0
  73. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/db/tm_db.py +0 -0
  74. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/db/wfm_db.py +0 -0
  75. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/deps/__init__.py +0 -0
  76. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/deps/celery_manager.py +0 -0
  77. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/deps/container_manager.py +0 -0
  78. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/deps/neo4j_manager.py +0 -0
  79. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/deps/redis_manager.py +0 -0
  80. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/expr.py +0 -0
  81. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/gdb/DESIGN.md +0 -0
  82. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/gdb/__init__.py +0 -0
  83. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/gdb/gdb_driver.py +0 -0
  84. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/gdb/generate_graph.py +0 -0
  85. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/gdb/graphml_key_updater.py +0 -0
  86. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/gdb/neo4j_cypher.py +0 -0
  87. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/gdb/neo4j_driver.py +0 -0
  88. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/integration/__init__.py +0 -0
  89. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/integration/generated_workflows.py +0 -0
  90. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/integration/utils.py +0 -0
  91. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/integration_test.py +0 -0
  92. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/log.py +0 -0
  93. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/parser/.gitignore +0 -0
  94. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/parser/README.md +0 -0
  95. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/parser/__init__.py +0 -0
  96. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/paths.py +0 -0
  97. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/states.py +0 -0
  98. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/tab_completion.py +0 -0
  99. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/validation.py +0 -0
  100. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/wf_profiler.py +0 -0
  101. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/worker/README.md +0 -0
  102. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/worker/__init__.py +0 -0
  103. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/worker/flux_worker.py +0 -0
  104. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/worker/lsf_worker.py +0 -0
  105. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/worker/simple_worker.py +0 -0
  106. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/worker/slurm_worker.py +0 -0
  107. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/worker/utils.py +0 -0
  108. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/common/worker_interface.py +0 -0
  109. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cloud_templates/dora.jinja +0 -0
  110. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cloud_templates/dora.yaml +0 -0
  111. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/README.md +0 -0
  112. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/README.md +0 -0
  113. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/blast/README.md +0 -0
  114. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/blast/blast.yml +0 -0
  115. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/blast/blast_output.cwl +0 -0
  116. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/blast/blast_output_err.cwl +0 -0
  117. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/blast/blast_split.cwl +0 -0
  118. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/blast/blast_wf.cwl +0 -0
  119. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/blast/blast_worker001.cwl +0 -0
  120. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/blast/blast_worker002.cwl +0 -0
  121. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/blast/input/small.fasta +0 -0
  122. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/cat-grep-fail/README.md +0 -0
  123. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/cat-grep-fail/cat.cwl +0 -0
  124. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/cat-grep-fail/grep0.cwl +0 -0
  125. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/cat-grep-fail/grep1.cwl +0 -0
  126. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/cat-grep-fail/input.yml +0 -0
  127. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/cat-grep-fail/lorem.txt +0 -0
  128. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/cat-grep-fail/tar.cwl +0 -0
  129. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/cat-grep-fail/workflow.cwl +0 -0
  130. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/cgt-2branches/README.txt +0 -0
  131. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/cgt-2branches/cat.cwl +0 -0
  132. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/cgt-2branches/cat2.cwl +0 -0
  133. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/cgt-2branches/grep0.cwl +0 -0
  134. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/cgt-2branches/grep1.cwl +0 -0
  135. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/cgt-2branches/grep2.cwl +0 -0
  136. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/cgt-2branches/grep3.cwl +0 -0
  137. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/cgt-2branches/input.yml +0 -0
  138. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/cgt-2branches/lorem.txt +0 -0
  139. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/cgt-2branches/tar.cwl +0 -0
  140. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/cgt-2branches/tar2.cwl +0 -0
  141. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/cgt-2branches/workflow.cwl +0 -0
  142. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-ci/README.md +0 -0
  143. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-ci/clamr.cwl +0 -0
  144. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-ci/clamr_job.json +0 -0
  145. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-ci/clamr_job.yml +0 -0
  146. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-ci/clamr_wf.cwl +0 -0
  147. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-ci/ffmpeg.cwl +0 -0
  148. {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
  149. {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
  150. {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
  151. {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
  152. {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
  153. {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
  154. {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
  155. {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
  156. {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
  157. {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
  158. {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
  159. {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
  160. {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
  161. {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
  162. {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
  163. {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
  164. {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
  165. {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
  166. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-wf/README.md +0 -0
  167. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-wf/clamr.cwl +0 -0
  168. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-wf/clamr_job.json +0 -0
  169. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-wf/clamr_job.yml +0 -0
  170. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-wf/clamr_wf.cwl +0 -0
  171. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-wf/ffmpeg.cwl +0 -0
  172. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-wf-chicoma/README.md +0 -0
  173. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-wf-chicoma/clamr.cwl +0 -0
  174. {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
  175. {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
  176. {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
  177. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-wf-chicoma/ffmpeg.cwl +0 -0
  178. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-wf-noyaml/README.md +0 -0
  179. {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
  180. {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
  181. {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
  182. {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
  183. {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
  184. {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
  185. {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
  186. {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
  187. {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
  188. {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
  189. {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
  190. {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
  191. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-wf-singularity/README.md +0 -0
  192. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-wf-singularity/clamr.cwl +0 -0
  193. {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
  194. {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
  195. {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
  196. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-wf-singularity/ffmpeg.cwl +0 -0
  197. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-wf-summit/README.md +0 -0
  198. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-wf-summit/clamr.cwl +0 -0
  199. {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
  200. {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
  201. {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
  202. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/clamr-wf-summit/ffmpeg.cwl +0 -0
  203. {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
  204. {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
  205. {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
  206. {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
  207. {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
  208. {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
  209. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/lulesh-mpi/lulesh.cwl +0 -0
  210. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/lulesh-mpi/lulesh.yml +0 -0
  211. {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
  212. {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
  213. {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
  214. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/nwchem-mpi/README.md +0 -0
  215. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/nwchem-mpi/nwchem.cwl +0 -0
  216. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/nwchem-mpi/nwchem.yml +0 -0
  217. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/nwchem-mpi/nwchem_bin.cwl +0 -0
  218. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/pennant/graph.cwl +0 -0
  219. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/pennant/pennant.yml +0 -0
  220. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/pennant/pennant_1_node.cwl +0 -0
  221. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/pennant/pennant_2_node.cwl +0 -0
  222. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/pennant/pennant_4_node.cwl +0 -0
  223. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/pennant/pennant_wf.cwl +0 -0
  224. {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
  225. {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
  226. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/pennant-build/graph.cwl +0 -0
  227. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/pennant-build/graph_pennant.py +0 -0
  228. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/pennant-build/graph_pennant.sh +0 -0
  229. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/pennant-build/pennant.yml +0 -0
  230. {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
  231. {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
  232. {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
  233. {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
  234. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/pennant-build/pennant_wf.cwl +0 -0
  235. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/pytest.ini +0 -0
  236. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/simple-workflows/README.md +0 -0
  237. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/bee_workflows/simple-workflows/cancel.cwl +0 -0
  238. {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
  239. {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
  240. {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
  241. {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
  242. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/cwl_validation/README.md +0 -0
  243. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/cwl_validation/builder/dockerFile.cwl +0 -0
  244. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/cwl_validation/builder/dockerPull.cwl +0 -0
  245. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/cwl_validation/grep-wordcount/gc.cwl +0 -0
  246. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/cwl_validation/grep-wordcount/lorem.txt +0 -0
  247. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/cwl_validation/helloworld.cwl +0 -0
  248. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/cwl/cwl_validation/helloworld_input.yaml +0 -0
  249. {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
  250. {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
  251. {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
  252. {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
  253. {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
  254. {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
  255. {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
  256. {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
  257. {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
  258. {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
  259. {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
  260. {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
  261. {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
  262. {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
  263. {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
  264. {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
  265. {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
  266. {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
  267. {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
  268. {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
  269. {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
  270. {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
  271. {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
  272. {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
  273. {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
  274. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/dockerfiles/Dockerfile.builder_demo +0 -0
  275. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/dockerfiles/Dockerfile.clamr-ffmpeg +0 -0
  276. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/dockerfiles/Dockerfile.clamr-lanl-x86_64 +0 -0
  277. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/dockerfiles/Dockerfile.clamr-ppc64le +0 -0
  278. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/dockerfiles/Dockerfile.comd-flux-x86_64 +0 -0
  279. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/dockerfiles/Dockerfile.deb9ompi-x86_64 +0 -0
  280. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/dockerfiles/Dockerfile.lulesh-x86_64 +0 -0
  281. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/dockerfiles/Dockerfile.neo4j +0 -0
  282. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/dockerfiles/Dockerfile.nwchem-x86_64 +0 -0
  283. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/dockerfiles/Dockerfile.pennant-flux-x86_64 +0 -0
  284. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/dockerfiles/Dockerfile.vaspompi-x86_64 +0 -0
  285. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/dockerfiles/README.md +0 -0
  286. {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
  287. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/dockerfiles/comd-pmix-support/Dockerfile.debian +0 -0
  288. {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
  289. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/dockerfiles/comd-pmix-support/README.md +0 -0
  290. {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
  291. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/dockerfiles/pennant-graph/Dockerfile.pennant-graph-x86_64 +0 -0
  292. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/dockerfiles/pennant-graph/graph_pennant.py +0 -0
  293. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/data/dockerfiles/pennant-graph/graph_pennant.sh +0 -0
  294. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/remote/__init__.py +0 -0
  295. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/remote/remote.py +0 -0
  296. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/scheduler/README.md +0 -0
  297. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/scheduler/__init__.py +0 -0
  298. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/scheduler/algorithms.py +0 -0
  299. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/scheduler/resource_allocation.py +0 -0
  300. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/scheduler/scheduler.py +0 -0
  301. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/scheduler/scheduler.yaml +0 -0
  302. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/scheduler/serializable.py +0 -0
  303. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/scheduler/task.py +0 -0
  304. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/task_manager/__init__.py +0 -0
  305. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/task_manager/background.py +0 -0
  306. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/task_manager/task_actions.py +0 -0
  307. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/task_manager/task_manager.py +0 -0
  308. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/task_manager/task_submit.py +0 -0
  309. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/task_manager/utils.py +0 -0
  310. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/tests/42.tgz +0 -0
  311. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/tests/README.md +0 -0
  312. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/tests/cf.cwl +0 -0
  313. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/tests/clamr-wf/clamr.cwl +0 -0
  314. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/tests/clamr-wf/clamr_job.json +0 -0
  315. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/tests/clamr-wf/clamr_job.yml +0 -0
  316. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/tests/clamr-wf/clamr_wf.cwl +0 -0
  317. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/tests/clamr-wf/ffmpeg.cwl +0 -0
  318. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/tests/clamr-wf/mv_script.cwl +0 -0
  319. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/tests/clamr-wf/mv_script.sh +0 -0
  320. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/tests/clamr-wf.tgz +0 -0
  321. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/tests/gdb.py +0 -0
  322. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/tests/mocks.py +0 -0
  323. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/tests/test_charliecloud_driver.py +0 -0
  324. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/tests/test_cloud.py +0 -0
  325. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/tests/test_config_driver.py +0 -0
  326. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/tests/test_config_utils.py +0 -0
  327. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/tests/test_config_validator.py +0 -0
  328. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/tests/test_container_path.py +0 -0
  329. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/tests/test_db_client.py +0 -0
  330. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/tests/test_db_sched.py +0 -0
  331. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/tests/test_db_tm.py +0 -0
  332. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/tests/test_neo4j_cypher.py +0 -0
  333. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/tests/test_remote.py +0 -0
  334. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/tests/test_remote_client.py +0 -0
  335. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/tests/test_scheduler.py +0 -0
  336. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/tests/test_scheduler_resource_allocation.py +0 -0
  337. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/tests/test_scheduler_rest.py +0 -0
  338. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/tests/test_slurm_worker.py +0 -0
  339. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/tests/test_tm.py +0 -0
  340. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/tests/test_wf_manager.py +0 -0
  341. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/tests/test_wf_update.py +0 -0
  342. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/wf_manager/__init__.py +0 -0
  343. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/wf_manager/resources/__init__.py +0 -0
  344. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/wf_manager/resources/wf_actions.py +0 -0
  345. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/wf_manager/resources/wf_list.py +0 -0
  346. {hpc_beeflow-0.1.11.dev0 → hpc_beeflow-0.1.11.dev2}/beeflow/wf_manager/resources/wf_update.py +0 -0
  347. {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.dev0
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 (==3.2.7)
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
- else:
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:force=Type'] = self.force_type
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: int = None
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]['num_tries'] = self.enabled
410
- return req_name
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
- stream = StringIO()
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
- outputs.append(StepOutput(out, output_type, None, glob))
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
- requirements = dict(self.requirements)
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.match(r".+\(([0-9]+)\)$", new_task.name)
124
+ match = re.search(r"-(\d+)$", new_task.name)
125
125
  if not match:
126
- new_task.name += "(1)"
126
+ new_task.name += "-1"
127
127
  else:
128
128
  i = int(match.group(1))
129
- new_task.name = re.sub(r"\([0-9]+\)", f"({i + 1})", new_task.name)
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
- """Reolves the path to the stderr and stdout in the task workdir."""
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
- task_script_archive = f"{self.task_save_path(task)}/{task.name}-{task.id}.sh"
78
- task_script_workdir = f"{task.workdir}/{task.name}-{task.id[:4]}.sh"
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
+