hpcflow-new2 0.2.0a190__tar.gz → 0.2.0a199__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 (235) hide show
  1. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/PKG-INFO +7 -4
  2. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/__pyinstaller/hook-hpcflow.py +1 -0
  3. hpcflow_new2-0.2.0a199/hpcflow/_version.py +1 -0
  4. hpcflow_new2-0.2.0a199/hpcflow/data/scripts/bad_script.py +2 -0
  5. hpcflow_new2-0.2.0a199/hpcflow/data/scripts/do_nothing.py +2 -0
  6. hpcflow_new2-0.2.0a199/hpcflow/data/scripts/env_specifier_test/input_file_generator_pass_env_spec.py +4 -0
  7. hpcflow_new2-0.2.0a199/hpcflow/data/scripts/env_specifier_test/main_script_test_pass_env_spec.py +8 -0
  8. hpcflow_new2-0.2.0a199/hpcflow/data/scripts/env_specifier_test/output_file_parser_pass_env_spec.py +4 -0
  9. hpcflow_new2-0.2.0a199/hpcflow/data/scripts/env_specifier_test/v1/input_file_generator_basic.py +4 -0
  10. hpcflow_new2-0.2.0a199/hpcflow/data/scripts/env_specifier_test/v1/main_script_test_direct_in_direct_out.py +7 -0
  11. hpcflow_new2-0.2.0a199/hpcflow/data/scripts/env_specifier_test/v1/output_file_parser_basic.py +4 -0
  12. hpcflow_new2-0.2.0a199/hpcflow/data/scripts/env_specifier_test/v2/main_script_test_direct_in_direct_out.py +7 -0
  13. hpcflow_new2-0.2.0a199/hpcflow/data/scripts/input_file_generator_basic.py +3 -0
  14. hpcflow_new2-0.2.0a199/hpcflow/data/scripts/input_file_generator_basic_FAIL.py +3 -0
  15. hpcflow_new2-0.2.0a199/hpcflow/data/scripts/input_file_generator_test_stdout_stderr.py +8 -0
  16. hpcflow_new2-0.2.0a199/hpcflow/data/scripts/main_script_test_direct_in.py +3 -0
  17. hpcflow_new2-0.2.0a199/hpcflow/data/scripts/main_script_test_direct_in_direct_out_2.py +6 -0
  18. hpcflow_new2-0.2.0a199/hpcflow/data/scripts/main_script_test_direct_in_direct_out_2_fail_allowed.py +6 -0
  19. hpcflow_new2-0.2.0a199/hpcflow/data/scripts/main_script_test_direct_in_direct_out_2_fail_allowed_group.py +7 -0
  20. hpcflow_new2-0.2.0a199/hpcflow/data/scripts/main_script_test_direct_in_direct_out_3.py +6 -0
  21. hpcflow_new2-0.2.0a199/hpcflow/data/scripts/main_script_test_direct_in_group_direct_out_3.py +6 -0
  22. hpcflow_new2-0.2.0a199/hpcflow/data/scripts/main_script_test_direct_in_group_one_fail_direct_out_3.py +6 -0
  23. hpcflow_new2-0.2.0a199/hpcflow/data/scripts/main_script_test_hdf5_in_obj_2.py +12 -0
  24. hpcflow_new2-0.2.0a199/hpcflow/data/scripts/main_script_test_json_out_FAIL.py +3 -0
  25. hpcflow_new2-0.2.0a199/hpcflow/data/scripts/main_script_test_shell_env_vars.py +12 -0
  26. hpcflow_new2-0.2.0a199/hpcflow/data/scripts/main_script_test_std_out_std_err.py +6 -0
  27. hpcflow_new2-0.2.0a199/hpcflow/data/scripts/output_file_parser_basic.py +3 -0
  28. hpcflow_new2-0.2.0a199/hpcflow/data/scripts/output_file_parser_basic_FAIL.py +7 -0
  29. hpcflow_new2-0.2.0a199/hpcflow/data/scripts/output_file_parser_test_stdout_stderr.py +8 -0
  30. hpcflow_new2-0.2.0a199/hpcflow/data/scripts/script_exit_test.py +5 -0
  31. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/data/template_components/environments.yaml +1 -1
  32. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/sdk/__init__.py +5 -0
  33. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/sdk/app.py +150 -89
  34. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/sdk/cli.py +263 -84
  35. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/sdk/cli_common.py +99 -5
  36. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/sdk/config/callbacks.py +38 -1
  37. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/sdk/config/config.py +102 -13
  38. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/sdk/config/errors.py +19 -5
  39. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/sdk/config/types.py +3 -0
  40. hpcflow_new2-0.2.0a199/hpcflow/sdk/core/__init__.py +38 -0
  41. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/sdk/core/actions.py +914 -262
  42. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/sdk/core/cache.py +76 -34
  43. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/sdk/core/command_files.py +14 -128
  44. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/sdk/core/commands.py +35 -6
  45. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/sdk/core/element.py +122 -50
  46. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/sdk/core/errors.py +58 -2
  47. hpcflow_new2-0.2.0a199/hpcflow/sdk/core/execute.py +207 -0
  48. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/sdk/core/loop.py +408 -50
  49. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/sdk/core/loop_cache.py +4 -4
  50. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/sdk/core/parameters.py +382 -37
  51. hpcflow_new2-0.2.0a199/hpcflow/sdk/core/run_dir_files.py +57 -0
  52. hpcflow_new2-0.2.0a199/hpcflow/sdk/core/skip_reason.py +7 -0
  53. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/sdk/core/task.py +119 -30
  54. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/sdk/core/task_schema.py +68 -0
  55. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/sdk/core/test_utils.py +66 -27
  56. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/sdk/core/types.py +54 -1
  57. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/sdk/core/utils.py +78 -7
  58. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/sdk/core/workflow.py +1538 -336
  59. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/sdk/data/workflow_spec_schema.yaml +2 -0
  60. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/sdk/demo/cli.py +7 -0
  61. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/sdk/helper/cli.py +1 -0
  62. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/sdk/log.py +42 -15
  63. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/sdk/persistence/base.py +405 -53
  64. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/sdk/persistence/json.py +177 -52
  65. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/sdk/persistence/pending.py +237 -69
  66. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/sdk/persistence/store_resource.py +3 -2
  67. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/sdk/persistence/types.py +15 -4
  68. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/sdk/persistence/zarr.py +928 -81
  69. hpcflow_new2-0.2.0a199/hpcflow/sdk/submission/jobscript.py +2366 -0
  70. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/sdk/submission/schedulers/__init__.py +40 -5
  71. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/sdk/submission/schedulers/direct.py +33 -19
  72. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/sdk/submission/schedulers/sge.py +51 -16
  73. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/sdk/submission/schedulers/slurm.py +44 -16
  74. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/sdk/submission/schedulers/utils.py +7 -2
  75. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/sdk/submission/shells/base.py +68 -20
  76. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/sdk/submission/shells/bash.py +222 -129
  77. hpcflow_new2-0.2.0a199/hpcflow/sdk/submission/shells/powershell.py +348 -0
  78. hpcflow_new2-0.2.0a199/hpcflow/sdk/submission/submission.py +1349 -0
  79. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/sdk/submission/types.py +18 -21
  80. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/sdk/typing.py +24 -5
  81. hpcflow_new2-0.2.0a199/hpcflow/sdk/utils/arrays.py +71 -0
  82. hpcflow_new2-0.2.0a199/hpcflow/sdk/utils/deferred_file.py +55 -0
  83. hpcflow_new2-0.2.0a199/hpcflow/sdk/utils/hashing.py +16 -0
  84. hpcflow_new2-0.2.0a199/hpcflow/sdk/utils/patches.py +12 -0
  85. hpcflow_new2-0.2.0a199/hpcflow/sdk/utils/strings.py +33 -0
  86. hpcflow_new2-0.2.0a199/hpcflow/tests/api/test_api.py +32 -0
  87. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/tests/conftest.py +19 -0
  88. hpcflow_new2-0.2.0a199/hpcflow/tests/data/multi_path_sequences.yaml +29 -0
  89. hpcflow_new2-0.2.0a199/hpcflow/tests/data/workflow_test_run_abort.yaml +42 -0
  90. hpcflow_new2-0.2.0a199/hpcflow/tests/schedulers/sge/test_sge_submission.py +36 -0
  91. hpcflow_new2-0.2.0a199/hpcflow/tests/scripts/test_input_file_generators.py +282 -0
  92. hpcflow_new2-0.2.0a199/hpcflow/tests/scripts/test_main_scripts.py +1290 -0
  93. hpcflow_new2-0.2.0a199/hpcflow/tests/scripts/test_non_snippet_script.py +46 -0
  94. hpcflow_new2-0.2.0a199/hpcflow/tests/scripts/test_ouput_file_parsers.py +353 -0
  95. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/tests/shells/wsl/test_wsl_submission.py +6 -0
  96. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/tests/unit/test_action.py +176 -0
  97. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/tests/unit/test_app.py +20 -0
  98. hpcflow_new2-0.2.0a199/hpcflow/tests/unit/test_cache.py +46 -0
  99. hpcflow_new2-0.2.0a199/hpcflow/tests/unit/test_cli.py +145 -0
  100. hpcflow_new2-0.2.0a199/hpcflow/tests/unit/test_config.py +195 -0
  101. hpcflow_new2-0.2.0a199/hpcflow/tests/unit/test_element_iteration.py +88 -0
  102. hpcflow_new2-0.2.0a199/hpcflow/tests/unit/test_jobscript_unit.py +757 -0
  103. hpcflow_new2-0.2.0a199/hpcflow/tests/unit/test_loop.py +2600 -0
  104. hpcflow_new2-0.2.0a199/hpcflow/tests/unit/test_meta_task.py +325 -0
  105. hpcflow_new2-0.2.0a199/hpcflow/tests/unit/test_multi_path_sequences.py +229 -0
  106. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/tests/unit/test_parameter.py +13 -0
  107. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/tests/unit/test_persistence.py +190 -8
  108. hpcflow_new2-0.2.0a199/hpcflow/tests/unit/test_run.py +186 -0
  109. hpcflow_new2-0.2.0a199/hpcflow/tests/unit/test_run_directories.py +29 -0
  110. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/tests/unit/test_shell.py +20 -0
  111. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/tests/unit/test_submission.py +5 -76
  112. hpcflow_new2-0.2.0a199/hpcflow/tests/unit/utils/test_arrays.py +40 -0
  113. hpcflow_new2-0.2.0a199/hpcflow/tests/unit/utils/test_deferred_file_writer.py +34 -0
  114. hpcflow_new2-0.2.0a199/hpcflow/tests/unit/utils/test_hashing.py +65 -0
  115. hpcflow_new2-0.2.0a199/hpcflow/tests/unit/utils/test_patches.py +5 -0
  116. hpcflow_new2-0.2.0a199/hpcflow/tests/unit/utils/test_redirect_std.py +50 -0
  117. hpcflow_new2-0.2.0a199/hpcflow/tests/workflows/__init__.py +0 -0
  118. hpcflow_new2-0.2.0a199/hpcflow/tests/workflows/test_directory_structure.py +31 -0
  119. hpcflow_new2-0.2.0a199/hpcflow/tests/workflows/test_jobscript.py +355 -0
  120. hpcflow_new2-0.2.0a199/hpcflow/tests/workflows/test_run_status.py +198 -0
  121. hpcflow_new2-0.2.0a199/hpcflow/tests/workflows/test_skip_downstream.py +696 -0
  122. hpcflow_new2-0.2.0a199/hpcflow/tests/workflows/test_submission.py +140 -0
  123. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/tests/workflows/test_workflows.py +142 -2
  124. hpcflow_new2-0.2.0a199/hpcflow/tests/workflows/test_zip.py +18 -0
  125. hpcflow_new2-0.2.0a199/hpcflow/viz_demo.ipynb +6794 -0
  126. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/pyproject.toml +12 -6
  127. hpcflow_new2-0.2.0a190/hpcflow/_version.py +0 -1
  128. hpcflow_new2-0.2.0a190/hpcflow/sdk/core/__init__.py +0 -14
  129. hpcflow_new2-0.2.0a190/hpcflow/sdk/core/run_dir_files.py +0 -84
  130. hpcflow_new2-0.2.0a190/hpcflow/sdk/submission/jobscript.py +0 -1447
  131. hpcflow_new2-0.2.0a190/hpcflow/sdk/submission/shells/powershell.py +0 -298
  132. hpcflow_new2-0.2.0a190/hpcflow/sdk/submission/submission.py +0 -616
  133. hpcflow_new2-0.2.0a190/hpcflow/tests/data/workflow_test_run_abort.yaml +0 -43
  134. hpcflow_new2-0.2.0a190/hpcflow/tests/scripts/test_main_scripts.py +0 -539
  135. hpcflow_new2-0.2.0a190/hpcflow/tests/unit/test_cli.py +0 -12
  136. hpcflow_new2-0.2.0a190/hpcflow/tests/unit/test_config.py +0 -74
  137. hpcflow_new2-0.2.0a190/hpcflow/tests/unit/test_element_iteration.py +0 -41
  138. hpcflow_new2-0.2.0a190/hpcflow/tests/unit/test_loop.py +0 -1295
  139. hpcflow_new2-0.2.0a190/hpcflow/tests/unit/test_run.py +0 -80
  140. hpcflow_new2-0.2.0a190/hpcflow/tests/workflows/test_jobscript.py +0 -23
  141. hpcflow_new2-0.2.0a190/hpcflow/viz_demo.ipynb +0 -210
  142. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/LICENSE +0 -0
  143. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/README.md +0 -0
  144. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/__init__.py +0 -0
  145. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/__pyinstaller/__init__.py +0 -0
  146. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/app.py +0 -0
  147. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/cli.py +0 -0
  148. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/data/demo_data_manifest/__init__.py +0 -0
  149. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/data/demo_data_manifest/demo_data_manifest.json +0 -0
  150. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/data/scripts/__init__.py +0 -0
  151. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/data/scripts/demo_task_1_generate_t1_infile_1.py +0 -0
  152. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/data/scripts/demo_task_1_generate_t1_infile_2.py +0 -0
  153. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/data/scripts/demo_task_1_parse_p3.py +0 -0
  154. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/data/scripts/generate_t1_file_01.py +0 -0
  155. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/data/scripts/main_script_test_direct_in_direct_out.py +0 -0
  156. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/data/scripts/main_script_test_direct_in_direct_out_all_iters_test.py +0 -0
  157. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/data/scripts/main_script_test_direct_in_direct_out_env_spec.py +0 -0
  158. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/data/scripts/main_script_test_direct_in_direct_out_labels.py +0 -0
  159. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/data/scripts/main_script_test_direct_sub_param_in_direct_out.py +0 -0
  160. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/data/scripts/main_script_test_hdf5_in_obj.py +0 -0
  161. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/data/scripts/main_script_test_hdf5_out_obj.py +0 -0
  162. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/data/scripts/main_script_test_json_and_direct_in_json_out.py +0 -0
  163. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/data/scripts/main_script_test_json_in_json_and_direct_out.py +0 -0
  164. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/data/scripts/main_script_test_json_in_json_out.py +0 -0
  165. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/data/scripts/main_script_test_json_in_json_out_labels.py +0 -0
  166. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/data/scripts/main_script_test_json_in_obj.py +0 -0
  167. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/data/scripts/main_script_test_json_out_obj.py +0 -0
  168. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/data/scripts/main_script_test_json_sub_param_in_json_out_labels.py +0 -0
  169. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/data/scripts/parse_t1_file_01.py +0 -0
  170. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/data/template_components/__init__.py +0 -0
  171. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/data/template_components/command_files.yaml +0 -0
  172. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/data/template_components/parameters.yaml +0 -0
  173. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/data/template_components/task_schemas.yaml +0 -0
  174. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/data/workflows/__init__.py +0 -0
  175. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/data/workflows/workflow_1.yaml +0 -0
  176. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/examples.ipynb +0 -0
  177. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/sdk/config/__init__.py +0 -0
  178. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/sdk/config/cli.py +0 -0
  179. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/sdk/config/config_file.py +0 -0
  180. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/sdk/core/app_aware.py +0 -0
  181. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/sdk/core/enums.py +0 -0
  182. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/sdk/core/environment.py +0 -0
  183. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/sdk/core/json_like.py +0 -0
  184. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/sdk/core/object_list.py +0 -0
  185. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/sdk/core/rule.py +0 -0
  186. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/sdk/core/validation.py +0 -0
  187. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/sdk/core/zarr_io.py +0 -0
  188. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/sdk/data/__init__.py +0 -0
  189. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/sdk/data/config_file_schema.yaml +0 -0
  190. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/sdk/data/config_schema.yaml +0 -0
  191. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/sdk/data/environments_spec_schema.yaml +0 -0
  192. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/sdk/data/files_spec_schema.yaml +0 -0
  193. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/sdk/data/parameters_spec_schema.yaml +0 -0
  194. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/sdk/data/task_schema_spec_schema.yaml +0 -0
  195. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/sdk/demo/__init__.py +0 -0
  196. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/sdk/helper/__init__.py +0 -0
  197. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/sdk/helper/helper.py +0 -0
  198. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/sdk/helper/watcher.py +0 -0
  199. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/sdk/persistence/__init__.py +0 -0
  200. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/sdk/persistence/defaults.py +0 -0
  201. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/sdk/persistence/discovery.py +0 -0
  202. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/sdk/persistence/utils.py +0 -0
  203. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/sdk/runtime.py +0 -0
  204. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/sdk/submission/__init__.py +0 -0
  205. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/sdk/submission/enums.py +0 -0
  206. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/sdk/submission/shells/__init__.py +0 -0
  207. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/sdk/submission/shells/os_version.py +0 -0
  208. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/tests/data/__init__.py +0 -0
  209. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/tests/data/benchmark_N_elements.yaml +0 -0
  210. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/tests/data/workflow_1.json +0 -0
  211. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/tests/data/workflow_1.yaml +0 -0
  212. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/tests/data/workflow_1_slurm.yaml +0 -0
  213. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/tests/data/workflow_1_wsl.yaml +0 -0
  214. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/tests/schedulers/direct_linux/test_direct_linux_submission.py +0 -0
  215. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/tests/schedulers/slurm/test_slurm_submission.py +0 -0
  216. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/tests/unit/test_action_rule.py +0 -0
  217. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/tests/unit/test_command.py +0 -0
  218. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/tests/unit/test_config_file.py +0 -0
  219. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/tests/unit/test_element.py +0 -0
  220. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/tests/unit/test_element_set.py +0 -0
  221. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/tests/unit/test_group.py +0 -0
  222. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/tests/unit/test_input_source.py +0 -0
  223. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/tests/unit/test_input_value.py +0 -0
  224. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/tests/unit/test_json_like.py +0 -0
  225. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/tests/unit/test_object_list.py +0 -0
  226. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/tests/unit/test_resources.py +0 -0
  227. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/tests/unit/test_runtime.py +0 -0
  228. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/tests/unit/test_schema_input.py +0 -0
  229. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/tests/unit/test_slurm.py +0 -0
  230. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/tests/unit/test_task.py +0 -0
  231. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/tests/unit/test_task_schema.py +0 -0
  232. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/tests/unit/test_utils.py +0 -0
  233. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/tests/unit/test_value_sequence.py +0 -0
  234. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/tests/unit/test_workflow.py +0 -0
  235. {hpcflow_new2-0.2.0a190 → hpcflow_new2-0.2.0a199}/hpcflow/tests/unit/test_workflow_template.py +0 -0
