hpcflow-new2 0.2.0a162__py3-none-any.whl → 0.2.0a164__py3-none-any.whl
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/_version.py +1 -1
- hpcflow/data/scripts/main_script_test_direct_in_direct_out_env_spec.py +7 -0
- hpcflow/sdk/app.py +29 -42
- hpcflow/sdk/cli.py +1 -1
- hpcflow/sdk/core/actions.py +87 -21
- hpcflow/sdk/core/command_files.py +6 -4
- hpcflow/sdk/core/commands.py +21 -2
- hpcflow/sdk/core/element.py +39 -8
- hpcflow/sdk/core/errors.py +16 -0
- hpcflow/sdk/core/object_list.py +26 -14
- hpcflow/sdk/core/parameters.py +21 -3
- hpcflow/sdk/core/task.py +111 -4
- hpcflow/sdk/core/task_schema.py +17 -2
- hpcflow/sdk/core/test_utils.py +5 -2
- hpcflow/sdk/core/workflow.py +93 -5
- hpcflow/sdk/data/workflow_spec_schema.yaml +14 -58
- hpcflow/sdk/demo/cli.py +1 -1
- hpcflow/sdk/persistence/base.py +6 -0
- hpcflow/sdk/persistence/zarr.py +2 -0
- hpcflow/sdk/submission/submission.py +21 -10
- hpcflow/tests/scripts/test_main_scripts.py +60 -0
- hpcflow/tests/unit/test_action.py +186 -0
- hpcflow/tests/unit/test_element.py +27 -25
- hpcflow/tests/unit/test_element_set.py +32 -0
- hpcflow/tests/unit/test_parameter.py +11 -9
- hpcflow/tests/unit/test_persistence.py +4 -1
- hpcflow/tests/unit/test_resources.py +7 -9
- hpcflow/tests/unit/test_schema_input.py +8 -8
- hpcflow/tests/unit/test_task.py +26 -27
- hpcflow/tests/unit/test_task_schema.py +39 -8
- hpcflow/tests/unit/test_value_sequence.py +5 -0
- hpcflow/tests/unit/test_workflow.py +4 -9
- hpcflow/tests/unit/test_workflow_template.py +122 -1
- {hpcflow_new2-0.2.0a162.dist-info → hpcflow_new2-0.2.0a164.dist-info}/METADATA +1 -1
- {hpcflow_new2-0.2.0a162.dist-info → hpcflow_new2-0.2.0a164.dist-info}/RECORD +37 -36
- {hpcflow_new2-0.2.0a162.dist-info → hpcflow_new2-0.2.0a164.dist-info}/WHEEL +0 -0
- {hpcflow_new2-0.2.0a162.dist-info → hpcflow_new2-0.2.0a164.dist-info}/entry_points.txt +0 -0
@@ -69,7 +69,7 @@ def test_element_inputs_removes_schema_param_trivial_label(null_config, tmp_path
|
|
69
69
|
inputs=[hf.SchemaInput(parameter="p1", labels={label: {}})],
|
70
70
|
actions=[
|
71
71
|
hf.Action(
|
72
|
-
environments=[hf.ActionEnvironment(
|
72
|
+
environments=[hf.ActionEnvironment("null_env")],
|
73
73
|
commands=[hf.Command(command=f"echo <<parameter:p1[{label}]>>")],
|
74
74
|
),
|
75
75
|
],
|
@@ -118,7 +118,7 @@ def test_element_inputs_does_not_remove_multiple_schema_param_label(
|
|
118
118
|
inputs=[hf.SchemaInput(parameter="p1", labels={label: {}}, multiple=True)],
|
119
119
|
actions=[
|
120
120
|
hf.Action(
|
121
|
-
environments=[hf.ActionEnvironment(
|
121
|
+
environments=[hf.ActionEnvironment("null_env")],
|
122
122
|
commands=[hf.Command(command=f"echo <<parameter:p1[{label}]>>")],
|
123
123
|
),
|
124
124
|
],
|
@@ -153,7 +153,7 @@ def test_get_input_values_for_multiple_schema_input_single_label(null_config, tm
|
|
153
153
|
],
|
154
154
|
actions=[
|
155
155
|
hf.Action(
|
156
|
-
environments=[hf.ActionEnvironment(
|
156
|
+
environments=[hf.ActionEnvironment("null_env")],
|
157
157
|
commands=[
|
158
158
|
hf.Command(command=f"echo <<parameter:p1[{label}]>> <<parameter:p2>>")
|
159
159
|
],
|
@@ -180,7 +180,7 @@ def test_get_input_values_subset(null_config, tmp_path):
|
|
180
180
|
],
|
181
181
|
actions=[
|
182
182
|
hf.Action(
|
183
|
-
environments=[hf.ActionEnvironment(
|
183
|
+
environments=[hf.ActionEnvironment("null_env")],
|
184
184
|
commands=[hf.Command(command=f"echo <<parameter:p1>> <<parameter:p2>>")],
|
185
185
|
),
|
186
186
|
],
|
@@ -210,7 +210,7 @@ def test_get_input_values_subset_labelled_label_dict_False(null_config, tmp_path
|
|
210
210
|
],
|
211
211
|
actions=[
|
212
212
|
hf.Action(
|
213
|
-
environments=[hf.ActionEnvironment(
|
213
|
+
environments=[hf.ActionEnvironment("null_env")],
|
214
214
|
commands=[
|
215
215
|
hf.Command(
|
216
216
|
command=f"echo <<parameter:p1[one]>> <<parameter:p2[two]>>"
|
@@ -244,7 +244,7 @@ def test_get_input_values_subset_labelled_label_dict_True(null_config, tmp_path)
|
|
244
244
|
],
|
245
245
|
actions=[
|
246
246
|
hf.Action(
|
247
|
-
environments=[hf.ActionEnvironment(
|
247
|
+
environments=[hf.ActionEnvironment("null_env")],
|
248
248
|
commands=[
|
249
249
|
hf.Command(
|
250
250
|
command=f"echo <<parameter:p1[one]>> <<parameter:p2[two]>>"
|
@@ -276,7 +276,7 @@ def test_get_input_values_for_multiple_schema_input(null_config, tmp_path):
|
|
276
276
|
],
|
277
277
|
actions=[
|
278
278
|
hf.Action(
|
279
|
-
environments=[hf.ActionEnvironment(
|
279
|
+
environments=[hf.ActionEnvironment("null_env")],
|
280
280
|
commands=[
|
281
281
|
hf.Command(command=f"echo <<parameter:p1[{label}]>> <<parameter:p2>>")
|
282
282
|
],
|
@@ -304,7 +304,7 @@ def test_get_input_values_for_multiple_schema_input_with_object(null_config, tmp
|
|
304
304
|
],
|
305
305
|
actions=[
|
306
306
|
hf.Action(
|
307
|
-
environments=[hf.ActionEnvironment(
|
307
|
+
environments=[hf.ActionEnvironment("null_env")],
|
308
308
|
commands=[
|
309
309
|
hf.Command(
|
310
310
|
command=f"echo <<parameter:p1c[{label}]>> <<parameter:p2>>"
|
hpcflow/tests/unit/test_task.py
CHANGED
@@ -11,6 +11,7 @@ from hpcflow.sdk.core.errors import (
|
|
11
11
|
TaskTemplateMultipleInputValues,
|
12
12
|
TaskTemplateMultipleSchemaObjectives,
|
13
13
|
TaskTemplateUnexpectedInput,
|
14
|
+
UnknownEnvironmentPresetError,
|
14
15
|
UnsetParameterDataError,
|
15
16
|
)
|
16
17
|
from hpcflow.sdk.core.parameters import NullDefault
|
@@ -113,13 +114,8 @@ def file_spec_fs1():
|
|
113
114
|
|
114
115
|
|
115
116
|
@pytest.fixture
|
116
|
-
def
|
117
|
-
return hf.
|
118
|
-
|
119
|
-
|
120
|
-
@pytest.fixture
|
121
|
-
def act_env_1(env_1):
|
122
|
-
return hf.ActionEnvironment(env_1)
|
117
|
+
def act_env_1():
|
118
|
+
return hf.ActionEnvironment("env_1")
|
123
119
|
|
124
120
|
|
125
121
|
@pytest.fixture
|
@@ -146,13 +142,8 @@ def workflow_w4(null_config, tmp_path, schema_s3, param_p1):
|
|
146
142
|
|
147
143
|
|
148
144
|
@pytest.fixture
|
149
|
-
def
|
150
|
-
return hf.
|
151
|
-
|
152
|
-
|
153
|
-
@pytest.fixture
|
154
|
-
def act_env_1(env_1):
|
155
|
-
return hf.ActionEnvironment(env_1)
|
145
|
+
def act_env_1():
|
146
|
+
return hf.ActionEnvironment("env_1")
|
156
147
|
|
157
148
|
|
158
149
|
@pytest.fixture
|
@@ -1512,13 +1503,8 @@ def test_add_task_before_no_ref(workflow_w0):
|
|
1512
1503
|
|
1513
1504
|
|
1514
1505
|
@pytest.fixture
|
1515
|
-
def
|
1516
|
-
return hf.
|
1517
|
-
|
1518
|
-
|
1519
|
-
@pytest.fixture
|
1520
|
-
def act_env_1(env_1):
|
1521
|
-
return hf.ActionEnvironment(env_1)
|
1506
|
+
def act_env_1():
|
1507
|
+
return hf.ActionEnvironment("env_1")
|
1522
1508
|
|
1523
1509
|
|
1524
1510
|
def test_parameter_two_modifying_actions_expected_data_indices(
|
@@ -1572,7 +1558,7 @@ def test_conditional_shell_schema_single_initialised_action(null_config, tmp_pat
|
|
1572
1558
|
outputs=[hf.SchemaInput("p2")],
|
1573
1559
|
actions=[
|
1574
1560
|
hf.Action(
|
1575
|
-
environments=[hf.ActionEnvironment(
|
1561
|
+
environments=[hf.ActionEnvironment("null_env")],
|
1576
1562
|
commands=[
|
1577
1563
|
hf.Command(
|
1578
1564
|
command="echo $((<<parameter:p1>> + 100))",
|
@@ -1582,7 +1568,7 @@ def test_conditional_shell_schema_single_initialised_action(null_config, tmp_pat
|
|
1582
1568
|
rules=[rules["posix"]],
|
1583
1569
|
),
|
1584
1570
|
hf.Action(
|
1585
|
-
environments=[hf.ActionEnvironment(
|
1571
|
+
environments=[hf.ActionEnvironment("null_env")],
|
1586
1572
|
commands=[
|
1587
1573
|
hf.Command(
|
1588
1574
|
command="Write-Output ((<<parameter:p1>> + 100))",
|
@@ -1617,7 +1603,7 @@ def test_element_iteration_EARs_initialised_on_make_workflow(
|
|
1617
1603
|
outputs=[hf.SchemaInput("p2")],
|
1618
1604
|
actions=[
|
1619
1605
|
hf.Action(
|
1620
|
-
environments=[hf.ActionEnvironment(
|
1606
|
+
environments=[hf.ActionEnvironment("null_env")],
|
1621
1607
|
commands=[
|
1622
1608
|
hf.Command(
|
1623
1609
|
command="echo $((<<parameter:p1>> + 100))",
|
@@ -1670,7 +1656,7 @@ def test_element_iteration_EARs_not_initialised_on_make_workflow_due_to_unset(
|
|
1670
1656
|
outputs=[hf.SchemaInput("p2")],
|
1671
1657
|
actions=[
|
1672
1658
|
hf.Action(
|
1673
|
-
environments=[hf.ActionEnvironment(
|
1659
|
+
environments=[hf.ActionEnvironment("null_env")],
|
1674
1660
|
commands=[
|
1675
1661
|
hf.Command(
|
1676
1662
|
command="echo $((<<parameter:p1>> + 100))",
|
@@ -1686,7 +1672,7 @@ def test_element_iteration_EARs_not_initialised_on_make_workflow_due_to_unset(
|
|
1686
1672
|
outputs=[hf.SchemaInput("p3")],
|
1687
1673
|
actions=[
|
1688
1674
|
hf.Action(
|
1689
|
-
environments=[hf.ActionEnvironment(
|
1675
|
+
environments=[hf.ActionEnvironment("null_env")],
|
1690
1676
|
commands=[
|
1691
1677
|
hf.Command(
|
1692
1678
|
command="echo $((<<parameter:p2>> + 100))",
|
@@ -1729,7 +1715,7 @@ def test_element_iteration_EARs_initialised_on_make_workflow_with_no_valid_actio
|
|
1729
1715
|
outputs=[hf.SchemaInput("p2")],
|
1730
1716
|
actions=[
|
1731
1717
|
hf.Action(
|
1732
|
-
environments=[hf.ActionEnvironment(
|
1718
|
+
environments=[hf.ActionEnvironment("null_env")],
|
1733
1719
|
commands=[
|
1734
1720
|
hf.Command(
|
1735
1721
|
command="some command that uses <<parameter:p1>>",
|
@@ -2177,3 +2163,16 @@ def test_labelled_input_values_specified_by_dict(null_config):
|
|
2177
2163
|
)
|
2178
2164
|
t2 = hf.Task(schema=ts, inputs={"p1[one]": 101})
|
2179
2165
|
assert t1 == t2
|
2166
|
+
|
2167
|
+
|
2168
|
+
def test_raise_UnknownEnvironmentPresetError(null_config):
|
2169
|
+
ts = hf.TaskSchema(objective="t1")
|
2170
|
+
with pytest.raises(UnknownEnvironmentPresetError):
|
2171
|
+
hf.Task(schema=ts, env_preset="my_env_preset")
|
2172
|
+
|
2173
|
+
|
2174
|
+
def test_raise_UnknownEnvironmentPresetError_sequence(null_config):
|
2175
|
+
ts = hf.TaskSchema(objective="t1")
|
2176
|
+
seq = hf.ValueSequence(path="env_preset", values=["my_env_preset"])
|
2177
|
+
with pytest.raises(UnknownEnvironmentPresetError):
|
2178
|
+
hf.Task(schema=ts, sequences=[seq])
|
@@ -1,18 +1,16 @@
|
|
1
1
|
import pytest
|
2
2
|
|
3
3
|
from hpcflow.app import app as hf
|
4
|
-
from hpcflow.sdk.core.errors import
|
4
|
+
from hpcflow.sdk.core.errors import (
|
5
|
+
EnvironmentPresetUnknownEnvironmentError,
|
6
|
+
InvalidIdentifier,
|
7
|
+
)
|
5
8
|
from hpcflow.sdk.core.test_utils import make_actions, make_parameters
|
6
9
|
|
7
10
|
|
8
11
|
@pytest.fixture
|
9
|
-
def
|
10
|
-
return hf.
|
11
|
-
|
12
|
-
|
13
|
-
@pytest.fixture
|
14
|
-
def act_env_1(env_1):
|
15
|
-
return hf.ActionEnvironment(env_1)
|
12
|
+
def act_env_1():
|
13
|
+
return hf.ActionEnvironment("env_1")
|
16
14
|
|
17
15
|
|
18
16
|
@pytest.fixture
|
@@ -112,3 +110,36 @@ def test_dot_access_object_list_raise_on_bad_access_attr_name():
|
|
112
110
|
ts = hf.TaskSchema("add_object", actions=[])
|
113
111
|
with pytest.raises(ValueError):
|
114
112
|
hf.TaskSchemasList([ts])
|
113
|
+
|
114
|
+
|
115
|
+
def test_env_preset():
|
116
|
+
p1, p2 = make_parameters(2)
|
117
|
+
(act_1,) = make_actions([("p1", "p2")], env="env1")
|
118
|
+
hf.TaskSchema(
|
119
|
+
"t1",
|
120
|
+
inputs=[p1],
|
121
|
+
outputs=[p2],
|
122
|
+
actions=[act_1],
|
123
|
+
environment_presets={"my_preset": {"env1": {"version": 1}}},
|
124
|
+
)
|
125
|
+
|
126
|
+
|
127
|
+
def test_env_preset_raise_bad_env():
|
128
|
+
p1, p2 = make_parameters(2)
|
129
|
+
(act_1,) = make_actions([("p1", "p2")], env="env1")
|
130
|
+
with pytest.raises(EnvironmentPresetUnknownEnvironmentError):
|
131
|
+
hf.TaskSchema(
|
132
|
+
"t1",
|
133
|
+
inputs=[p1],
|
134
|
+
outputs=[p2],
|
135
|
+
actions=[act_1],
|
136
|
+
environment_presets={"my_preset": {"env2": {"version": 1}}},
|
137
|
+
)
|
138
|
+
|
139
|
+
|
140
|
+
def test_env_preset_raise_bad_env_no_actions():
|
141
|
+
with pytest.raises(EnvironmentPresetUnknownEnvironmentError):
|
142
|
+
hf.TaskSchema(
|
143
|
+
"t1",
|
144
|
+
environment_presets={"my_preset": {"env1": {"version": 1}}},
|
145
|
+
)
|
@@ -442,3 +442,8 @@ def test_from_rectangle_coord_none(null_config):
|
|
442
442
|
)
|
443
443
|
seq = hf.ValueSequence.from_rectangle(**kwargs)
|
444
444
|
assert np.allclose(seq.values, [[0, 1], [1, 1], [0, 0], [1, 0]])
|
445
|
+
|
446
|
+
|
447
|
+
def test_environments_sequence_to_resources(null_config):
|
448
|
+
seq = hf.ValueSequence(path="environments.my_env.version", values=[1, 2])
|
449
|
+
assert seq.path == "resources.any.environments.my_env.version"
|
@@ -93,13 +93,8 @@ def param_p3(null_config):
|
|
93
93
|
|
94
94
|
|
95
95
|
@pytest.fixture
|
96
|
-
def
|
97
|
-
return hf.
|
98
|
-
|
99
|
-
|
100
|
-
@pytest.fixture
|
101
|
-
def act_env_1(null_config, env_1):
|
102
|
-
return hf.ActionEnvironment(env_1)
|
96
|
+
def act_env_1(null_config):
|
97
|
+
return hf.ActionEnvironment("env_1")
|
103
98
|
|
104
99
|
|
105
100
|
@pytest.fixture
|
@@ -161,7 +156,7 @@ def schema_s4(
|
|
161
156
|
inputs=[hf.SchemaInput(parameter=param_p1)],
|
162
157
|
actions=[
|
163
158
|
hf.Action(
|
164
|
-
environments=[hf.ActionEnvironment(
|
159
|
+
environments=[hf.ActionEnvironment("null_env")],
|
165
160
|
commands=[hf.Command("Write-Output '<<parameter:p1>>'")],
|
166
161
|
)
|
167
162
|
],
|
@@ -178,7 +173,7 @@ def schema_s4c(
|
|
178
173
|
inputs=[hf.SchemaInput(parameter=param_p1c)],
|
179
174
|
actions=[
|
180
175
|
hf.Action(
|
181
|
-
environments=[hf.ActionEnvironment(
|
176
|
+
environments=[hf.ActionEnvironment("null_env")],
|
182
177
|
commands=[hf.Command("Write-Output '<<parameter:p1c>>'")],
|
183
178
|
)
|
184
179
|
],
|
@@ -1,5 +1,9 @@
|
|
1
|
+
import pytest
|
1
2
|
from hpcflow.app import app as hf
|
2
|
-
from hpcflow.sdk.core.test_utils import
|
3
|
+
from hpcflow.sdk.core.test_utils import (
|
4
|
+
make_schemas,
|
5
|
+
make_test_data_YAML_workflow_template,
|
6
|
+
)
|
3
7
|
|
4
8
|
|
5
9
|
def test_merge_template_level_resources_into_element_set(null_config):
|
@@ -33,3 +37,120 @@ def test_workflow_template_vars(tmp_path, new_null_config):
|
|
33
37
|
variables={"N": num_repeats},
|
34
38
|
)
|
35
39
|
assert wkt.tasks[0].element_sets[0].repeats[0]["number"] == num_repeats
|
40
|
+
|
41
|
+
|
42
|
+
def test_env_preset_merge_simple(null_config):
|
43
|
+
s1 = hf.TaskSchema(
|
44
|
+
objective="s1",
|
45
|
+
actions=[hf.Action(environments=[hf.ActionEnvironment("my_env")])],
|
46
|
+
environment_presets={"my_env_preset": {"my_env": {"version": 1}}},
|
47
|
+
)
|
48
|
+
wkt = hf.WorkflowTemplate(
|
49
|
+
name="test",
|
50
|
+
env_presets="my_env_preset",
|
51
|
+
tasks=[hf.Task(schema=s1)],
|
52
|
+
)
|
53
|
+
assert wkt.tasks[0].element_sets[0].env_preset == "my_env_preset"
|
54
|
+
assert wkt.tasks[0].element_sets[0].resources[0].environments == {
|
55
|
+
"my_env": {"version": 1}
|
56
|
+
}
|
57
|
+
|
58
|
+
|
59
|
+
def test_env_preset_merge_simple_list(null_config):
|
60
|
+
s1 = hf.TaskSchema(
|
61
|
+
objective="s1",
|
62
|
+
actions=[hf.Action(environments=[hf.ActionEnvironment("my_env")])],
|
63
|
+
environment_presets={"my_env_preset": {"my_env": {"version": 1}}},
|
64
|
+
)
|
65
|
+
wkt = hf.WorkflowTemplate(
|
66
|
+
name="test",
|
67
|
+
env_presets=["my_env_preset", "my_other_env_preset"],
|
68
|
+
tasks=[hf.Task(schema=s1)],
|
69
|
+
)
|
70
|
+
assert wkt.tasks[0].element_sets[0].env_preset == "my_env_preset"
|
71
|
+
assert wkt.tasks[0].element_sets[0].resources[0].environments == {
|
72
|
+
"my_env": {"version": 1}
|
73
|
+
}
|
74
|
+
|
75
|
+
|
76
|
+
def test_env_preset_no_merge_existing_env_preset(null_config):
|
77
|
+
s1 = hf.TaskSchema(
|
78
|
+
objective="s1",
|
79
|
+
actions=[hf.Action(environments=[hf.ActionEnvironment("my_env")])],
|
80
|
+
environment_presets={
|
81
|
+
"env_preset_1": {"my_env": {"version": 1}},
|
82
|
+
"env_preset_2": {"my_env": {"version": 2}},
|
83
|
+
},
|
84
|
+
)
|
85
|
+
wkt = hf.WorkflowTemplate(
|
86
|
+
name="test",
|
87
|
+
env_presets="env_preset_1",
|
88
|
+
tasks=[hf.Task(schema=s1, env_preset="env_preset_2")],
|
89
|
+
)
|
90
|
+
assert wkt.tasks[0].element_sets[0].env_preset == "env_preset_2"
|
91
|
+
assert wkt.tasks[0].element_sets[0].resources[0].environments == {
|
92
|
+
"my_env": {"version": 2}
|
93
|
+
}
|
94
|
+
|
95
|
+
|
96
|
+
def test_environments_merge_simple(null_config):
|
97
|
+
s1 = hf.TaskSchema(
|
98
|
+
objective="s1",
|
99
|
+
actions=[hf.Action(environments=[hf.ActionEnvironment("my_env")])],
|
100
|
+
)
|
101
|
+
wkt = hf.WorkflowTemplate(
|
102
|
+
name="test",
|
103
|
+
environments={"my_env": {"version": 1}, "my_other_env": {"version": 2}},
|
104
|
+
tasks=[hf.Task(schema=s1)],
|
105
|
+
)
|
106
|
+
assert wkt.tasks[0].element_sets[0].environments == {"my_env": {"version": 1}}
|
107
|
+
assert wkt.tasks[0].element_sets[0].resources[0].environments == {
|
108
|
+
"my_env": {"version": 1}
|
109
|
+
}
|
110
|
+
|
111
|
+
|
112
|
+
def test_environments_no_merge_existing_envs(null_config):
|
113
|
+
s1 = hf.TaskSchema(
|
114
|
+
objective="s1",
|
115
|
+
actions=[hf.Action(environments=[hf.ActionEnvironment("my_env")])],
|
116
|
+
)
|
117
|
+
wkt = hf.WorkflowTemplate(
|
118
|
+
name="test",
|
119
|
+
environments={"my_env": {"version": 1}, "my_other_env": {"version": 2}},
|
120
|
+
tasks=[hf.Task(schema=s1, environments={"my_env": {"version": 2}})],
|
121
|
+
)
|
122
|
+
assert wkt.tasks[0].element_sets[0].environments == {"my_env": {"version": 2}}
|
123
|
+
assert wkt.tasks[0].element_sets[0].resources[0].environments == {
|
124
|
+
"my_env": {"version": 2}
|
125
|
+
}
|
126
|
+
|
127
|
+
|
128
|
+
def test_raise_on_env_preset_and_environments(null_config):
|
129
|
+
with pytest.raises(ValueError):
|
130
|
+
wkt = hf.WorkflowTemplate(
|
131
|
+
name="test",
|
132
|
+
env_presets="my_env_preset",
|
133
|
+
environments={"my_env": {"version": 1}},
|
134
|
+
)
|
135
|
+
|
136
|
+
|
137
|
+
def test_default_env_preset_used_if_available(null_config):
|
138
|
+
"""Test that if no env_presets or environments are specified at template-level or task
|
139
|
+
level, the default (named as an empty string) env preset is used if available."""
|
140
|
+
|
141
|
+
s1 = hf.TaskSchema(
|
142
|
+
objective="s1",
|
143
|
+
actions=[hf.Action(environments=[hf.ActionEnvironment("my_env")])],
|
144
|
+
environment_presets={
|
145
|
+
"": {"my_env": {"version": 1}},
|
146
|
+
"env_preset_1": {"my_env": {"version": 2}},
|
147
|
+
},
|
148
|
+
)
|
149
|
+
wkt = hf.WorkflowTemplate(
|
150
|
+
name="test",
|
151
|
+
tasks=[hf.Task(schema=s1)],
|
152
|
+
)
|
153
|
+
assert wkt.tasks[0].element_sets[0].env_preset == ""
|
154
|
+
assert wkt.tasks[0].element_sets[0].resources[0].environments == {
|
155
|
+
"my_env": {"version": 1}
|
156
|
+
}
|
@@ -1,7 +1,7 @@
|
|
1
1
|
hpcflow/__init__.py,sha256=WIETuRHeOp2SqUqHUzpjQ-lk9acbYv-6aWOhZPRdlhs,64
|
2
2
|
hpcflow/__pyinstaller/__init__.py,sha256=YOzBlPSck6slucv6lJM9K80JtsJWxXRL00cv6tRj3oc,98
|
3
3
|
hpcflow/__pyinstaller/hook-hpcflow.py,sha256=SeMopsPkhCyd9gqIrzwFNRj3ZlkUlUYl-74QYz61mo4,1089
|
4
|
-
hpcflow/_version.py,sha256=
|
4
|
+
hpcflow/_version.py,sha256=R9jeM3QgojiIsBflXpjJhqXm0gfjNECHSLEUIKEcqB4,26
|
5
5
|
hpcflow/app.py,sha256=d-kgfnZNlqlCi2H8bK26714brD_u3ibN3FaEZgjF9aA,1332
|
6
6
|
hpcflow/cli.py,sha256=G2J3D9v6MnMWOWMMWK6UEKLn_6wnV9lT_qygEBBxg-I,66
|
7
7
|
hpcflow/data/demo_data_manifest/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -13,6 +13,7 @@ hpcflow/data/scripts/demo_task_1_parse_p3.py,sha256=s9t2wrnHBPnxFvEwQDmnAIyK0y1Z
|
|
13
13
|
hpcflow/data/scripts/generate_t1_file_01.py,sha256=QtrtIC-lDZynzhIUxjJPTSAjLffSug-HMWEpnmNpHlI,168
|
14
14
|
hpcflow/data/scripts/main_script_test_direct_in_direct_out.py,sha256=5zKBGKdkY1vPnu2-_rsENRqyJeiCKiH9IjBbAnmeLHg,123
|
15
15
|
hpcflow/data/scripts/main_script_test_direct_in_direct_out_all_iters_test.py,sha256=p22arJAO3rMJjfEA7s0Acm0l0L_XDICJeMoNXpmk79A,463
|
16
|
+
hpcflow/data/scripts/main_script_test_direct_in_direct_out_env_spec.py,sha256=24ibLkkmUlb06mB_xRH0_wIXI-j8SVfsAphBzbtVWus,149
|
16
17
|
hpcflow/data/scripts/main_script_test_direct_in_direct_out_labels.py,sha256=ORVsD5ZVzPUI42kqp2ndDNgYt0yGYc4DgyhNvZZToI0,175
|
17
18
|
hpcflow/data/scripts/main_script_test_direct_sub_param_in_direct_out.py,sha256=pQ-BD1FmqTIHeCaAakCr1M61cWb1Fjinzr1qA3HX3ik,131
|
18
19
|
hpcflow/data/scripts/main_script_test_hdf5_in_obj.py,sha256=ztL0mms6bmB-fuzRpW7bTFRar3fFHP_kIM0e4iX53As,233
|
@@ -34,8 +35,8 @@ hpcflow/data/workflows/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3
|
|
34
35
|
hpcflow/data/workflows/workflow_1.yaml,sha256=lF7Re2SVc_5gQk5AwB0gXaq-n-T5ia4su3zNQ9oMRV0,220
|
35
36
|
hpcflow/examples.ipynb,sha256=cLKp4QsxwwMXRanDnfWY9kqsV23q6G4raOpu6IZXnMw,28553
|
36
37
|
hpcflow/sdk/__init__.py,sha256=SdzVm7dydLv2kmr2tqrH14Gf1GEAEhsEuAuqiGBLHhM,5700
|
37
|
-
hpcflow/sdk/app.py,sha256=
|
38
|
-
hpcflow/sdk/cli.py,sha256=
|
38
|
+
hpcflow/sdk/app.py,sha256=DDIHHvXjjjpCbZ4HQXk7ByuvzUUPsDy7WxS_940bG48,95077
|
39
|
+
hpcflow/sdk/cli.py,sha256=uIzF2YEFQFxmJNFwZM_OZWpzgJK0BnqNY3zwa9sfVzM,35028
|
39
40
|
hpcflow/sdk/cli_common.py,sha256=kDSIe90mxD37lQqvIXDyRauLtTRRnNueSljcRPF_w0M,4738
|
40
41
|
hpcflow/sdk/config/__init__.py,sha256=qJrrxcAN4f1u_RyTtXgz-xlTLwNafE9v0VEMP1x6-bU,70
|
41
42
|
hpcflow/sdk/config/callbacks.py,sha256=7z0rFX7ULUTAo24IJr6kLzPmZCgmkaQ8P5e-AfYTcY8,5339
|
@@ -44,25 +45,25 @@ hpcflow/sdk/config/config.py,sha256=7kUqTsU4-SDW99lWXaDZ-_s03J3SJubcVUjzYvO2Vho,
|
|
44
45
|
hpcflow/sdk/config/config_file.py,sha256=JlMcprj0aujFVk8552ahP2f8EXB0tglMaHwzbcGZH6w,12373
|
45
46
|
hpcflow/sdk/config/errors.py,sha256=2D7HJ1dbyeoD3xk4MuaGSsbJsUyQzyw8kaThEBZfP2I,6876
|
46
47
|
hpcflow/sdk/core/__init__.py,sha256=GcIklEsXy3M5PWpmxyhd2KoI0u6HjXRIjD_aR1bgRjo,215
|
47
|
-
hpcflow/sdk/core/actions.py,sha256=
|
48
|
-
hpcflow/sdk/core/command_files.py,sha256=
|
49
|
-
hpcflow/sdk/core/commands.py,sha256
|
50
|
-
hpcflow/sdk/core/element.py,sha256=
|
48
|
+
hpcflow/sdk/core/actions.py,sha256=66CHgwYAB0oCR6oB5bNbBdUGRGTU3juS1XcMNjj3vP0,77068
|
49
|
+
hpcflow/sdk/core/command_files.py,sha256=GEFlgZv7g9lkFoNgwyDtmlI_90e2TWliCJuJimnJZts,18685
|
50
|
+
hpcflow/sdk/core/commands.py,sha256=5SKxSBuYz8sSvfpp9p5utBwMoQV6Pd2KlGBCpXAHDxE,12741
|
51
|
+
hpcflow/sdk/core/element.py,sha256=hTAR2kxfGSRf4vFgWwrnyuP5z5RnKYOd2X6c6Xd70zo,47048
|
51
52
|
hpcflow/sdk/core/environment.py,sha256=DGUz1NvliKh6opP0IueGHD69rn_8wFLhDsq6kAmEgM4,4849
|
52
|
-
hpcflow/sdk/core/errors.py,sha256=
|
53
|
+
hpcflow/sdk/core/errors.py,sha256=yZnO9xuXFSfjI5lg6cepB38-VIytGdkzjW6mNEx3sh4,8962
|
53
54
|
hpcflow/sdk/core/json_like.py,sha256=LRZsUd1tn8zXC8fESeiXs7Eko-VdnB8zcXiqixKVcZM,18874
|
54
55
|
hpcflow/sdk/core/loop.py,sha256=5Ai_HHCzM21_IOvtgobE8yi_b9dc9jWQijt2LyI3PlM,21865
|
55
|
-
hpcflow/sdk/core/object_list.py,sha256=
|
56
|
+
hpcflow/sdk/core/object_list.py,sha256=HASx7AMniX82bTlROIgIvrjE_DupmwDgxfkfROmI3GA,20168
|
56
57
|
hpcflow/sdk/core/parallel.py,sha256=LI-g-qOuOR1oaEUWVT0qW0hmiP9hsJyUP8_IfSTKYYo,95
|
57
|
-
hpcflow/sdk/core/parameters.py,sha256=
|
58
|
+
hpcflow/sdk/core/parameters.py,sha256=ooJLzXjSFvKQANfDbGCTbs0IrgMyV-BiJ26d44Mswlk,64820
|
58
59
|
hpcflow/sdk/core/rule.py,sha256=3jVsSZCBv4Odxy8QbSbKo9ZcRuU-5DRJoNK8adXCEpI,4567
|
59
60
|
hpcflow/sdk/core/run_dir_files.py,sha256=_k-hA7dlry9GZw5ZXcntFcPGxg07p03hnHSM5S-2G2Y,2197
|
60
|
-
hpcflow/sdk/core/task.py,sha256=
|
61
|
-
hpcflow/sdk/core/task_schema.py,sha256=
|
62
|
-
hpcflow/sdk/core/test_utils.py,sha256=
|
61
|
+
hpcflow/sdk/core/task.py,sha256=_tOVRa533YED0d0P-4cynEjfwgvfrKwYC1fQUdqr2NU,113611
|
62
|
+
hpcflow/sdk/core/task_schema.py,sha256=TipXzC2guu9zilv0En-rHt6lUCTSIj5faI4lVWQdUbA,32346
|
63
|
+
hpcflow/sdk/core/test_utils.py,sha256=UKitv3qvZpSz8vE_HRaJjPDnaOeojy6WVntSskPs03Q,9354
|
63
64
|
hpcflow/sdk/core/utils.py,sha256=pReOwnmuxJqexPUdaA8UMjJ4o8ucllBVVssWjb_LNQc,25651
|
64
65
|
hpcflow/sdk/core/validation.py,sha256=KBKiy5DdfGiGmMaB0HdKTY0V972u5dJzvkYkX0_KtCo,518
|
65
|
-
hpcflow/sdk/core/workflow.py,sha256=
|
66
|
+
hpcflow/sdk/core/workflow.py,sha256=Vat2IX6z0NKAlAmcmowDWuOyYm5wT-MTgob5e46d3XQ,108540
|
66
67
|
hpcflow/sdk/core/zarr_io.py,sha256=V_Zm6uSiuaCbXyHFJUO74K1pAr4Zqrj3aLCBjohCwvs,5724
|
67
68
|
hpcflow/sdk/data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
68
69
|
hpcflow/sdk/data/config_file_schema.yaml,sha256=7i3z_m3GBRtLyB4c7qPngnlQWqcIq1CyCcOysDyq4es,791
|
@@ -71,21 +72,21 @@ hpcflow/sdk/data/environments_spec_schema.yaml,sha256=567S6KYkAzeV4eyUCuSpUr8Lns
|
|
71
72
|
hpcflow/sdk/data/files_spec_schema.yaml,sha256=yNA52Te-6p3a-TzWvrVx_0kEy7ZpJYhrLmgSbZ6UwH8,165
|
72
73
|
hpcflow/sdk/data/parameters_spec_schema.yaml,sha256=Wj7CvG7Ul1nZDtBca-oxeFH_aSZkBSz4oQpnuM7VKls,148
|
73
74
|
hpcflow/sdk/data/task_schema_spec_schema.yaml,sha256=6NROg7x-493bdvRwvY4M71R7POT-tNnmROkEsnnoL4k,93
|
74
|
-
hpcflow/sdk/data/workflow_spec_schema.yaml,sha256=
|
75
|
+
hpcflow/sdk/data/workflow_spec_schema.yaml,sha256=RjMALO0yAjVvnnp9KjzsSFPLkkRHztiuAHhYiXDGyWM,392
|
75
76
|
hpcflow/sdk/demo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
76
|
-
hpcflow/sdk/demo/cli.py,sha256=
|
77
|
+
hpcflow/sdk/demo/cli.py,sha256=TDQjEI6a90Yq9J6TVoLh9PHzWPRdAAx24ci3MQYmo-4,5625
|
77
78
|
hpcflow/sdk/helper/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
78
79
|
hpcflow/sdk/helper/cli.py,sha256=QPVvhXEtY3n87ua_6eBh-osaQeEBgG7g7kUR4jghqtI,3491
|
79
80
|
hpcflow/sdk/helper/helper.py,sha256=MkjYKHox1F4XOpy-20sCCDUTWUbQY84QpWZkcpSq9n8,8143
|
80
81
|
hpcflow/sdk/helper/watcher.py,sha256=hLqgwXtZw-6ihNUUcWYnZw8TCyD_AdhYE7abOrO2r_0,4003
|
81
82
|
hpcflow/sdk/log.py,sha256=_DA5nNS8BoSIFB3d9nrIjbxNDxFflEaL3Ubkq8UYQK8,5735
|
82
83
|
hpcflow/sdk/persistence/__init__.py,sha256=IzWycfiO6rDn_7Kocw4Df5ETe9BSoaqqxG7Yp4FW_ls,900
|
83
|
-
hpcflow/sdk/persistence/base.py,sha256=
|
84
|
+
hpcflow/sdk/persistence/base.py,sha256=JNGFKsg7CEjAAyVUfRnSesHvutBLVlPDnrnKu0YB4bc,60605
|
84
85
|
hpcflow/sdk/persistence/json.py,sha256=5_a73kUmukhNw1LR_evKPKcHo0YcbUzzAtYiS9lN07c,21416
|
85
86
|
hpcflow/sdk/persistence/pending.py,sha256=4V4Xf760GV6JsCl95bm72z8Y78Gw8cbPiBiHZ031orU,24471
|
86
87
|
hpcflow/sdk/persistence/store_resource.py,sha256=oEyocRqa8Uym-57UFosrwate-Xw9O7i2FM82TxHc4m0,4307
|
87
88
|
hpcflow/sdk/persistence/utils.py,sha256=yQT6gS-Ipj2N6grtlV5d0czxxKE0CaeqAkXA1247XGo,1522
|
88
|
-
hpcflow/sdk/persistence/zarr.py,sha256=
|
89
|
+
hpcflow/sdk/persistence/zarr.py,sha256=HJYghGZk4D7OfQ1NRWJqlZ1Poqoq9kWRi5kYipBiGYg,45207
|
89
90
|
hpcflow/sdk/runtime.py,sha256=_in5ojiy9R8fD1ZNbdE6PDmZx6kSaiG9WPB6kVBFE7k,9217
|
90
91
|
hpcflow/sdk/submission/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
91
92
|
hpcflow/sdk/submission/jobscript.py,sha256=Z9NUzkIcmoFw-XAtG8FdLpO2LtMt3czk1v1BnbM1eZw,44678
|
@@ -100,7 +101,7 @@ hpcflow/sdk/submission/shells/base.py,sha256=AszYb14J7QMHlttRFdM9GJkzf6USERhfWJ1
|
|
100
101
|
hpcflow/sdk/submission/shells/bash.py,sha256=gSVS45vdkLm9g9sCa9m21RHIiltVMjYDcdGEz-cF-YU,10903
|
101
102
|
hpcflow/sdk/submission/shells/os_version.py,sha256=o185IsrF6JsBMr9bZU99ZrDguH342DeHWeclUuNrgeU,3182
|
102
103
|
hpcflow/sdk/submission/shells/powershell.py,sha256=uXL5nfBgngtv3nyc9ECKWqzA2wdsxpCoaUGnZZt3VfI,9049
|
103
|
-
hpcflow/sdk/submission/submission.py,sha256=
|
104
|
+
hpcflow/sdk/submission/submission.py,sha256=EGqjxnyAc5MV4aCgo6m5YPZ-Jk4aA8mO8Gh-iOR7lFs,21790
|
104
105
|
hpcflow/sdk/typing.py,sha256=p1duIXcWh5FRNZIGUjsTcnqjGDg2-nCpfNicrut-VPk,327
|
105
106
|
hpcflow/tests/conftest.py,sha256=38FCWeZdwoGI1Nh1cHG9afp2K8HJQ4sUE_h3gE26Qe4,3479
|
106
107
|
hpcflow/tests/data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -112,42 +113,42 @@ hpcflow/tests/data/workflow_1_wsl.yaml,sha256=-n17Ab2-jj03weAeyYOfafrE0eKdPT0YMt
|
|
112
113
|
hpcflow/tests/data/workflow_test_run_abort.yaml,sha256=K0-uOqL_H1ebgrk7ohrcLGcY_VRYw1F16YL_RIwd1PM,1277
|
113
114
|
hpcflow/tests/schedulers/direct_linux/test_direct_linux_submission.py,sha256=pgHHG4iak0tx-1JTtpo8sCIvcZF2XayzEysjqWa_9LM,456
|
114
115
|
hpcflow/tests/schedulers/slurm/test_slurm_submission.py,sha256=IpLq4TBwhK8_3KrvsySctIn4rA_1oyyWLFonzL28o4Q,403
|
115
|
-
hpcflow/tests/scripts/test_main_scripts.py,sha256=
|
116
|
+
hpcflow/tests/scripts/test_main_scripts.py,sha256=6mZvcppeFf9yL7XipYwHKxQvILKzCox4Wcpg2t1DWWc,18737
|
116
117
|
hpcflow/tests/shells/wsl/test_wsl_submission.py,sha256=IrpvsxVfsQCUmS8KKn7w9DiVFR8z_ak_IWyAd1E0KKc,516
|
117
|
-
hpcflow/tests/unit/test_action.py,sha256=
|
118
|
+
hpcflow/tests/unit/test_action.py,sha256=GDyx2ak6H-gvuHAG7-oia39crFcX1bGC3h2M7j8teOs,26334
|
118
119
|
hpcflow/tests/unit/test_action_rule.py,sha256=vX7hMo_9AO5iUGWdDF8uP8rM4jghZidusiY4ZvNcEKo,556
|
119
120
|
hpcflow/tests/unit/test_app.py,sha256=dujHPEpUMAHVWgA-TB0zeACMfmmMgFTDAJgX0Dd3qzQ,2967
|
120
121
|
hpcflow/tests/unit/test_cli.py,sha256=9oQZOlX0z5LC4e2JFLuIgGnUXgmR2RCAtbXR5XRwqJs,288
|
121
122
|
hpcflow/tests/unit/test_command.py,sha256=qf2z0wofxCisza90HMDlb81wsNhByXRAOPMfmRv6paA,22422
|
122
123
|
hpcflow/tests/unit/test_config.py,sha256=yW_tCjCaReCud7Lv4-CLt8mZ7XoaGLGxjozJQoZYZ2c,2507
|
123
124
|
hpcflow/tests/unit/test_config_file.py,sha256=eB1wJimxk7v4vYtwQ1kwPcExdjcN1q-rdsVOeYHN3dQ,4375
|
124
|
-
hpcflow/tests/unit/test_element.py,sha256=
|
125
|
+
hpcflow/tests/unit/test_element.py,sha256=JxqLigktPbdoZz6zV8iXiqPG7-vrdexUpzK5xdbWpzg,20526
|
125
126
|
hpcflow/tests/unit/test_element_iteration.py,sha256=K0oxoDSSKy2JAcAhhE_l63M3u1cus1SsVc5LR2jLe0k,1292
|
126
|
-
hpcflow/tests/unit/test_element_set.py,sha256
|
127
|
+
hpcflow/tests/unit/test_element_set.py,sha256=oAEU_owzp7xqpdR8K0vNdIeDiA6dOLiMM88WIKPtySI,3351
|
127
128
|
hpcflow/tests/unit/test_input_source.py,sha256=QKAqIpMk-idbSvoWMhjFLroXzBtsWFL4yEG3Frkvq70,20467
|
128
129
|
hpcflow/tests/unit/test_input_value.py,sha256=hHoe9rlCbfFvqqkAu4ylu95YVaAhinthXqTCUNEnSm8,5454
|
129
130
|
hpcflow/tests/unit/test_json_like.py,sha256=aGCiGfT-tNiFu3yzW6d_T-oDc5QLwSUgq3pN3jFhyF0,29939
|
130
131
|
hpcflow/tests/unit/test_loop.py,sha256=vBnCnoweiFIi2T68bu6PCQ4yH829pxK6Oe4Comg0bHo,21060
|
131
132
|
hpcflow/tests/unit/test_object_list.py,sha256=nDpbRpCu4XqoYxKMr1_QmDS1s2_6nQOpIEBRHSAXoVg,3049
|
132
|
-
hpcflow/tests/unit/test_parameter.py,sha256=
|
133
|
-
hpcflow/tests/unit/test_persistence.py,sha256=
|
134
|
-
hpcflow/tests/unit/test_resources.py,sha256=
|
133
|
+
hpcflow/tests/unit/test_parameter.py,sha256=g-4pZeIYW0GQyy2rL9JkKBpOC6p1PuGOiq4cbBIwzq0,6132
|
134
|
+
hpcflow/tests/unit/test_persistence.py,sha256=DPXFiuY2v8vj0zZ7299nf-KtgYT8LhHI52fq7UPoa6Y,8128
|
135
|
+
hpcflow/tests/unit/test_resources.py,sha256=2RRFIn5brKyD1UNmkmnvyjPZowa-dokQd0EuCEeo7so,7799
|
135
136
|
hpcflow/tests/unit/test_run.py,sha256=uvG2BbVOD0JJAJCbdh0MMRJME8tVzOm7H4PTLzPLWZY,2613
|
136
137
|
hpcflow/tests/unit/test_runtime.py,sha256=HjHPTS3UkX1LcwheFgpp4px_VlRis8KAE2HoeqxRbA8,322
|
137
|
-
hpcflow/tests/unit/test_schema_input.py,sha256=
|
138
|
+
hpcflow/tests/unit/test_schema_input.py,sha256=738tJjEzBcQ8Z_YTcybVBW7Twy_hXmbPWDO45c2Xun8,11940
|
138
139
|
hpcflow/tests/unit/test_shell.py,sha256=FDtQ9fHRhSKiVtxMJ8BRisoeSvvk8zmJndTB4LlhqGc,3442
|
139
140
|
hpcflow/tests/unit/test_slurm.py,sha256=ewfNuXXUEEelAxcd7MBbAQ-RCvU8xBenHTAyfXYF-R0,1064
|
140
141
|
hpcflow/tests/unit/test_submission.py,sha256=kQ3ksjGlfp47AYuwTA27RDX2XxRU3YxKlKC1ACTbXw8,16682
|
141
|
-
hpcflow/tests/unit/test_task.py,sha256=
|
142
|
-
hpcflow/tests/unit/test_task_schema.py,sha256=
|
142
|
+
hpcflow/tests/unit/test_task.py,sha256=KveejJ6U9fFzMf4Z8mfcOatfyXKQG4fmQ5FCpDqlLco,70195
|
143
|
+
hpcflow/tests/unit/test_task_schema.py,sha256=j5HHxoqq4Mb223jKcusgX-C6-TsmKG0PLjYQ4M01ZHo,4531
|
143
144
|
hpcflow/tests/unit/test_utils.py,sha256=JMhSRZFqmI9ZhREJet9en_y3aRVlQlWE7OKpkdt8SVI,14172
|
144
|
-
hpcflow/tests/unit/test_value_sequence.py,sha256=
|
145
|
-
hpcflow/tests/unit/test_workflow.py,sha256
|
146
|
-
hpcflow/tests/unit/test_workflow_template.py,sha256=
|
145
|
+
hpcflow/tests/unit/test_value_sequence.py,sha256=Xv121bLTnrLpdhmwoJ_yJvXoJ3L-iOWEQBTl9V_aMio,15463
|
146
|
+
hpcflow/tests/unit/test_workflow.py,sha256=Eyr9BhnsFisAPotEAeYrAvxXT1d2i6oshEh1_OxgnSc,22732
|
147
|
+
hpcflow/tests/unit/test_workflow_template.py,sha256=fF7LNveMwCledgncNCRfD9Nd9dL9tSPtlAAOKV3ovAU,5396
|
147
148
|
hpcflow/tests/workflows/test_jobscript.py,sha256=9sp1o0g72JZbv2QlOl5v7wCZEFjotxiIKGNUxVaFgaA,724
|
148
149
|
hpcflow/tests/workflows/test_workflows.py,sha256=xai6FRtGqG4lStJk6KmsqPUSuvqs9FrsBOxMVALshIs,13400
|
149
150
|
hpcflow/viz_demo.ipynb,sha256=1QdnVsk72vihv2L6hOGyk318uEa22ZSgGxQCa7hW2oo,6238
|
150
|
-
hpcflow_new2-0.2.
|
151
|
-
hpcflow_new2-0.2.
|
152
|
-
hpcflow_new2-0.2.
|
153
|
-
hpcflow_new2-0.2.
|
151
|
+
hpcflow_new2-0.2.0a164.dist-info/METADATA,sha256=xONNW9D3OecXiNTVC-RYksxn5h6boxU6PZzFQ43TI0E,2473
|
152
|
+
hpcflow_new2-0.2.0a164.dist-info/WHEEL,sha256=kLuE8m1WYU0Ig0_YEGrXyTtiJvKPpLpDEiChiNyei5Y,88
|
153
|
+
hpcflow_new2-0.2.0a164.dist-info/entry_points.txt,sha256=aoGtCnFdfPcXfBdu2zZyMOJoz6fPgdR0elqsgrE-USU,106
|
154
|
+
hpcflow_new2-0.2.0a164.dist-info/RECORD,,
|
File without changes
|
File without changes
|