hpcflow-new2 0.2.0a227__tar.gz → 0.2.0a229__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 (225) hide show
  1. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/PKG-INFO +1 -1
  2. hpcflow_new2-0.2.0a229/hpcflow/_version.py +1 -0
  3. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/cli.py +7 -3
  4. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/core/actions.py +1 -0
  5. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/core/commands.py +2 -0
  6. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/core/workflow.py +19 -10
  7. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/demo/cli.py +8 -3
  8. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/tests/unit/test_cli.py +25 -0
  9. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/pyproject.toml +2 -2
  10. hpcflow_new2-0.2.0a227/hpcflow/_version.py +0 -1
  11. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/LICENSE +0 -0
  12. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/README.md +0 -0
  13. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/__init__.py +0 -0
  14. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/__pyinstaller/__init__.py +0 -0
  15. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/__pyinstaller/hook-hpcflow.py +0 -0
  16. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/app.py +0 -0
  17. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/cli.py +0 -0
  18. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/data/demo_data_manifest/__init__.py +0 -0
  19. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/data/demo_data_manifest/demo_data_manifest.json +0 -0
  20. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/data/scripts/__init__.py +0 -0
  21. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/data/scripts/bad_script.py +0 -0
  22. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/data/scripts/demo_task_1_generate_t1_infile_1.py +0 -0
  23. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/data/scripts/demo_task_1_generate_t1_infile_2.py +0 -0
  24. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/data/scripts/demo_task_1_parse_p3.py +0 -0
  25. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/data/scripts/do_nothing.py +0 -0
  26. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/data/scripts/env_specifier_test/input_file_generator_pass_env_spec.py +0 -0
  27. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/data/scripts/env_specifier_test/main_script_test_pass_env_spec.py +0 -0
  28. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/data/scripts/env_specifier_test/output_file_parser_pass_env_spec.py +0 -0
  29. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/data/scripts/env_specifier_test/v1/input_file_generator_basic.py +0 -0
  30. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/data/scripts/env_specifier_test/v1/main_script_test_direct_in_direct_out.py +0 -0
  31. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/data/scripts/env_specifier_test/v1/output_file_parser_basic.py +0 -0
  32. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/data/scripts/env_specifier_test/v2/main_script_test_direct_in_direct_out.py +0 -0
  33. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/data/scripts/generate_t1_file_01.py +0 -0
  34. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/data/scripts/import_future_script.py +0 -0
  35. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/data/scripts/input_file_generator_basic.py +0 -0
  36. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/data/scripts/input_file_generator_basic_FAIL.py +0 -0
  37. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/data/scripts/input_file_generator_test_stdout_stderr.py +0 -0
  38. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/data/scripts/main_script_test_direct_in.py +0 -0
  39. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/data/scripts/main_script_test_direct_in_direct_out.py +0 -0
  40. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/data/scripts/main_script_test_direct_in_direct_out_2.py +0 -0
  41. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/data/scripts/main_script_test_direct_in_direct_out_2_fail_allowed.py +0 -0
  42. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/data/scripts/main_script_test_direct_in_direct_out_2_fail_allowed_group.py +0 -0
  43. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/data/scripts/main_script_test_direct_in_direct_out_3.py +0 -0
  44. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/data/scripts/main_script_test_direct_in_direct_out_all_iters_test.py +0 -0
  45. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/data/scripts/main_script_test_direct_in_direct_out_env_spec.py +0 -0
  46. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/data/scripts/main_script_test_direct_in_direct_out_labels.py +0 -0
  47. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/data/scripts/main_script_test_direct_in_group_direct_out_3.py +0 -0
  48. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/data/scripts/main_script_test_direct_in_group_one_fail_direct_out_3.py +0 -0
  49. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/data/scripts/main_script_test_direct_sub_param_in_direct_out.py +0 -0
  50. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/data/scripts/main_script_test_hdf5_in_obj.py +0 -0
  51. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/data/scripts/main_script_test_hdf5_in_obj_2.py +0 -0
  52. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/data/scripts/main_script_test_hdf5_in_obj_group.py +0 -0
  53. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/data/scripts/main_script_test_hdf5_out_obj.py +0 -0
  54. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/data/scripts/main_script_test_json_and_direct_in_json_out.py +0 -0
  55. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/data/scripts/main_script_test_json_in_json_and_direct_out.py +0 -0
  56. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/data/scripts/main_script_test_json_in_json_out.py +0 -0
  57. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/data/scripts/main_script_test_json_in_json_out_labels.py +0 -0
  58. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/data/scripts/main_script_test_json_in_obj.py +0 -0
  59. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/data/scripts/main_script_test_json_out_FAIL.py +0 -0
  60. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/data/scripts/main_script_test_json_out_obj.py +0 -0
  61. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/data/scripts/main_script_test_json_sub_param_in_json_out_labels.py +0 -0
  62. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/data/scripts/main_script_test_shell_env_vars.py +0 -0
  63. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/data/scripts/main_script_test_std_out_std_err.py +0 -0
  64. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/data/scripts/output_file_parser_basic.py +0 -0
  65. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/data/scripts/output_file_parser_basic_FAIL.py +0 -0
  66. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/data/scripts/output_file_parser_test_stdout_stderr.py +0 -0
  67. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/data/scripts/parse_t1_file_01.py +0 -0
  68. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/data/scripts/script_exit_test.py +0 -0
  69. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/data/template_components/__init__.py +0 -0
  70. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/data/template_components/command_files.yaml +0 -0
  71. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/data/template_components/environments.yaml +0 -0
  72. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/data/template_components/parameters.yaml +0 -0
  73. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/data/template_components/task_schemas.yaml +0 -0
  74. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/data/workflows/__init__.py +0 -0
  75. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/data/workflows/workflow_1.yaml +0 -0
  76. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/examples.ipynb +0 -0
  77. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/__init__.py +0 -0
  78. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/app.py +0 -0
  79. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/cli_common.py +0 -0
  80. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/config/__init__.py +0 -0
  81. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/config/callbacks.py +0 -0
  82. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/config/cli.py +0 -0
  83. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/config/config.py +0 -0
  84. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/config/config_file.py +0 -0
  85. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/config/errors.py +0 -0
  86. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/config/types.py +0 -0
  87. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/core/__init__.py +0 -0
  88. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/core/app_aware.py +0 -0
  89. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/core/cache.py +0 -0
  90. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/core/command_files.py +0 -0
  91. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/core/element.py +0 -0
  92. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/core/enums.py +0 -0
  93. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/core/environment.py +0 -0
  94. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/core/errors.py +0 -0
  95. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/core/execute.py +0 -0
  96. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/core/json_like.py +0 -0
  97. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/core/loop.py +0 -0
  98. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/core/loop_cache.py +0 -0
  99. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/core/object_list.py +0 -0
  100. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/core/parameters.py +0 -0
  101. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/core/rule.py +0 -0
  102. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/core/run_dir_files.py +0 -0
  103. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/core/skip_reason.py +0 -0
  104. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/core/task.py +0 -0
  105. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/core/task_schema.py +0 -0
  106. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/core/test_utils.py +0 -0
  107. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/core/types.py +0 -0
  108. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/core/utils.py +0 -0
  109. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/core/validation.py +0 -0
  110. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/core/zarr_io.py +0 -0
  111. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/data/__init__.py +0 -0
  112. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/data/config_file_schema.yaml +0 -0
  113. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/data/config_schema.yaml +0 -0
  114. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/data/environments_spec_schema.yaml +0 -0
  115. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/data/files_spec_schema.yaml +0 -0
  116. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/data/parameters_spec_schema.yaml +0 -0
  117. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/data/task_schema_spec_schema.yaml +0 -0
  118. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/data/workflow_spec_schema.yaml +0 -0
  119. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/demo/__init__.py +0 -0
  120. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/helper/__init__.py +0 -0
  121. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/helper/cli.py +0 -0
  122. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/helper/helper.py +0 -0
  123. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/helper/watcher.py +0 -0
  124. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/log.py +0 -0
  125. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/persistence/__init__.py +0 -0
  126. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/persistence/base.py +0 -0
  127. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/persistence/defaults.py +0 -0
  128. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/persistence/discovery.py +0 -0
  129. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/persistence/json.py +0 -0
  130. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/persistence/pending.py +0 -0
  131. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/persistence/store_resource.py +0 -0
  132. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/persistence/types.py +0 -0
  133. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/persistence/utils.py +0 -0
  134. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/persistence/zarr.py +0 -0
  135. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/runtime.py +0 -0
  136. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/submission/__init__.py +0 -0
  137. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/submission/enums.py +0 -0
  138. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/submission/jobscript.py +0 -0
  139. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/submission/schedulers/__init__.py +0 -0
  140. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/submission/schedulers/direct.py +0 -0
  141. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/submission/schedulers/sge.py +0 -0
  142. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/submission/schedulers/slurm.py +0 -0
  143. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/submission/schedulers/utils.py +0 -0
  144. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/submission/shells/__init__.py +0 -0
  145. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/submission/shells/base.py +0 -0
  146. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/submission/shells/bash.py +0 -0
  147. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/submission/shells/os_version.py +0 -0
  148. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/submission/shells/powershell.py +0 -0
  149. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/submission/submission.py +0 -0
  150. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/submission/types.py +0 -0
  151. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/typing.py +0 -0
  152. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/utils/arrays.py +0 -0
  153. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/utils/deferred_file.py +0 -0
  154. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/utils/hashing.py +0 -0
  155. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/utils/patches.py +0 -0
  156. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/sdk/utils/strings.py +0 -0
  157. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/tests/api/test_api.py +0 -0
  158. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/tests/conftest.py +0 -0
  159. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/tests/data/__init__.py +0 -0
  160. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/tests/data/benchmark_N_elements.yaml +0 -0
  161. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/tests/data/benchmark_script_runner.yaml +0 -0
  162. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/tests/data/multi_path_sequences.yaml +0 -0
  163. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/tests/data/workflow_1.json +0 -0
  164. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/tests/data/workflow_1.yaml +0 -0
  165. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/tests/data/workflow_1_slurm.yaml +0 -0
  166. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/tests/data/workflow_1_wsl.yaml +0 -0
  167. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/tests/data/workflow_test_run_abort.yaml +0 -0
  168. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/tests/schedulers/direct_linux/test_direct_linux_submission.py +0 -0
  169. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/tests/schedulers/sge/test_sge_submission.py +0 -0
  170. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/tests/schedulers/slurm/test_slurm_submission.py +0 -0
  171. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/tests/scripts/test_input_file_generators.py +0 -0
  172. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/tests/scripts/test_main_scripts.py +0 -0
  173. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/tests/scripts/test_non_snippet_script.py +0 -0
  174. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/tests/scripts/test_ouput_file_parsers.py +0 -0
  175. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/tests/shells/wsl/test_wsl_submission.py +0 -0
  176. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/tests/unit/test_action.py +0 -0
  177. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/tests/unit/test_action_rule.py +0 -0
  178. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/tests/unit/test_app.py +0 -0
  179. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/tests/unit/test_cache.py +0 -0
  180. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/tests/unit/test_command.py +0 -0
  181. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/tests/unit/test_config.py +0 -0
  182. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/tests/unit/test_config_file.py +0 -0
  183. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/tests/unit/test_element.py +0 -0
  184. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/tests/unit/test_element_iteration.py +0 -0
  185. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/tests/unit/test_element_set.py +0 -0
  186. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/tests/unit/test_group.py +0 -0
  187. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/tests/unit/test_input_source.py +0 -0
  188. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/tests/unit/test_input_value.py +0 -0
  189. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/tests/unit/test_jobscript_unit.py +0 -0
  190. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/tests/unit/test_json_like.py +0 -0
  191. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/tests/unit/test_loop.py +0 -0
  192. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/tests/unit/test_meta_task.py +0 -0
  193. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/tests/unit/test_multi_path_sequences.py +0 -0
  194. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/tests/unit/test_object_list.py +0 -0
  195. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/tests/unit/test_parameter.py +0 -0
  196. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/tests/unit/test_persistence.py +0 -0
  197. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/tests/unit/test_resources.py +0 -0
  198. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/tests/unit/test_run.py +0 -0
  199. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/tests/unit/test_run_directories.py +0 -0
  200. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/tests/unit/test_runtime.py +0 -0
  201. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/tests/unit/test_schema_input.py +0 -0
  202. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/tests/unit/test_shell.py +0 -0
  203. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/tests/unit/test_slurm.py +0 -0
  204. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/tests/unit/test_submission.py +0 -0
  205. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/tests/unit/test_task.py +0 -0
  206. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/tests/unit/test_task_schema.py +0 -0
  207. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/tests/unit/test_utils.py +0 -0
  208. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/tests/unit/test_value_sequence.py +0 -0
  209. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/tests/unit/test_workflow.py +0 -0
  210. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/tests/unit/test_workflow_template.py +0 -0
  211. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/tests/unit/utils/test_arrays.py +0 -0
  212. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/tests/unit/utils/test_deferred_file_writer.py +0 -0
  213. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/tests/unit/utils/test_hashing.py +0 -0
  214. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/tests/unit/utils/test_patches.py +0 -0
  215. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/tests/unit/utils/test_redirect_std.py +0 -0
  216. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/tests/unit/utils/test_strings.py +0 -0
  217. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/tests/workflows/__init__.py +0 -0
  218. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/tests/workflows/test_directory_structure.py +0 -0
  219. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/tests/workflows/test_jobscript.py +0 -0
  220. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/tests/workflows/test_run_status.py +0 -0
  221. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/tests/workflows/test_skip_downstream.py +0 -0
  222. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/tests/workflows/test_submission.py +0 -0
  223. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/tests/workflows/test_workflows.py +0 -0
  224. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/tests/workflows/test_zip.py +0 -0
  225. {hpcflow_new2-0.2.0a227 → hpcflow_new2-0.2.0a229}/hpcflow/viz_demo.ipynb +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: hpcflow-new2