@@ -1,12 +1,12 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: hpcflow-new2
3
- Version: 0.2.0a190
3
+ Version: 0.2.0a199
4
4
  Summary: Computational workflow management
5
- License: MIT
5
+ License: MPL-2.0
6
6
  Author: aplowman
7
7
  Author-email: adam.plowman@manchester.ac.uk
8
8
  Requires-Python: >=3.9,<3.13
9
- Classifier: License :: OSI Approved :: MIT License
9
+ Classifier: License :: OSI Approved
10
10
  Classifier: Programming Language :: Python :: 3
11
11
  Classifier: Programming Language :: Python :: 3.9
12
12
  Classifier: Programming Language :: Python :: 3.10
@@ -23,15 +23,18 @@ Requires-Dist: paramiko (>=3.2.0,<4.0.0)
23
23
  Requires-Dist: platformdirs (>=4.2.1,<5.0.0)
24
24
  Requires-Dist: psutil (>=5.9.4,<6.0.0)
25
25
  Requires-Dist: pytest (>=7.2.0,<8.0.0) ; extra == "test"
26
+ Requires-Dist: pyzmq (>=26.0.3,<27.0.0)
26
27
  Requires-Dist: requests (>=2.31.0,<3.0.0)
27
28
  Requires-Dist: reretry (>=0.11.8,<0.12.0)
