hpcflow-new2 0.2.0a163__tar.gz → 0.2.0a164__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.
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/PKG-INFO +1 -1
- hpcflow_new2-0.2.0a164/hpcflow/_version.py +1 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/sdk/core/actions.py +24 -7
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/sdk/core/commands.py +14 -2
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/sdk/core/task.py +4 -2
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/sdk/core/task_schema.py +1 -1
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/sdk/persistence/base.py +6 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/sdk/persistence/zarr.py +2 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/tests/unit/test_action.py +170 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/tests/unit/test_persistence.py +4 -1
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/pyproject.toml +2 -2
- hpcflow_new2-0.2.0a163/hpcflow/_version.py +0 -1
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/README.md +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/__init__.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/__pyinstaller/__init__.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/__pyinstaller/hook-hpcflow.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/app.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/cli.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/data/demo_data_manifest/__init__.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/data/demo_data_manifest/demo_data_manifest.json +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/data/scripts/__init__.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/data/scripts/demo_task_1_generate_t1_infile_1.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/data/scripts/demo_task_1_generate_t1_infile_2.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/data/scripts/demo_task_1_parse_p3.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/data/scripts/generate_t1_file_01.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/data/scripts/main_script_test_direct_in_direct_out.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/data/scripts/main_script_test_direct_in_direct_out_all_iters_test.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/data/scripts/main_script_test_direct_in_direct_out_env_spec.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/data/scripts/main_script_test_direct_in_direct_out_labels.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/data/scripts/main_script_test_direct_sub_param_in_direct_out.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/data/scripts/main_script_test_hdf5_in_obj.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/data/scripts/main_script_test_hdf5_out_obj.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/data/scripts/main_script_test_json_and_direct_in_json_out.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/data/scripts/main_script_test_json_in_json_and_direct_out.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/data/scripts/main_script_test_json_in_json_out.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/data/scripts/main_script_test_json_in_json_out_labels.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/data/scripts/main_script_test_json_in_obj.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/data/scripts/main_script_test_json_out_obj.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/data/scripts/main_script_test_json_sub_param_in_json_out_labels.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/data/scripts/parse_t1_file_01.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/data/template_components/__init__.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/data/template_components/command_files.yaml +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/data/template_components/environments.yaml +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/data/template_components/parameters.yaml +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/data/template_components/task_schemas.yaml +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/data/workflows/__init__.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/data/workflows/workflow_1.yaml +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/examples.ipynb +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/sdk/__init__.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/sdk/app.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/sdk/cli.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/sdk/cli_common.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/sdk/config/__init__.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/sdk/config/callbacks.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/sdk/config/cli.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/sdk/config/config.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/sdk/config/config_file.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/sdk/config/errors.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/sdk/core/__init__.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/sdk/core/command_files.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/sdk/core/element.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/sdk/core/environment.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/sdk/core/errors.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/sdk/core/json_like.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/sdk/core/loop.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/sdk/core/object_list.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/sdk/core/parallel.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/sdk/core/parameters.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/sdk/core/rule.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/sdk/core/run_dir_files.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/sdk/core/test_utils.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/sdk/core/utils.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/sdk/core/validation.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/sdk/core/workflow.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/sdk/core/zarr_io.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/sdk/data/__init__.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/sdk/data/config_file_schema.yaml +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/sdk/data/config_schema.yaml +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/sdk/data/environments_spec_schema.yaml +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/sdk/data/files_spec_schema.yaml +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/sdk/data/parameters_spec_schema.yaml +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/sdk/data/task_schema_spec_schema.yaml +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/sdk/data/workflow_spec_schema.yaml +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/sdk/demo/__init__.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/sdk/demo/cli.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/sdk/helper/__init__.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/sdk/helper/cli.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/sdk/helper/helper.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/sdk/helper/watcher.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/sdk/log.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/sdk/persistence/__init__.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/sdk/persistence/json.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/sdk/persistence/pending.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/sdk/persistence/store_resource.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/sdk/persistence/utils.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/sdk/runtime.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/sdk/submission/__init__.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/sdk/submission/jobscript.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/sdk/submission/jobscript_info.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/sdk/submission/schedulers/__init__.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/sdk/submission/schedulers/direct.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/sdk/submission/schedulers/sge.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/sdk/submission/schedulers/slurm.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/sdk/submission/schedulers/utils.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/sdk/submission/shells/__init__.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/sdk/submission/shells/base.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/sdk/submission/shells/bash.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/sdk/submission/shells/os_version.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/sdk/submission/shells/powershell.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/sdk/submission/submission.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/sdk/typing.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/tests/conftest.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/tests/data/__init__.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/tests/data/benchmark_N_elements.yaml +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/tests/data/workflow_1.json +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/tests/data/workflow_1.yaml +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/tests/data/workflow_1_slurm.yaml +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/tests/data/workflow_1_wsl.yaml +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/tests/data/workflow_test_run_abort.yaml +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/tests/schedulers/direct_linux/test_direct_linux_submission.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/tests/schedulers/slurm/test_slurm_submission.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/tests/scripts/test_main_scripts.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/tests/shells/wsl/test_wsl_submission.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/tests/unit/test_action_rule.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/tests/unit/test_app.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/tests/unit/test_cli.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/tests/unit/test_command.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/tests/unit/test_config.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/tests/unit/test_config_file.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/tests/unit/test_element.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/tests/unit/test_element_iteration.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/tests/unit/test_element_set.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/tests/unit/test_input_source.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/tests/unit/test_input_value.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/tests/unit/test_json_like.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/tests/unit/test_loop.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/tests/unit/test_object_list.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/tests/unit/test_parameter.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/tests/unit/test_resources.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/tests/unit/test_run.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/tests/unit/test_runtime.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/tests/unit/test_schema_input.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/tests/unit/test_shell.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/tests/unit/test_slurm.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/tests/unit/test_submission.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/tests/unit/test_task.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/tests/unit/test_task_schema.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/tests/unit/test_utils.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/tests/unit/test_value_sequence.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/tests/unit/test_workflow.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/tests/unit/test_workflow_template.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/tests/workflows/test_jobscript.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/tests/workflows/test_workflows.py +0 -0
- {hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/viz_demo.ipynb +0 -0
@@ -0,0 +1 @@
|
|
1
|
+
__version__ = "0.2.0a164"
|
@@ -141,6 +141,7 @@ class ElementActionRun:
|
|
141
141
|
element_action,
|
142
142
|
index: int,
|
143
143
|
data_idx: Dict,
|
144
|
+
commands_idx: List[int],
|
144
145
|
start_time: Union[datetime, None],
|
145
146
|
end_time: Union[datetime, None],
|
146
147
|
snapshot_start: Union[Dict, None],
|
@@ -157,6 +158,7 @@ class ElementActionRun:
|
|
157
158
|
self._element_action = element_action
|
158
159
|
self._index = index # local index of this run with the action
|
159
160
|
self._data_idx = data_idx
|
161
|
+
self._commands_idx = commands_idx
|
160
162
|
self._start_time = start_time
|
161
163
|
self._end_time = end_time
|
162
164
|
self._submission_idx = submission_idx
|
@@ -222,6 +224,10 @@ class ElementActionRun:
|
|
222
224
|
def data_idx(self):
|
223
225
|
return self._data_idx
|
224
226
|
|
227
|
+
@property
|
228
|
+
def commands_idx(self):
|
229
|
+
return self._commands_idx
|
230
|
+
|
225
231
|
@property
|
226
232
|
def metadata(self):
|
227
233
|
return self._metadata
|
@@ -715,11 +721,13 @@ class ElementActionRun:
|
|
715
721
|
|
716
722
|
shell_vars = {} # keys are cmd_idx, each value is a list of tuples
|
717
723
|
for cmd_idx, command in enumerate(self.action.commands):
|
718
|
-
|
719
|
-
|
720
|
-
|
721
|
-
|
722
|
-
|
724
|
+
if cmd_idx in self.commands_idx:
|
725
|
+
# only execute commands that have no rules, or all valid rules:
|
726
|
+
cmd_str, shell_vars_i = command.get_command_line(
|
727
|
+
EAR=self, shell=jobscript.shell, env=env
|
728
|
+
)
|
729
|
+
shell_vars[cmd_idx] = shell_vars_i
|
730
|
+
command_lns.append(cmd_str)
|
723
731
|
|
724
732
|
commands = "\n".join(command_lns) + "\n"
|
725
733
|
|
@@ -1025,6 +1033,7 @@ class ActionRule(JSONLike):
|
|
1025
1033
|
|
1026
1034
|
self.rule = rule
|
1027
1035
|
self.action = None # assigned by parent action
|
1036
|
+
self.command = None # assigned by parent command
|
1028
1037
|
|
1029
1038
|
def __eq__(self, other):
|
1030
1039
|
if type(other) is not self.__class__:
|
@@ -1958,9 +1967,17 @@ class Action(JSONLike):
|
|
1958
1967
|
return True
|
1959
1968
|
|
1960
1969
|
@TimeIt.decorator
|
1961
|
-
def test_rules(self, element_iter) -> List[
|
1970
|
+
def test_rules(self, element_iter) -> Tuple[bool, List[int]]:
|
1962
1971
|
"""Test all rules against the specified element iteration."""
|
1963
|
-
|
1972
|
+
rules_valid = [rule.test(element_iteration=element_iter) for rule in self.rules]
|
1973
|
+
action_valid = all(rules_valid)
|
1974
|
+
commands_idx = []
|
1975
|
+
if action_valid:
|
1976
|
+
for cmd_idx, cmd in enumerate(self.commands):
|
1977
|
+
if any(not i.test(element_iteration=element_iter) for i in cmd.rules):
|
1978
|
+
continue
|
1979
|
+
commands_idx.append(cmd_idx)
|
1980
|
+
return action_valid, commands_idx
|
1964
1981
|
|
1965
1982
|
def get_required_executables(self) -> Tuple[str]:
|
1966
1983
|
"""Return executable labels required by this action."""
|
@@ -1,4 +1,4 @@
|
|
1
|
-
from dataclasses import dataclass
|
1
|
+
from dataclasses import dataclass, field
|
2
2
|
from functools import partial
|
3
3
|
from pathlib import Path
|
4
4
|
import re
|
@@ -6,15 +6,24 @@ from typing import Dict, Iterable, List, Optional, Tuple, Union
|
|
6
6
|
|
7
7
|
import numpy as np
|
8
8
|
|
9
|
+
from hpcflow.sdk import app
|
9
10
|
from hpcflow.sdk.core.element import ElementResources
|
10
11
|
from hpcflow.sdk.core.errors import NoCLIFormatMethodError
|
11
|
-
from hpcflow.sdk.core.json_like import JSONLike
|
12
|
+
from hpcflow.sdk.core.json_like import ChildObjectSpec, JSONLike
|
12
13
|
from hpcflow.sdk.core.parameters import ParameterValue
|
13
14
|
|
14
15
|
|
15
16
|
@dataclass
|
16
17
|
class Command(JSONLike):
|
17
18
|
_app_attr = "app"
|
19
|
+
_child_objects = (
|
20
|
+
ChildObjectSpec(
|
21
|
+
name="rules",
|
22
|
+
class_name="ActionRule",
|
23
|
+
is_multiple=True,
|
24
|
+
parent_ref="command",
|
25
|
+
),
|
26
|
+
)
|
18
27
|
|
19
28
|
command: Optional[str] = None
|
20
29
|
executable: Optional[str] = None
|
@@ -23,6 +32,7 @@ class Command(JSONLike):
|
|
23
32
|
stdout: Optional[str] = None
|
24
33
|
stderr: Optional[str] = None
|
25
34
|
stdin: Optional[str] = None
|
35
|
+
rules: Optional[List[app.ActionRule]] = field(default_factory=lambda: [])
|
26
36
|
|
27
37
|
def __repr__(self) -> str:
|
28
38
|
out = []
|
@@ -40,6 +50,8 @@ class Command(JSONLike):
|
|
40
50
|
out.append(f"stderr={self.stderr!r}")
|
41
51
|
if self.stdin:
|
42
52
|
out.append(f"stdin={self.stdin!r}")
|
53
|
+
if self.rules:
|
54
|
+
out.append(f"rules={self.rules!r}")
|
43
55
|
|
44
56
|
return f"{self.__class__.__name__}({', '.join(out)})"
|
45
57
|
|
@@ -1944,8 +1944,8 @@ class WorkflowTask:
|
|
1944
1944
|
# run-specific data index to `test_rules` and `generate_data_index`
|
1945
1945
|
# (e.g. if we wanted to increase the memory requirements of a action because
|
1946
1946
|
# it previously failed)
|
1947
|
-
|
1948
|
-
if
|
1947
|
+
act_valid, cmds_idx = action.test_rules(element_iter=element_iter)
|
1948
|
+
if act_valid:
|
1949
1949
|
self.app.logger.info(f"All action rules evaluated to true {log_common}")
|
1950
1950
|
EAR_ID = self.workflow.num_EARs + count
|
1951
1951
|
param_source = {
|
@@ -1969,6 +1969,7 @@ class WorkflowTask:
|
|
1969
1969
|
run_0 = {
|
1970
1970
|
"elem_iter_ID": element_iter.id_,
|
1971
1971
|
"action_idx": act_idx,
|
1972
|
+
"commands_idx": cmds_idx,
|
1972
1973
|
"metadata": {},
|
1973
1974
|
}
|
1974
1975
|
action_runs[(act_idx, EAR_ID)] = run_0
|
@@ -1982,6 +1983,7 @@ class WorkflowTask:
|
|
1982
1983
|
self.workflow._store.add_EAR(
|
1983
1984
|
elem_iter_ID=element_iter.id_,
|
1984
1985
|
action_idx=act_idx,
|
1986
|
+
commands_idx=run["commands_idx"],
|
1985
1987
|
data_idx=all_data_idx[(act_idx, EAR_ID_i)],
|
1986
1988
|
metadata={},
|
1987
1989
|
)
|
@@ -528,7 +528,7 @@ class TaskSchema(JSONLike):
|
|
528
528
|
f'</tr><tr><td class="action-header-cell">scope:</td>'
|
529
529
|
f"<td><code>{act.get_precise_scope().to_string()}</code></td></tr>"
|
530
530
|
f'<tr><td class="action-header-cell">environment:</td>'
|
531
|
-
f"<td><code>{act.
|
531
|
+
f"<td><code>{act.get_environment_name()}</code></td></tr>"
|
532
532
|
f"{inp_fg_rows}"
|
533
533
|
f"{out_fp_rows}"
|
534
534
|
f"{act_i_script_rows}"
|
@@ -310,6 +310,7 @@ class StoreEAR:
|
|
310
310
|
is_pending: bool
|
311
311
|
elem_iter_ID: int
|
312
312
|
action_idx: int
|
313
|
+
commands_idx: List[int]
|
313
314
|
data_idx: Dict[str, int]
|
314
315
|
submission_idx: Optional[int] = None
|
315
316
|
skip: Optional[bool] = False
|
@@ -336,6 +337,7 @@ class StoreEAR:
|
|
336
337
|
"id_": self.id_,
|
337
338
|
"elem_iter_ID": self.elem_iter_ID,
|
338
339
|
"action_idx": self.action_idx,
|
340
|
+
"commands_idx": self.commands_idx,
|
339
341
|
"data_idx": self.data_idx,
|
340
342
|
"submission_idx": self.submission_idx,
|
341
343
|
"success": self.success,
|
@@ -371,6 +373,7 @@ class StoreEAR:
|
|
371
373
|
"is_pending": self.is_pending,
|
372
374
|
"elem_iter_ID": self.elem_iter_ID,
|
373
375
|
"action_idx": self.action_idx,
|
376
|
+
"commands_idx": self.commands_idx,
|
374
377
|
"data_idx": self.data_idx,
|
375
378
|
"submission_idx": self.submission_idx,
|
376
379
|
"success": self.success,
|
@@ -414,6 +417,7 @@ class StoreEAR:
|
|
414
417
|
is_pending=self.is_pending,
|
415
418
|
elem_iter_ID=self.elem_iter_ID,
|
416
419
|
action_idx=self.action_idx,
|
420
|
+
commands_idx=self.commands_idx,
|
417
421
|
data_idx=self.data_idx,
|
418
422
|
metadata=self.metadata,
|
419
423
|
submission_idx=sub_idx,
|
@@ -1013,6 +1017,7 @@ class PersistentStore(ABC):
|
|
1013
1017
|
self,
|
1014
1018
|
elem_iter_ID: int,
|
1015
1019
|
action_idx: int,
|
1020
|
+
commands_idx: List[int],
|
1016
1021
|
data_idx: Dict,
|
1017
1022
|
metadata: Dict,
|
1018
1023
|
save: bool = True,
|
@@ -1025,6 +1030,7 @@ class PersistentStore(ABC):
|
|
1025
1030
|
is_pending=True,
|
1026
1031
|
elem_iter_ID=elem_iter_ID,
|
1027
1032
|
action_idx=action_idx,
|
1033
|
+
commands_idx=commands_idx,
|
1028
1034
|
data_idx=data_idx,
|
1029
1035
|
metadata=metadata,
|
1030
1036
|
)
|
@@ -237,6 +237,7 @@ class ZarrStoreEAR(StoreEAR):
|
|
237
237
|
self.exit_code,
|
238
238
|
self.metadata,
|
239
239
|
self.run_hostname,
|
240
|
+
self.commands_idx,
|
240
241
|
]
|
241
242
|
return EAR_enc
|
242
243
|
|
@@ -258,6 +259,7 @@ class ZarrStoreEAR(StoreEAR):
|
|
258
259
|
"exit_code": EAR_dat[11],
|
259
260
|
"metadata": EAR_dat[12],
|
260
261
|
"run_hostname": EAR_dat[13],
|
262
|
+
"commands_idx": EAR_dat[14],
|
261
263
|
}
|
262
264
|
return cls(is_pending=False, **obj_dat)
|
263
265
|
|
@@ -618,3 +618,173 @@ def test_ActionEnvironment_env_dict(null_config):
|
|
618
618
|
def test_ActionEnvironment_raises_on_missing_name(null_config):
|
619
619
|
with pytest.raises(ActionEnvironmentMissingNameError):
|
620
620
|
hf.ActionEnvironment(environment={"key": "value"})
|
621
|
+
|
622
|
+
|
623
|
+
def test_rules_allow_runs_initialised(null_config, tmp_path):
|
624
|
+
"""Test rules that do not depend on execution allow for runs to be initialised."""
|
625
|
+
act = hf.Action(
|
626
|
+
script="<<script:path/to/some/script>>",
|
627
|
+
rules=[hf.ActionRule(path="inputs.p1", condition={"value.less_than": 2})],
|
628
|
+
)
|
629
|
+
ts = hf.TaskSchema(
|
630
|
+
objective="ts1",
|
631
|
+
inputs=[hf.SchemaInput("p1")],
|
632
|
+
actions=[act],
|
633
|
+
)
|
634
|
+
t1 = hf.Task(
|
635
|
+
schema=ts, sequences=[hf.ValueSequence(path="inputs.p1", values=[1.5, 2.5])]
|
636
|
+
)
|
637
|
+
wk = hf.Workflow.from_template_data(
|
638
|
+
template_name="test",
|
639
|
+
path=tmp_path,
|
640
|
+
tasks=[t1],
|
641
|
+
)
|
642
|
+
assert wk.tasks[0].elements[0].iterations[0].EARs_initialised
|
643
|
+
assert wk.tasks[0].elements[1].iterations[0].EARs_initialised
|
644
|
+
assert len(wk.tasks[0].elements[0].actions) == 1
|
645
|
+
assert len(wk.tasks[0].elements[1].actions) == 0
|
646
|
+
|
647
|
+
|
648
|
+
def test_rules_prevent_runs_initialised(null_config, tmp_path):
|
649
|
+
"""Test rules that depend on execution prevent initialising runs."""
|
650
|
+
act1 = hf.Action(script="<<script:path/to/some/script>>")
|
651
|
+
act2 = hf.Action(
|
652
|
+
script="<<script:path/to/some/script>>",
|
653
|
+
rules=[hf.ActionRule(path="inputs.p2", condition={"value.less_than": 2})],
|
654
|
+
)
|
655
|
+
ts1 = hf.TaskSchema(
|
656
|
+
objective="ts1",
|
657
|
+
inputs=[hf.SchemaInput("p1")],
|
658
|
+
outputs=[hf.SchemaOutput("p2")],
|
659
|
+
actions=[act1],
|
660
|
+
)
|
661
|
+
ts2 = hf.TaskSchema(
|
662
|
+
objective="ts2",
|
663
|
+
inputs=[hf.SchemaInput("p2")],
|
664
|
+
actions=[act2],
|
665
|
+
)
|
666
|
+
t1 = hf.Task(schema=ts1, inputs={"p1": 1.2})
|
667
|
+
t2 = hf.Task(schema=ts2)
|
668
|
+
wk = hf.Workflow.from_template_data(
|
669
|
+
template_name="test",
|
670
|
+
path=tmp_path,
|
671
|
+
tasks=[t1, t2],
|
672
|
+
)
|
673
|
+
assert wk.tasks[0].elements[0].iterations[0].EARs_initialised
|
674
|
+
assert not wk.tasks[1].elements[0].iterations[0].EARs_initialised
|
675
|
+
|
676
|
+
|
677
|
+
def test_command_rules_allow_runs_initialised(null_config, tmp_path):
|
678
|
+
"""Test command rules that do not depend on execution allow for runs to be
|
679
|
+
initialised."""
|
680
|
+
act = hf.Action(
|
681
|
+
commands=[
|
682
|
+
hf.Command(
|
683
|
+
command='echo "p1=<<parameter:p1>>"',
|
684
|
+
rules=[hf.ActionRule(path="inputs.p1", condition={"value.less_than": 2})],
|
685
|
+
)
|
686
|
+
],
|
687
|
+
)
|
688
|
+
ts = hf.TaskSchema(
|
689
|
+
objective="ts1",
|
690
|
+
inputs=[hf.SchemaInput("p1")],
|
691
|
+
actions=[act],
|
692
|
+
)
|
693
|
+
t1 = hf.Task(
|
694
|
+
schema=ts, sequences=[hf.ValueSequence(path="inputs.p1", values=[1.5, 2.5])]
|
695
|
+
)
|
696
|
+
wk = hf.Workflow.from_template_data(
|
697
|
+
template_name="test",
|
698
|
+
path=tmp_path,
|
699
|
+
tasks=[t1],
|
700
|
+
)
|
701
|
+
assert wk.tasks[0].elements[0].iterations[0].EARs_initialised
|
702
|
+
assert wk.tasks[0].elements[1].iterations[0].EARs_initialised
|
703
|
+
assert len(wk.tasks[0].elements[0].actions) == 1
|
704
|
+
assert len(wk.tasks[0].elements[1].actions) == 1
|
705
|
+
assert len(wk.tasks[0].elements[0].action_runs[0].commands_idx) == 1
|
706
|
+
assert len(wk.tasks[0].elements[1].action_runs[0].commands_idx) == 0
|
707
|
+
|
708
|
+
|
709
|
+
def test_command_rules_prevent_runs_initialised(null_config, tmp_path):
|
710
|
+
"""Test command rules that do depend on execution prevent runs being initialised."""
|
711
|
+
act1 = hf.Action(
|
712
|
+
commands=[
|
713
|
+
hf.Command(command='echo "p1=<<parameter:p1>>"', stdout="<<parameter:p2>>")
|
714
|
+
]
|
715
|
+
)
|
716
|
+
act2 = hf.Action(
|
717
|
+
commands=[
|
718
|
+
hf.Command(
|
719
|
+
command='echo "p1=<<parameter:p2>>"',
|
720
|
+
rules=[hf.ActionRule(path="inputs.p2", condition={"value.less_than": 2})],
|
721
|
+
)
|
722
|
+
],
|
723
|
+
)
|
724
|
+
ts1 = hf.TaskSchema(
|
725
|
+
objective="ts1",
|
726
|
+
inputs=[hf.SchemaInput("p1")],
|
727
|
+
outputs=[hf.SchemaOutput("p2")],
|
728
|
+
actions=[act1],
|
729
|
+
)
|
730
|
+
ts2 = hf.TaskSchema(
|
731
|
+
objective="ts2",
|
732
|
+
inputs=[hf.SchemaInput("p2")],
|
733
|
+
actions=[act2],
|
734
|
+
)
|
735
|
+
t1 = hf.Task(schema=ts1, inputs={"p1": 0})
|
736
|
+
t2 = hf.Task(schema=ts2)
|
737
|
+
wk = hf.Workflow.from_template_data(
|
738
|
+
template_name="test",
|
739
|
+
path=tmp_path,
|
740
|
+
tasks=[t1, t2],
|
741
|
+
)
|
742
|
+
assert wk.tasks[0].elements[0].iterations[0].EARs_initialised
|
743
|
+
assert len(wk.tasks[0].elements[0].action_runs[0].commands_idx) == 1
|
744
|
+
assert not wk.tasks[1].elements[0].iterations[0].EARs_initialised
|
745
|
+
|
746
|
+
|
747
|
+
def test_command_rules_prevent_runs_initialised_with_valid_action_rules(
|
748
|
+
null_config, tmp_path
|
749
|
+
):
|
750
|
+
"""Test command rules that do depend on execution prevent runs being initialised, even
|
751
|
+
when the parent action rules can be tested and are valid."""
|
752
|
+
act1 = hf.Action(
|
753
|
+
commands=[
|
754
|
+
hf.Command(command='echo "p1=<<parameter:p1>>"', stdout="<<parameter:p2>>")
|
755
|
+
]
|
756
|
+
)
|
757
|
+
|
758
|
+
# action rule is testable and valid, but command rule is not testable, so the action
|
759
|
+
# runs should not be initialised:
|
760
|
+
act2 = hf.Action(
|
761
|
+
commands=[
|
762
|
+
hf.Command(
|
763
|
+
command='echo "p1=<<parameter:p1>>; p2=<<parameter:p2>>"',
|
764
|
+
rules=[hf.ActionRule(path="inputs.p2", condition={"value.less_than": 2})],
|
765
|
+
)
|
766
|
+
],
|
767
|
+
rules=[hf.ActionRule(path="inputs.p1", condition={"value.less_than": 2})],
|
768
|
+
)
|
769
|
+
ts1 = hf.TaskSchema(
|
770
|
+
objective="ts1",
|
771
|
+
inputs=[hf.SchemaInput("p1")],
|
772
|
+
outputs=[hf.SchemaOutput("p2")],
|
773
|
+
actions=[act1],
|
774
|
+
)
|
775
|
+
ts2 = hf.TaskSchema(
|
776
|
+
objective="ts2",
|
777
|
+
inputs=[hf.SchemaInput("p1"), hf.SchemaInput("p2")],
|
778
|
+
actions=[act2],
|
779
|
+
)
|
780
|
+
t1 = hf.Task(schema=ts1, inputs={"p1": 0})
|
781
|
+
t2 = hf.Task(schema=ts2)
|
782
|
+
wk = hf.Workflow.from_template_data(
|
783
|
+
template_name="test",
|
784
|
+
path=tmp_path,
|
785
|
+
tasks=[t1, t2],
|
786
|
+
)
|
787
|
+
assert wk.tasks[0].elements[0].iterations[0].EARs_initialised
|
788
|
+
assert len(wk.tasks[0].elements[0].action_runs[0].commands_idx) == 1
|
789
|
+
|
790
|
+
assert not wk.tasks[1].elements[0].iterations[0].EARs_initialised
|
@@ -74,6 +74,7 @@ def test_store_pending_add_EAR(tmp_path):
|
|
74
74
|
EAR_ID = store.add_EAR(
|
75
75
|
elem_iter_ID=0,
|
76
76
|
action_idx=0,
|
77
|
+
commands_idx=[],
|
77
78
|
data_idx={},
|
78
79
|
metadata={},
|
79
80
|
)
|
@@ -83,6 +84,7 @@ def test_store_pending_add_EAR(tmp_path):
|
|
83
84
|
is_pending=True,
|
84
85
|
elem_iter_ID=0,
|
85
86
|
action_idx=0,
|
87
|
+
commands_idx=[],
|
86
88
|
data_idx={},
|
87
89
|
metadata={},
|
88
90
|
)
|
@@ -186,7 +188,7 @@ def test_get_task_elements_single_element_iter_EAR_pending(tmp_path):
|
|
186
188
|
store = JSONPersistentStore.make_test_store_from_spec(
|
187
189
|
[{"elements": [{"iterations": [{}]}]}], dir=tmp_path
|
188
190
|
)
|
189
|
-
store.add_EAR(elem_iter_ID=0, action_idx=0, data_idx={}, metadata={})
|
191
|
+
store.add_EAR(elem_iter_ID=0, action_idx=0, commands_idx=[], data_idx={}, metadata={})
|
190
192
|
assert store.get_task_elements(0, slice(0, None)) == [
|
191
193
|
{
|
192
194
|
"id": 0,
|
@@ -209,6 +211,7 @@ def test_get_task_elements_single_element_iter_EAR_pending(tmp_path):
|
|
209
211
|
"is_pending": True,
|
210
212
|
"elem_iter_ID": 0,
|
211
213
|
"action_idx": 0,
|
214
|
+
"commands_idx": [],
|
212
215
|
"data_idx": {},
|
213
216
|
"metadata": {},
|
214
217
|
}
|
@@ -1,7 +1,7 @@
|
|
1
1
|
|
2
2
|
[tool.poetry]
|
3
3
|
name = "hpcflow-new2"
|
4
|
-
version = "0.2.
|
4
|
+
version = "0.2.0a164"
|
5
5
|
|
6
6
|
description = "Computational workflow management"
|
7
7
|
authors = ["aplowman <adam.plowman@manchester.ac.uk>"]
|
@@ -76,7 +76,7 @@ hook-dirs = "hpcflow.__pyinstaller:get_hook_dirs"
|
|
76
76
|
|
77
77
|
[tool.commitizen]
|
78
78
|
name = "cz_conventional_commits"
|
79
|
-
version = "0.2.
|
79
|
+
version = "0.2.0a164"
|
80
80
|
tag_format = "v$version"
|
81
81
|
version_files = [
|
82
82
|
"pyproject.toml:version",
|
@@ -1 +0,0 @@
|
|
1
|
-
__version__ = "0.2.0a163"
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/data/demo_data_manifest/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/data/scripts/demo_task_1_parse_p3.py
RENAMED
File without changes
|
{hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/data/scripts/generate_t1_file_01.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/data/template_components/__init__.py
RENAMED
File without changes
|
File without changes
|
{hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/data/template_components/environments.yaml
RENAMED
File without changes
|
{hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/data/template_components/parameters.yaml
RENAMED
File without changes
|
{hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/data/template_components/task_schemas.yaml
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/sdk/data/environments_spec_schema.yaml
RENAMED
File without changes
|
File without changes
|
{hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/sdk/data/parameters_spec_schema.yaml
RENAMED
File without changes
|
{hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/sdk/data/task_schema_spec_schema.yaml
RENAMED
File without changes
|
{hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/sdk/data/workflow_spec_schema.yaml
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/sdk/submission/schedulers/__init__.py
RENAMED
File without changes
|
{hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/sdk/submission/schedulers/direct.py
RENAMED
File without changes
|
File without changes
|
{hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/sdk/submission/schedulers/slurm.py
RENAMED
File without changes
|
{hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/sdk/submission/schedulers/utils.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/sdk/submission/shells/os_version.py
RENAMED
File without changes
|
{hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/sdk/submission/shells/powershell.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/tests/data/benchmark_N_elements.yaml
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/tests/data/workflow_test_run_abort.yaml
RENAMED
File without changes
|
File without changes
|
File without changes
|
{hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/tests/scripts/test_main_scripts.py
RENAMED
File without changes
|
{hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/tests/shells/wsl/test_wsl_submission.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/tests/unit/test_element_iteration.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{hpcflow_new2-0.2.0a163 → hpcflow_new2-0.2.0a164}/hpcflow/tests/unit/test_workflow_template.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|