3
- Version: 0.2.0a227
3
+ Version: 0.2.0a229
4
4
  Summary: Computational workflow management
5
5
  License: MPL-2.0
6
6
  Author: aplowman
@@ -0,0 +1 @@
1
+ __version__ = "0.2.0a229"
@@ -190,7 +190,7 @@ def _make_API_CLI(app: BaseApp):
190
190
  format, or a YAML/JSON string.
191
191
 
192
192
  """
193
- wk = app.make_workflow(
193
+ wk_or_sub = app.make_workflow(
194
194
  template_file_or_str=template_file_or_str,
195
195
  is_string=string,
196
196
  template_format=format,
@@ -204,8 +204,12 @@ def _make_API_CLI(app: BaseApp):
204
204
  status=status,
205
205
  add_submission=add_submission,
206
206
  )
207
- assert isinstance(wk, Workflow)
208
- click.echo(wk.path)
207
+ if add_submission:
208
+ assert isinstance(wk_or_sub, Submission)
209
+ click.echo(wk_or_sub.workflow.path)
210
+ else:
211
+ assert isinstance(wk_or_sub, Workflow)
212
+ click.echo(wk_or_sub.path)
209
213
 
210
214
  @click.command(name="go")
211
215
  @click.argument("template_file_or_str")
@@ -3017,6 +3017,7 @@ class Action(JSONLike):
3017
3017
  if all(rule.test(element_iteration=element_iter) for rule in cmd.rules)
3018
3018
  ]
3019
3019
 
3020
+ @TimeIt.decorator
3020
3021
  def get_required_executables(self) -> Iterator[str]:
3021
3022
  """Return executable labels required by this action."""
3022
3023
  for command in self.commands:
@@ -11,6 +11,7 @@ from typing import Any, ClassVar, TYPE_CHECKING
11
11
 
12
12
  import numpy as np
13
13
 
14
+ from hpcflow.sdk.log import TimeIt
14
15
  from hpcflow.sdk.typing import hydrate
15
16
  from hpcflow.sdk.core.element import ElementResources
16
17
  from hpcflow.sdk.core.errors import NoCLIFormatMethodError
@@ -416,6 +417,7 @@ class Command(JSONLike):
416
417
  def _extract_executable_labels(cls, cmd_str: str) -> Sequence[str]:
417
418
  return cls.__EXE_RE.findall(cmd_str)
418
419
 
420
+ @TimeIt.decorator
419
421
  def get_required_executables(self) -> Sequence[str]:
420
422
  """Return executable labels required by this command."""
421
423
  # an executable label might appear in the `command` or `executable` attribute:
@@ -1786,6 +1786,20 @@ class Workflow(AppAware):
1786
1786
  elem: int
1787
1787
  task: int
1788
1788
 
1789
+ @TimeIt.decorator
1790
+ def __get_elements_by_task_idx(
1791
+ self, element_idx_by_task: dict[int, set[int]]
1792
+ ) -> dict[int, dict[int, Element]]:
1793
+ return {
1794
+ task_idx: {
1795
+ idx: element
1796
+ for idx, element in zip(
1797
+ elem_indices, self.tasks[task_idx].elements[list(elem_indices)]
1798
+ )
1799
+ }
1800
+ for task_idx, elem_indices in element_idx_by_task.items()
1801
+ }
1802
+
1789
1803
  @TimeIt.decorator
1790
1804
  def get_elements_from_IDs(self, id_lst: Iterable[int]) -> list[Element]:
1791
1805
  """Return element objects from a list of IDs."""
@@ -1800,10 +1814,7 @@ class Workflow(AppAware):
1800
1814
  index_paths.append(Workflow._IndexPath1(elem_idx, task.index))
1801
1815
  element_idx_by_task[task.index].add(elem_idx)
1802
1816
 
1803
- elements_by_task = {
1804
- task_idx: {idx: self.tasks[task_idx].elements[idx] for idx in elem_idxes}
1805
- for task_idx, elem_idxes in element_idx_by_task.items()
1806
- }
1817
+ elements_by_task = self.__get_elements_by_task_idx(element_idx_by_task)
1807
1818
 
1808
1819
  return [elements_by_task[path.task][path.elem] for path in index_paths]
1809
1820
 
@@ -1832,10 +1843,7 @@ class Workflow(AppAware):
1832
1843
  index_paths.append(Workflow._IndexPath2(iter_idx, elem_idx, task.index))
1833
1844
  element_idx_by_task[task.index].add(elem_idx)
1834
1845
 
1835
- elements_by_task = {
1836
- task_idx: {idx: self.tasks[task_idx].elements[idx] for idx in elem_idx}
1837
- for task_idx, elem_idx in element_idx_by_task.items()
1838
- }
1846
+ elements_by_task = self.__get_elements_by_task_idx(element_idx_by_task)
1839
1847
 
1840
1848
  return [
1841
1849
  elements_by_task[path.task][path.elem].iterations[path.iter]
@@ -3627,7 +3635,8 @@ class Workflow(AppAware):
3627
3635
  if status:
3628
3636
  status.update("Adding new submission: resolving jobscripts...")
3629
3637
 
3630
- cache = ObjectCache.build(self, elements=True, iterations=True, runs=True)
3638
+ with self._store.cache_ctx():
3639
+ cache = ObjectCache.build(self, elements=True, iterations=True, runs=True)
3631
3640
 
3632
3641
  sub_obj: Submission = self._app.Submission(
3633
3642
  index=new_idx,
@@ -3719,7 +3728,7 @@ class Workflow(AppAware):
3719
3728
 
3720
3729
  """