28
29
  Requires-Dist: rich (>=13.4.2,<14.0.0)
29
30
  Requires-Dist: ruamel-yaml (>=0.18.6,<0.19.0)
31
+ Requires-Dist: scipy (>=1.13.1,<2.0.0) ; python_version < "3.10"
32
+ Requires-Dist: scipy (>=1.15.2,<2.0.0) ; python_version >= "3.10"
30
33
  Requires-Dist: termcolor (>=1.1.0,<2.0.0)
31
34
  Requires-Dist: typing-extensions (>=4.12.2,<5.0.0)
32
35
  Requires-Dist: valida (>=0.7.5,<0.8.0)
33
36
  Requires-Dist: watchdog (>=2.1.9,<3.0.0)
34
- Requires-Dist: zarr (>=2.17.2,<3.0.0)
37
+ Requires-Dist: zarr (==2.17.2)
35
38
  Description-Content-Type: text/markdown
36
39
 
37
40
  <div align="center">
@@ -13,6 +13,7 @@ hiddenimports = [
13
13
  "hpcflow.data.workflows",
14
14
  "hpcflow.tests.data",
15
15
  "hpcflow.sdk.core.test_utils",
16
+ "hpcflow.sdk.utils.patches",
16
17
  "click.testing",
17
18
  "requests", # for GitHub fsspec file system
18
19
  "fsspec.implementations.github", # for GitHub fsspec file system
@@ -0,0 +1 @@
1
+ __version__ = "0.2.0a199"
@@ -0,0 +1,2 @@
1
+ def bad_script():
2
+ raise SyntaxError("oh no!")
@@ -0,0 +1,2 @@
1
+ def do_nothing():
2
+ pass
@@ -0,0 +1,4 @@
1
+ def input_file_generator_pass_env_spec(path, p1, env_spec):
2
+ print(env_spec)
3
+ with path.open("w") as fp:
4
+ fp.write(f"{p1}\n")
@@ -0,0 +1,8 @@
1
+ def main_script_test_pass_env_spec(p1, env_spec):
2
+ # process
3
+ p2 = p1 + 100
4
+
5
+ print(env_spec)
6
+
7
+ # return outputs
8
+ return {"p2": p2}
@@ -0,0 +1,4 @@
1
+ def output_file_parser_pass_env_spec(my_output_file, env_spec):
2
+ print(env_spec)
3
+ with my_output_file.open("r") as fp:
4
+ return int(fp.read().strip())
@@ -0,0 +1,4 @@
1
+ # version: v1
2
+ def input_file_generator_basic(path, p1):
3
+ with path.open("w") as fp:
4
+ fp.write(f"{p1}\n")
@@ -0,0 +1,7 @@
1
+ # version: v1
2
+ def main_script_test_direct_in_direct_out(p1):
3
+ # process
4
+ p2 = p1 + 100
5
+
6
+ # return outputs
7
+ return {"p2": p2}
@@ -0,0 +1,4 @@
1
+ # version: v1
2
+ def output_file_parser_basic(my_output_file):
3
+ with my_output_file.open("r") as fp:
4
+ return int(fp.read().strip())
@@ -0,0 +1,7 @@
1
+ # version: v2
2
+ def main_script_test_direct_in_direct_out(p1):
3
+ # process
4
+ p2 = p1 + 200
5
+
6
+ # return outputs
7
+ return {"p2": p2}
@@ -0,0 +1,3 @@
1
+ def input_file_generator_basic(path, p1):
2
+ with path.open("w") as fp:
3
+ fp.write(f"{p1}\n")
@@ -0,0 +1,3 @@
1
+ def input_file_generator_basic_FAIL(path, p1):
2
+ # silently fail to generate the input file!
3
+ pass
@@ -0,0 +1,8 @@
1
+ import sys
2
+
3
+
4
+ def input_file_generator_test_stdout_stderr(path, p1):
5
+ print(p1)
6
+ print(p1, file=sys.stderr)
7
+ with path.open("w") as fp:
8
+ fp.write(f"{p1}\n")
@@ -0,0 +1,3 @@
1
+ def main_script_test_direct_in(p1):
2
+ # process
3
+ print(p1 + 100)
@@ -0,0 +1,6 @@
1
+ def main_script_test_direct_in_direct_out_2(p2):
2
+ # process
3
+ p3 = p2 + 100
4
+
5
+ # return outputs
6
+ return {"p3": p3}
@@ -0,0 +1,6 @@
1
+ def main_script_test_direct_in_direct_out_2_fail_allowed(p2):
2
+ # process, accounting for possible unset data:
3
+ p3 = (p2 if p2 is not None else 0) + 100
4
+
5
+ # return outputs
6
+ return {"p3": p3}
@@ -0,0 +1,7 @@
1
+ def main_script_test_direct_in_direct_out_2_fail_allowed_group(p2):
2
+ # process, accounting for possible unset data:
3
+ p2_sum = sum(i for i in p2 if i is not None)
4
+ p3 = p2_sum + 100
5
+
6
+ # return outputs
7
+ return {"p3": p3}
@@ -0,0 +1,6 @@
1
+ def main_script_test_direct_in_direct_out_3(p3):
2
+ # process
3
+ p4 = p3 + 100
4
+
5
+ # return outputs
6
+ return {"p4": p4}
@@ -0,0 +1,6 @@
1
+ def main_script_test_direct_in_group_direct_out_3(p3):
2
+ # process
3
+ p4 = sum(p3) + 100
4
+
5
+ # return outputs
6
+ return {"p4": p4}
@@ -0,0 +1,6 @@
1
+ def main_script_test_direct_in_group_one_fail_direct_out_3(p3):
2
+ # process, ignore some un-set inputs:
3
+ p4 = sum([i for i in p3 if i is not None]) + 100
4
+
5
+ # return outputs
6
+ return {"p4": p4}
@@ -0,0 +1,12 @@
1
+ import h5py # type: ignore
2
+
3
+
4
+ def main_script_test_hdf5_in_obj_2(p2, _input_files):
5
+ # read inputs
6
+ with h5py.File(_input_files["hdf5"], mode="r") as fh:
7
+ a = fh["p1c"].attrs["a"].item()
8
+
9
+ # process
10
+ p3 = a + 100
11
+
12
+ return {"p3": p3}
@@ -0,0 +1,3 @@
1
+ def main_script_test_json_out_FAIL(_output_files):
2
+ pass
3
+ # don't generate a JSON output file!
@@ -0,0 +1,12 @@
1
+ import json
2
+ import os
3
+
4
+
5
+ def main_script_test_shell_env_vars(p1):
6
+ with open("env_vars.json", "wt") as fp:
7
+ json.dump(
8
+ {k: v for k, v in os.environ.items() if k.startswith("HPCFLOW")},
9
+ fp,
10
+ indent=4,
11
+ )
12
+ return {"p1": p1 + 1}
@@ -0,0 +1,6 @@
1
+ import sys
2
+
3
+
4
+ def main_script_test_std_out_std_err(stdout_msg, stderr_msg):
5
+ print(stdout_msg)
6
+ print(stderr_msg, file=sys.stderr)
@@ -0,0 +1,3 @@
1
+ def output_file_parser_basic(my_output_file):
2
+ with my_output_file.open("r") as fp:
3
+ return int(fp.read().strip())
@@ -0,0 +1,7 @@
1
+ def output_file_parser_basic_FAIL(my_output_file):
2
+ # parse the output file, but then delete it, so it cannot be saved (when run with
3
+ # `OFP.save_files=True`):
4
+ with my_output_file.open("r") as fp:
5
+ out = int(fp.read().strip())
6
+ my_output_file.unlink()
7
+ return out
@@ -0,0 +1,8 @@
1
+ import sys
2
+
3
+
4
+ def output_file_parser_test_stdout_stderr(my_output_file, p1):
5
+ print(p1)
6
+ print(p1, file=sys.stderr)
7
+ with my_output_file.open("r") as fp:
8
+ return int(fp.read().strip())
@@ -0,0 +1,5 @@
1
+ import sys
2
+
3
+
4
+ def script_exit_test(exit_code):
5
+ sys.exit(exit_code)
@@ -5,7 +5,7 @@
5
5
  executables:
6
6
  - label: python_script
7
7
  instances:
8
- - command: python <<script_name>> <<args>>
8
+ - command: python <<script_path>> <<args>>
9
9
  num_cores: 1
10
10
  parallel_mode: null
11
11
  doc: |
@@ -12,6 +12,7 @@ from typing import Final
12
12
  sdk_classes: Final[Mapping[str, str]] = {
13
13
  "Workflow": "hpcflow.sdk.core.workflow",
14
14
  "Task": "hpcflow.sdk.core.task",
15
+ "MetaTask": "hpcflow.sdk.core.task",
15
16
  "ActionScopeType": "hpcflow.sdk.core.enums",
16
17
  "ActionScope": "hpcflow.sdk.core.actions",
17
18
  "ActionRule": "hpcflow.sdk.core.actions",
@@ -46,6 +47,7 @@ sdk_classes: Final[Mapping[str, str]] = {
46
47
  "NumCores": "hpcflow.sdk.core.environment",
47
48
  "ExecutableInstance": "hpcflow.sdk.core.environment",
48
49
  "Executable": "hpcflow.sdk.core.environment",
50
+ "Executor": "hpcflow.sdk.core.execute",
49
51
  "Environment": "hpcflow.sdk.core.environment",
50
52
  "Loop": "hpcflow.sdk.core.loop",
51
53
  "WorkflowLoop": "hpcflow.sdk.core.loop",
@@ -68,6 +70,7 @@ sdk_classes: Final[Mapping[str, str]] = {
68
70
  "SchemaInput": "hpcflow.sdk.core.parameters",
69
71
  "SchemaOutput": "hpcflow.sdk.core.parameters",
70
72
  "ValueSequence": "hpcflow.sdk.core.parameters",
73
+ "MultiPathSequence": "hpcflow.sdk.core.parameters",
71
74
  "ValuePerturbation": "hpcflow.sdk.core.parameters",
72
75
  "InputValue": "hpcflow.sdk.core.parameters",
73
76
  "ResourceSpec": "hpcflow.sdk.core.parameters",
@@ -77,6 +80,7 @@ sdk_classes: Final[Mapping[str, str]] = {
77
80
  "InputSource": "hpcflow.sdk.core.parameters",
78
81
  "TaskObjective": "hpcflow.sdk.core.task_schema",
79
82
  "TaskSchema": "hpcflow.sdk.core.task_schema",
83
+ "MetaTaskSchema": "hpcflow.sdk.core.task_schema",
80
84
  "ElementSet": "hpcflow.sdk.core.task",
81
85
  "Task": "hpcflow.sdk.core.task",
82
86
  "WorkflowTask": "hpcflow.sdk.core.task",
@@ -89,6 +93,7 @@ sdk_classes: Final[Mapping[str, str]] = {
89
93
  "Workflow": "hpcflow.sdk.core.workflow",
90
94
  "WorkflowBlueprint": "hpcflow.sdk.core.workflow",
91
95
  "Jobscript": "hpcflow.sdk.submission.jobscript",
96
+ "JobscriptBlock": "hpcflow.sdk.submission.jobscript",
92
97
  "Submission": "hpcflow.sdk.submission.submission",
93
98
  "QueuedScheduler": "hpcflow.sdk.submission.schedulers",
94
99
  "DirectWindows": "hpcflow.sdk.submission.schedulers.direct",