3721
3730
  with self._app.config.cached_config():
3722
- with self.cached_merged_parameters():
3731
+ with self.cached_merged_parameters(), self._store.cache_ctx():
3723
3732
  js, element_deps = self._resolve_singular_jobscripts(
3724
3733
  cache, tasks, force_array
3725
3734
  )
@@ -29,6 +29,7 @@ from hpcflow.sdk.cli_common import (
29
29
  make_status_opt,
30
30
  add_sub_opt,
31
31
  )
32
+ from hpcflow.sdk.submission.submission import Submission
32
33
 
33
34
  if TYPE_CHECKING:
34
35
  from collections.abc import Iterable
@@ -133,7 +134,7 @@ def get_demo_workflow_CLI(app: BaseApp):
133
134
  status: bool = True,
134
135
  add_submission: bool = False,
135
136
  ):
136
- wk = app.make_demo_workflow(
137
+ wk_or_sub = app.make_demo_workflow(
137
138
  workflow_name=workflow_name,
138
139
  template_format=format,
139
140
  path=path,
@@ -146,8 +147,12 @@ def get_demo_workflow_CLI(app: BaseApp):
146
147
  status=status,
147
148
  add_submission=add_submission,
148
149
  )
149
- assert isinstance(wk, Workflow)
150
- click.echo(wk.path)
150
+ if add_submission:
151
+ assert isinstance(wk_or_sub, Submission)
152
+ click.echo(wk_or_sub.workflow.path)
153
+ else:
154
+ assert isinstance(wk_or_sub, Workflow)
155
+ click.echo(wk_or_sub.path)
151
156
 
152
157
  @demo_workflow.command("go")
153
158
  @click.argument("workflow_name")
@@ -1,3 +1,4 @@
1
+ from pathlib import Path
1
2
  import pytest
2
3
 
3
4
  from click.testing import CliRunner
@@ -143,3 +144,27 @@ def test_cli_click_exit_code_non_zero(tmp_path):
143
144
  )
144
145
  assert result.exit_code == 2
145
146
  assert error_file.is_file()
147
+
148
+
149
+ def test_cli_make_demo_workflow(new_null_config, tmp_path):
150
+ """Check the demo workflow directory is generated."""
151
+ runner = CliRunner()
152
+ result = runner.invoke(
153
+ hf.cli, args=f'demo-workflow make workflow_1 --path "{str(tmp_path)}"'
154
+ )
155
+ assert result.exit_code == 0
156
+ assert Path(result.stdout_bytes.decode().strip()).is_dir()
157
+
158
+
159
+ def test_cli_make_demo_workflow_add_sub(new_null_config, tmp_path):
160
+ """Check the demo workflow directory is generated, and a submission is added."""
161
+ runner = CliRunner()
162
+ result = runner.invoke(
163
+ hf.cli,
164
+ args=f'demo-workflow make workflow_1 --path "{str(tmp_path)}" --add-submission',
165
+ )
166
+ assert result.exit_code == 0
167
+ wk_path = Path(result.stdout_bytes.decode().strip())
168
+ assert wk_path.is_dir()
169
+ wk = hf.Workflow(wk_path)
170
+ assert len(wk.submissions) == 1
@@ -1,7 +1,7 @@
1
1
 
2
2
  [tool.poetry]
3
3
  name = "hpcflow-new2"
4
- version = "0.2.0a227"
4
+ version = "0.2.0a229"
5
5
 
6
6
  description = "Computational workflow management"
7
7
  authors = ["aplowman <adam.plowman@manchester.ac.uk>"]
@@ -100,7 +100,7 @@ hook-dirs = "hpcflow.__pyinstaller:get_hook_dirs"
100
100
 
101
101
  [tool.commitizen]
102
102
  name = "cz_conventional_commits"
103
- version = "0.2.0a227"
103
+ version = "0.2.0a229"
104
104
  tag_format = "v$version"
105
105
  version_files = [
106
106
  "pyproject.toml:version",
@@ -1 +0,0 @@
1
- __version__ = "0.2.0a227"