hpcflow-new2 0.2.0a169__py3-none-any.whl → 0.2.0a174__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/sdk/app.py +51 -2
- hpcflow/sdk/core/errors.py +8 -0
- hpcflow/sdk/core/loop.py +232 -46
- hpcflow/sdk/core/task.py +19 -0
- hpcflow/sdk/core/test_utils.py +19 -3
- hpcflow/sdk/core/workflow.py +99 -34
- hpcflow/sdk/persistence/base.py +32 -4
- hpcflow/sdk/persistence/json.py +6 -0
- hpcflow/sdk/persistence/pending.py +27 -2
- hpcflow/sdk/persistence/zarr.py +5 -0
- hpcflow/tests/unit/test_app.py +10 -0
- hpcflow/tests/unit/test_group.py +91 -0
- hpcflow/tests/unit/test_input_value.py +10 -0
- hpcflow/tests/unit/test_loop.py +569 -1
- hpcflow/tests/unit/test_parameter.py +18 -0
- hpcflow/tests/unit/test_task.py +284 -2
- hpcflow/tests/unit/test_value_sequence.py +10 -0
- {hpcflow_new2-0.2.0a169.dist-info → hpcflow_new2-0.2.0a174.dist-info}/METADATA +2 -2
- {hpcflow_new2-0.2.0a169.dist-info → hpcflow_new2-0.2.0a174.dist-info}/RECORD +22 -21
- {hpcflow_new2-0.2.0a169.dist-info → hpcflow_new2-0.2.0a174.dist-info}/WHEEL +0 -0
- {hpcflow_new2-0.2.0a169.dist-info → hpcflow_new2-0.2.0a174.dist-info}/entry_points.txt +0 -0
hpcflow/tests/unit/test_task.py
CHANGED
@@ -404,7 +404,7 @@ def test_task_get_available_task_input_sources_expected_return_two_params_one_ou
|
|
404
404
|
assert available == available_exp
|
405
405
|
|
406
406
|
|
407
|
-
def
|
407
|
+
def test_task_get_available_task_input_sources_one_parameter_extravaganza(
|
408
408
|
tmp_path,
|
409
409
|
):
|
410
410
|
"""Test an input source is excluded if it is not locally defined (meaning it comes
|
@@ -433,6 +433,12 @@ def test_task_get_available_task_input_sources_input_source_excluded_if_not_loca
|
|
433
433
|
task_source_type=hf.TaskSourceType.OUTPUT,
|
434
434
|
element_iters=[1],
|
435
435
|
),
|
436
|
+
hf.InputSource(
|
437
|
+
source_type=hf.InputSourceType.TASK,
|
438
|
+
task_ref=1,
|
439
|
+
task_source_type=hf.TaskSourceType.INPUT,
|
440
|
+
element_iters=[1],
|
441
|
+
),
|
436
442
|
hf.InputSource(
|
437
443
|
source_type=hf.InputSourceType.TASK,
|
438
444
|
task_ref=0,
|
@@ -1194,7 +1200,7 @@ def test_task_add_elements_multi_task_dependence_expected_workflow_num_elements(
|
|
1194
1200
|
},
|
1195
1201
|
)
|
1196
1202
|
num_elems_new = wk.num_elements
|
1197
|
-
assert num_elems_new - num_elems ==
|
1203
|
+
assert num_elems_new - num_elems == 7
|
1198
1204
|
|
1199
1205
|
|
1200
1206
|
def test_task_add_elements_multi_task_dependence_expected_task_num_elements(
|
@@ -1221,6 +1227,39 @@ def test_task_add_elements_multi_task_dependence_expected_task_num_elements(
|
|
1221
1227
|
)
|
1222
1228
|
num_elems_new = [task.num_elements for task in wk.tasks]
|
1223
1229
|
num_elems_diff = [i - j for i, j in zip(num_elems_new, num_elems)]
|
1230
|
+
assert num_elems_diff == [1, 2, 4]
|
1231
|
+
|
1232
|
+
|
1233
|
+
def test_task_add_elements_multi_task_dependence_expected_task_num_elements_custom_input_source(
|
1234
|
+
tmp_path, param_p1
|
1235
|
+
):
|
1236
|
+
wk = make_workflow(
|
1237
|
+
schemas_spec=[
|
1238
|
+
[{"p1": None}, ("p3",), "t1"],
|
1239
|
+
[{"p2": None, "p3": None}, ("p4",), "t2"],
|
1240
|
+
[{"p3": None, "p4": None}, (), "t3"],
|
1241
|
+
],
|
1242
|
+
local_inputs={0: ("p1",)},
|
1243
|
+
local_sequences={1: [("inputs.p2", 2, 1)]},
|
1244
|
+
nesting_orders={2: {"inputs.p3": 0, "inputs.p4": 1}},
|
1245
|
+
input_sources={
|
1246
|
+
2: {"p3": [hf.InputSource.task(0)]}
|
1247
|
+
}, # override default (t2 input)
|
1248
|
+
path=tmp_path,
|
1249
|
+
)
|
1250
|
+
num_elems = [task.num_elements for task in wk.tasks]
|
1251
|
+
wk.tasks.t1.add_elements(
|
1252
|
+
inputs=[hf.InputValue(param_p1, 102)],
|
1253
|
+
propagate_to={
|
1254
|
+
"t2": {"nesting_order": {"inputs.p2": 0, "inputs.p3": 1}},
|
1255
|
+
"t3": {
|
1256
|
+
"nesting_order": {"inputs.p3": 0, "inputs.p4": 1},
|
1257
|
+
"input_sources": {"p3": [hf.InputSource.task(0)]}, # override default
|
1258
|
+
},
|
1259
|
+
},
|
1260
|
+
)
|
1261
|
+
num_elems_new = [task.num_elements for task in wk.tasks]
|
1262
|
+
num_elems_diff = [i - j for i, j in zip(num_elems_new, num_elems)]
|
1224
1263
|
assert num_elems_diff == [1, 2, 2]
|
1225
1264
|
|
1226
1265
|
|
@@ -1264,6 +1303,60 @@ def test_task_add_elements_multi_task_dependence_expected_new_data_index(
|
|
1264
1303
|
+ t3_num_elems_new
|
1265
1304
|
]
|
1266
1305
|
|
1306
|
+
assert (
|
1307
|
+
new_elems_t1 == [["inputs.p1", "outputs.p3", "resources.any"]]
|
1308
|
+
and new_elems_t2
|
1309
|
+
== [["inputs.p2", "inputs.p3", "outputs.p4", "resources.any"]] * 2
|
1310
|
+
and new_elems_t3 == [["inputs.p3", "inputs.p4", "resources.any"]] * 4
|
1311
|
+
)
|
1312
|
+
|
1313
|
+
|
1314
|
+
def test_task_add_elements_multi_task_dependence_expected_new_data_index_custom_input_source(
|
1315
|
+
tmp_path, param_p1
|
1316
|
+
):
|
1317
|
+
wk = make_workflow(
|
1318
|
+
schemas_spec=[
|
1319
|
+
[{"p1": None}, ("p3",), "t1"],
|
1320
|
+
[{"p2": None, "p3": None}, ("p4",), "t2"],
|
1321
|
+
[{"p3": None, "p4": None}, (), "t3"],
|
1322
|
+
],
|
1323
|
+
local_inputs={0: ("p1",)},
|
1324
|
+
local_sequences={1: [("inputs.p2", 2, 1)]},
|
1325
|
+
nesting_orders={2: {"inputs.p3": 0, "inputs.p4": 1}},
|
1326
|
+
input_sources={
|
1327
|
+
2: {"p3": [hf.InputSource.task(0)]}
|
1328
|
+
}, # override default (t2 input)
|
1329
|
+
path=tmp_path,
|
1330
|
+
)
|
1331
|
+
t1_num_elems = wk.tasks.t1.num_elements
|
1332
|
+
t2_num_elems = wk.tasks.t2.num_elements
|
1333
|
+
t3_num_elems = wk.tasks.t3.num_elements
|
1334
|
+
wk.tasks.t1.add_elements(
|
1335
|
+
inputs=[hf.InputValue(param_p1, 102)],
|
1336
|
+
propagate_to={
|
1337
|
+
"t2": {"nesting_order": {"inputs.p2": 0, "inputs.p3": 1}},
|
1338
|
+
"t3": {
|
1339
|
+
"nesting_order": {"inputs.p3": 0, "inputs.p4": 1},
|
1340
|
+
"input_sources": {"p3": [hf.InputSource.task(0)]}, # override default
|
1341
|
+
},
|
1342
|
+
},
|
1343
|
+
)
|
1344
|
+
t1_num_elems_new = wk.tasks.t1.num_elements
|
1345
|
+
t2_num_elems_new = wk.tasks.t2.num_elements
|
1346
|
+
t3_num_elems_new = wk.tasks.t3.num_elements
|
1347
|
+
data_index_new = [sorted(i.get_data_idx().keys()) for i in wk.elements()]
|
1348
|
+
new_elems_t1 = data_index_new[t1_num_elems:t1_num_elems_new]
|
1349
|
+
new_elems_t2 = data_index_new[
|
1350
|
+
t1_num_elems_new + t2_num_elems : t1_num_elems_new + t2_num_elems_new
|
1351
|
+
]
|
1352
|
+
new_elems_t3 = data_index_new[
|
1353
|
+
t1_num_elems_new
|
1354
|
+
+ t2_num_elems_new
|
1355
|
+
+ t3_num_elems : t1_num_elems_new
|
1356
|
+
+ t2_num_elems_new
|
1357
|
+
+ t3_num_elems_new
|
1358
|
+
]
|
1359
|
+
|
1267
1360
|
assert (
|
1268
1361
|
new_elems_t1 == [["inputs.p1", "outputs.p3", "resources.any"]]
|
1269
1362
|
and new_elems_t2
|
@@ -1297,6 +1390,40 @@ def test_task_add_elements_sequence_multi_task_dependence_workflow_num_elements(
|
|
1297
1390
|
},
|
1298
1391
|
)
|
1299
1392
|
num_elems_new = wk.num_elements
|
1393
|
+
assert num_elems_new - num_elems == 45
|
1394
|
+
|
1395
|
+
|
1396
|
+
def test_task_add_elements_sequence_multi_task_dependence_workflow_num_elements_custom_input_source(
|
1397
|
+
tmp_path,
|
1398
|
+
):
|
1399
|
+
wk = make_workflow(
|
1400
|
+
schemas_spec=[
|
1401
|
+
[{"p1": None}, ("p3",), "t1"],
|
1402
|
+
[{"p2": None, "p3": None}, ("p4",), "t2"],
|
1403
|
+
[{"p3": None, "p4": None}, (), "t3"],
|
1404
|
+
],
|
1405
|
+
local_inputs={0: ("p1",)},
|
1406
|
+
local_sequences={1: [("inputs.p2", 2, 1)]},
|
1407
|
+
nesting_orders={2: {"inputs.p3": 0, "inputs.p4": 1}},
|
1408
|
+
input_sources={
|
1409
|
+
2: {"p3": [hf.InputSource.task(0)]}
|
1410
|
+
}, # override default (t2 input)
|
1411
|
+
path=tmp_path,
|
1412
|
+
)
|
1413
|
+
num_elems = wk.num_elements
|
1414
|
+
wk.tasks.t1.add_elements(
|
1415
|
+
sequences=[
|
1416
|
+
hf.ValueSequence("inputs.p1", values=[102, 103, 104], nesting_order=1)
|
1417
|
+
],
|
1418
|
+
propagate_to={
|
1419
|
+
"t2": {"nesting_order": {"inputs.p2": 0, "inputs.p3": 1}},
|
1420
|
+
"t3": {
|
1421
|
+
"nesting_order": {"inputs.p3": 0, "inputs.p4": 1},
|
1422
|
+
"input_sources": {"p3": [hf.InputSource.task(0)]}, # override default
|
1423
|
+
},
|
1424
|
+
},
|
1425
|
+
)
|
1426
|
+
num_elems_new = wk.num_elements
|
1300
1427
|
assert num_elems_new - num_elems == 27
|
1301
1428
|
|
1302
1429
|
|
@@ -1326,6 +1453,41 @@ def test_task_add_elements_sequence_multi_task_dependence_expected_task_num_elem
|
|
1326
1453
|
)
|
1327
1454
|
num_elems_new = [task.num_elements for task in wk.tasks]
|
1328
1455
|
num_elems_diff = [i - j for i, j in zip(num_elems_new, num_elems)]
|
1456
|
+
assert num_elems_diff == [3, 6, 36]
|
1457
|
+
|
1458
|
+
|
1459
|
+
def test_task_add_elements_sequence_multi_task_dependence_expected_task_num_elements_custom_input_source(
|
1460
|
+
tmp_path,
|
1461
|
+
):
|
1462
|
+
wk = make_workflow(
|
1463
|
+
schemas_spec=[
|
1464
|
+
[{"p1": None}, ("p3",), "t1"],
|
1465
|
+
[{"p2": None, "p3": None}, ("p4",), "t2"],
|
1466
|
+
[{"p3": None, "p4": None}, (), "t3"],
|
1467
|
+
],
|
1468
|
+
local_inputs={0: ("p1",)},
|
1469
|
+
local_sequences={1: [("inputs.p2", 2, 1)]},
|
1470
|
+
nesting_orders={2: {"inputs.p3": 0, "inputs.p4": 1}},
|
1471
|
+
input_sources={
|
1472
|
+
2: {"p3": [hf.InputSource.task(0)]}
|
1473
|
+
}, # override default (t2 input)
|
1474
|
+
path=tmp_path,
|
1475
|
+
)
|
1476
|
+
num_elems = [task.num_elements for task in wk.tasks]
|
1477
|
+
wk.tasks.t1.add_elements(
|
1478
|
+
sequences=[
|
1479
|
+
hf.ValueSequence("inputs.p1", values=[102, 103, 104], nesting_order=1)
|
1480
|
+
],
|
1481
|
+
propagate_to={
|
1482
|
+
"t2": {"nesting_order": {"inputs.p2": 0, "inputs.p3": 1}},
|
1483
|
+
"t3": {
|
1484
|
+
"nesting_order": {"inputs.p3": 0, "inputs.p4": 1},
|
1485
|
+
"input_sources": {"p3": [hf.InputSource.task(0)]}, # override default
|
1486
|
+
},
|
1487
|
+
},
|
1488
|
+
)
|
1489
|
+
num_elems_new = [task.num_elements for task in wk.tasks]
|
1490
|
+
num_elems_diff = [i - j for i, j in zip(num_elems_new, num_elems)]
|
1329
1491
|
assert num_elems_diff == [3, 6, 18]
|
1330
1492
|
|
1331
1493
|
|
@@ -1359,6 +1521,62 @@ def test_task_add_elements_sequence_multi_task_dependence_expected_new_data_inde
|
|
1359
1521
|
t2_num_elems_new = wk.tasks.t2.num_elements
|
1360
1522
|
t3_num_elems_new = wk.tasks.t3.num_elements
|
1361
1523
|
|
1524
|
+
data_index_new = [sorted(i.get_data_idx().keys()) for i in wk.elements()]
|
1525
|
+
new_elems_t1 = data_index_new[t1_num_elems:t1_num_elems_new]
|
1526
|
+
new_elems_t2 = data_index_new[
|
1527
|
+
t1_num_elems_new + t2_num_elems : t1_num_elems_new + t2_num_elems_new
|
1528
|
+
]
|
1529
|
+
new_elems_t3 = data_index_new[
|
1530
|
+
t1_num_elems_new
|
1531
|
+
+ t2_num_elems_new
|
1532
|
+
+ t3_num_elems : t1_num_elems_new
|
1533
|
+
+ t2_num_elems_new
|
1534
|
+
+ t3_num_elems_new
|
1535
|
+
]
|
1536
|
+
assert (
|
1537
|
+
new_elems_t1 == [["inputs.p1", "outputs.p3", "resources.any"]] * 3
|
1538
|
+
and new_elems_t2
|
1539
|
+
== [["inputs.p2", "inputs.p3", "outputs.p4", "resources.any"]] * 6
|
1540
|
+
and new_elems_t3 == [["inputs.p3", "inputs.p4", "resources.any"]] * 36
|
1541
|
+
)
|
1542
|
+
|
1543
|
+
|
1544
|
+
def test_task_add_elements_sequence_multi_task_dependence_expected_new_data_index_custom_input_source(
|
1545
|
+
tmp_path,
|
1546
|
+
):
|
1547
|
+
wk = make_workflow(
|
1548
|
+
schemas_spec=[
|
1549
|
+
[{"p1": None}, ("p3",), "t1"],
|
1550
|
+
[{"p2": None, "p3": None}, ("p4",), "t2"],
|
1551
|
+
[{"p3": None, "p4": None}, (), "t3"],
|
1552
|
+
],
|
1553
|
+
local_inputs={0: ("p1",)},
|
1554
|
+
local_sequences={1: [("inputs.p2", 2, 1)]},
|
1555
|
+
nesting_orders={2: {"inputs.p3": 0, "inputs.p4": 1}},
|
1556
|
+
input_sources={
|
1557
|
+
2: {"p3": [hf.InputSource.task(0)]}
|
1558
|
+
}, # override default (t2 input)
|
1559
|
+
path=tmp_path,
|
1560
|
+
)
|
1561
|
+
t1_num_elems = wk.tasks.t1.num_elements
|
1562
|
+
t2_num_elems = wk.tasks.t2.num_elements
|
1563
|
+
t3_num_elems = wk.tasks.t3.num_elements
|
1564
|
+
wk.tasks.t1.add_elements(
|
1565
|
+
sequences=[
|
1566
|
+
hf.ValueSequence("inputs.p1", values=[102, 103, 104], nesting_order=1)
|
1567
|
+
],
|
1568
|
+
propagate_to={
|
1569
|
+
"t2": {"nesting_order": {"inputs.p2": 0, "inputs.p3": 1}},
|
1570
|
+
"t3": {
|
1571
|
+
"nesting_order": {"inputs.p3": 0, "inputs.p4": 1},
|
1572
|
+
"input_sources": {"p3": [hf.InputSource.task(0)]}, # override default
|
1573
|
+
},
|
1574
|
+
},
|
1575
|
+
)
|
1576
|
+
t1_num_elems_new = wk.tasks.t1.num_elements
|
1577
|
+
t2_num_elems_new = wk.tasks.t2.num_elements
|
1578
|
+
t3_num_elems_new = wk.tasks.t3.num_elements
|
1579
|
+
|
1362
1580
|
data_index_new = [sorted(i.get_data_idx().keys()) for i in wk.elements()]
|
1363
1581
|
new_elems_t1 = data_index_new[t1_num_elems:t1_num_elems_new]
|
1364
1582
|
new_elems_t2 = data_index_new[
|
@@ -2176,3 +2394,67 @@ def test_raise_UnknownEnvironmentPresetError_sequence(null_config):
|
|
2176
2394
|
seq = hf.ValueSequence(path="env_preset", values=["my_env_preset"])
|
2177
2395
|
with pytest.raises(UnknownEnvironmentPresetError):
|
2178
2396
|
hf.Task(schema=ts, sequences=[seq])
|
2397
|
+
|
2398
|
+
|
2399
|
+
def test_group_values_input_and_output_source_from_upstream(null_config, tmp_path):
|
2400
|
+
"""
|
2401
|
+
| task | inputs | outputs | group | num_elements |
|
2402
|
+
| ---- | ------ | ------- | -------- | ---------------------------|
|
2403
|
+
| t1 | p0 | p1 | - | 3 |
|
2404
|
+
| t2 | p1 | p2 | my_group | 3 |
|
2405
|
+
| t3 | p1, p2 | - | - | 1 (grouped p1, grouped p2) |
|
2406
|
+
"""
|
2407
|
+
s1 = hf.TaskSchema(
|
2408
|
+
objective="t1",
|
2409
|
+
inputs=[hf.SchemaInput("p0")],
|
2410
|
+
outputs=[hf.SchemaOutput("p1")],
|
2411
|
+
actions=[
|
2412
|
+
hf.Action(
|
2413
|
+
commands=[
|
2414
|
+
hf.Command(
|
2415
|
+
command="echo <<parameter:p0>> + 1",
|
2416
|
+
stdout="<<parameter:p1>>",
|
2417
|
+
)
|
2418
|
+
]
|
2419
|
+
)
|
2420
|
+
],
|
2421
|
+
)
|
2422
|
+
s2 = hf.TaskSchema(
|
2423
|
+
objective="t2",
|
2424
|
+
inputs=[hf.SchemaInput("p1")],
|
2425
|
+
outputs=[hf.SchemaOutput("p2")],
|
2426
|
+
actions=[
|
2427
|
+
hf.Action(
|
2428
|
+
commands=[
|
2429
|
+
hf.Command(
|
2430
|
+
command="echo <<parameter:p1>> + 1",
|
2431
|
+
stdout="<<parameter:p2>>",
|
2432
|
+
)
|
2433
|
+
]
|
2434
|
+
)
|
2435
|
+
],
|
2436
|
+
)
|
2437
|
+
s3 = hf.TaskSchema(
|
2438
|
+
objective="t3",
|
2439
|
+
inputs=[
|
2440
|
+
hf.SchemaInput("p1", group="my_group"),
|
2441
|
+
hf.SchemaInput("p2", group="my_group"),
|
2442
|
+
],
|
2443
|
+
)
|
2444
|
+
t1 = hf.Task(
|
2445
|
+
schema=s1,
|
2446
|
+
inputs={"p0": 1},
|
2447
|
+
repeats=3,
|
2448
|
+
)
|
2449
|
+
t2 = hf.Task(schema=s2, groups=[hf.ElementGroup("my_group")])
|
2450
|
+
t3 = hf.Task(schema=s3)
|
2451
|
+
wk = hf.Workflow.from_template_data(
|
2452
|
+
template_name="test_group",
|
2453
|
+
tasks=[t1, t2, t3],
|
2454
|
+
path=tmp_path,
|
2455
|
+
)
|
2456
|
+
assert wk.tasks[0].num_elements == 3
|
2457
|
+
assert wk.tasks[1].num_elements == 3
|
2458
|
+
assert wk.tasks[2].num_elements == 1
|
2459
|
+
assert [i.value for i in wk.tasks[2].inputs.p1] == [[None, None, None]]
|
2460
|
+
assert [i.value for i in wk.tasks[2].inputs.p2] == [[None, None, None]]
|
@@ -1,5 +1,7 @@
|
|
1
|
+
import sys
|
1
2
|
import numpy as np
|
2
3
|
import pytest
|
4
|
+
import requests
|
3
5
|
|
4
6
|
from hpcflow.app import app as hf
|
5
7
|
from hpcflow.sdk.core.test_utils import P1_parameter_cls as P1
|
@@ -407,6 +409,14 @@ def test_nesting_order_three_seqs_all_decimal(null_config, tmp_path):
|
|
407
409
|
assert wk.tasks.test.elements[5].get("inputs") == {"p1": "b", "p2": "e", "p3": "k"}
|
408
410
|
|
409
411
|
|
412
|
+
@pytest.mark.xfail(
|
413
|
+
condition=sys.platform == "darwin",
|
414
|
+
raises=requests.exceptions.HTTPError,
|
415
|
+
reason=(
|
416
|
+
"GHA MacOS runners use the same IP address, so we get rate limited when "
|
417
|
+
"retrieving demo data from GitHub."
|
418
|
+
),
|
419
|
+
)
|
410
420
|
def test_demo_data_values(null_config):
|
411
421
|
name = "text_file.txt"
|
412
422
|
assert hf.ValueSequence(
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: hpcflow-new2
|
3
|
-
Version: 0.2.
|
3
|
+
Version: 0.2.0a174
|
4
4
|
Summary: Computational workflow management
|
5
5
|
License: MIT
|
6
6
|
Author: aplowman
|
@@ -22,7 +22,7 @@ Requires-Dist: msgpack (>=1.0.4,<2.0.0)
|
|
22
22
|
Requires-Dist: numpy (>=1.24.4,<2.0.0) ; python_version < "3.9"
|
23
23
|
Requires-Dist: numpy (>=1.26.4,<2.0.0) ; python_version >= "3.9"
|
24
24
|
Requires-Dist: paramiko (>=3.2.0,<4.0.0)
|
25
|
-
Requires-Dist: platformdirs (>=2.
|
25
|
+
Requires-Dist: platformdirs (>=4.2.1,<5.0.0)
|
26
26
|
Requires-Dist: psutil (>=5.9.4,<6.0.0)
|
27
27
|
Requires-Dist: pytest (>=7.2.0,<8.0.0) ; extra == "test"
|
28
28
|
Requires-Dist: requests (>=2.31.0,<3.0.0)
|
@@ -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=g1tMizJfeCe4QtSZFGZBHIWwzHvg3y3320eKsFMYrPY,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
|
@@ -35,7 +35,7 @@ hpcflow/data/workflows/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3
|
|
35
35
|
hpcflow/data/workflows/workflow_1.yaml,sha256=lF7Re2SVc_5gQk5AwB0gXaq-n-T5ia4su3zNQ9oMRV0,220
|
36
36
|
hpcflow/examples.ipynb,sha256=cLKp4QsxwwMXRanDnfWY9kqsV23q6G4raOpu6IZXnMw,28553
|
37
37
|
hpcflow/sdk/__init__.py,sha256=SdzVm7dydLv2kmr2tqrH14Gf1GEAEhsEuAuqiGBLHhM,5700
|
38
|
-
hpcflow/sdk/app.py,sha256=
|
38
|
+
hpcflow/sdk/app.py,sha256=lS9sl6YEbB02LZbltlgs8neokZNmxfl4aT46-2UuDTQ,96661
|
39
39
|
hpcflow/sdk/cli.py,sha256=uIzF2YEFQFxmJNFwZM_OZWpzgJK0BnqNY3zwa9sfVzM,35028
|
40
40
|
hpcflow/sdk/cli_common.py,sha256=kDSIe90mxD37lQqvIXDyRauLtTRRnNueSljcRPF_w0M,4738
|
41
41
|
hpcflow/sdk/config/__init__.py,sha256=qJrrxcAN4f1u_RyTtXgz-xlTLwNafE9v0VEMP1x6-bU,70
|
@@ -50,20 +50,20 @@ hpcflow/sdk/core/command_files.py,sha256=GEFlgZv7g9lkFoNgwyDtmlI_90e2TWliCJuJimn
|
|
50
50
|
hpcflow/sdk/core/commands.py,sha256=5SKxSBuYz8sSvfpp9p5utBwMoQV6Pd2KlGBCpXAHDxE,12741
|
51
51
|
hpcflow/sdk/core/element.py,sha256=hTAR2kxfGSRf4vFgWwrnyuP5z5RnKYOd2X6c6Xd70zo,47048
|
52
52
|
hpcflow/sdk/core/environment.py,sha256=DGUz1NvliKh6opP0IueGHD69rn_8wFLhDsq6kAmEgM4,4849
|
53
|
-
hpcflow/sdk/core/errors.py,sha256=
|
53
|
+
hpcflow/sdk/core/errors.py,sha256=ku4wwsrmxBpJBFflUeZD6vrmAqgC7H02VdlRG4aAGqQ,9292
|
54
54
|
hpcflow/sdk/core/json_like.py,sha256=LRZsUd1tn8zXC8fESeiXs7Eko-VdnB8zcXiqixKVcZM,18874
|
55
|
-
hpcflow/sdk/core/loop.py,sha256=
|
55
|
+
hpcflow/sdk/core/loop.py,sha256=7WHif9U3KenNqICN5Ibq76WCwEn9xzBo0jnROwv4z-4,30051
|
56
56
|
hpcflow/sdk/core/object_list.py,sha256=HASx7AMniX82bTlROIgIvrjE_DupmwDgxfkfROmI3GA,20168
|
57
57
|
hpcflow/sdk/core/parallel.py,sha256=LI-g-qOuOR1oaEUWVT0qW0hmiP9hsJyUP8_IfSTKYYo,95
|
58
58
|
hpcflow/sdk/core/parameters.py,sha256=0h1M-fXqOVgruyM0Au7Fo38cUbHgDNEPd1Alb1FULxE,65588
|
59
59
|
hpcflow/sdk/core/rule.py,sha256=3jVsSZCBv4Odxy8QbSbKo9ZcRuU-5DRJoNK8adXCEpI,4567
|
60
60
|
hpcflow/sdk/core/run_dir_files.py,sha256=_k-hA7dlry9GZw5ZXcntFcPGxg07p03hnHSM5S-2G2Y,2197
|
61
|
-
hpcflow/sdk/core/task.py,sha256
|
61
|
+
hpcflow/sdk/core/task.py,sha256=-Ugs13wl76FxBv9q0Ik2dWGSDPZQ4KR4qvwmrfsAEgE,122247
|
62
62
|
hpcflow/sdk/core/task_schema.py,sha256=TipXzC2guu9zilv0En-rHt6lUCTSIj5faI4lVWQdUbA,32346
|
63
|
-
hpcflow/sdk/core/test_utils.py,sha256=
|
63
|
+
hpcflow/sdk/core/test_utils.py,sha256=IhCLvRzDuG4hVNGeGulGKfZEgg7Ow-vgiEqewzMiaZ4,9762
|
64
64
|
hpcflow/sdk/core/utils.py,sha256=pReOwnmuxJqexPUdaA8UMjJ4o8ucllBVVssWjb_LNQc,25651
|
65
65
|
hpcflow/sdk/core/validation.py,sha256=KBKiy5DdfGiGmMaB0HdKTY0V972u5dJzvkYkX0_KtCo,518
|
66
|
-
hpcflow/sdk/core/workflow.py,sha256=
|
66
|
+
hpcflow/sdk/core/workflow.py,sha256=oi9QdBgAMSr62c6HQx2OXw3ljRmxhEb_3YNXGCwIbBE,111164
|
67
67
|
hpcflow/sdk/core/zarr_io.py,sha256=V_Zm6uSiuaCbXyHFJUO74K1pAr4Zqrj3aLCBjohCwvs,5724
|
68
68
|
hpcflow/sdk/data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
69
69
|
hpcflow/sdk/data/config_file_schema.yaml,sha256=7i3z_m3GBRtLyB4c7qPngnlQWqcIq1CyCcOysDyq4es,791
|
@@ -81,12 +81,12 @@ hpcflow/sdk/helper/helper.py,sha256=MkjYKHox1F4XOpy-20sCCDUTWUbQY84QpWZkcpSq9n8,
|
|
81
81
|
hpcflow/sdk/helper/watcher.py,sha256=hLqgwXtZw-6ihNUUcWYnZw8TCyD_AdhYE7abOrO2r_0,4003
|
82
82
|
hpcflow/sdk/log.py,sha256=_DA5nNS8BoSIFB3d9nrIjbxNDxFflEaL3Ubkq8UYQK8,5735
|
83
83
|
hpcflow/sdk/persistence/__init__.py,sha256=IzWycfiO6rDn_7Kocw4Df5ETe9BSoaqqxG7Yp4FW_ls,900
|
84
|
-
hpcflow/sdk/persistence/base.py,sha256=
|
85
|
-
hpcflow/sdk/persistence/json.py,sha256=
|
86
|
-
hpcflow/sdk/persistence/pending.py,sha256=
|
84
|
+
hpcflow/sdk/persistence/base.py,sha256=cmfvgUQAp6BVcOL04IemzmtPvzSJfVd2nQFvgp2VLyU,61718
|
85
|
+
hpcflow/sdk/persistence/json.py,sha256=XD4km426WZ6F6YCrnw87ntS_Qfg3qa9CAyK2GQmJNFU,21700
|
86
|
+
hpcflow/sdk/persistence/pending.py,sha256=ZaiY_I6c0CpXGPOkHfs595GtDvx8daP4nqVZGSJ6tS4,25566
|
87
87
|
hpcflow/sdk/persistence/store_resource.py,sha256=oEyocRqa8Uym-57UFosrwate-Xw9O7i2FM82TxHc4m0,4307
|
88
88
|
hpcflow/sdk/persistence/utils.py,sha256=yQT6gS-Ipj2N6grtlV5d0czxxKE0CaeqAkXA1247XGo,1522
|
89
|
-
hpcflow/sdk/persistence/zarr.py,sha256=
|
89
|
+
hpcflow/sdk/persistence/zarr.py,sha256=cyhLVaHUVLuFg-sokfD8L2YOMvfCCk1KCawRD9_qg30,45452
|
90
90
|
hpcflow/sdk/runtime.py,sha256=_in5ojiy9R8fD1ZNbdE6PDmZx6kSaiG9WPB6kVBFE7k,9217
|
91
91
|
hpcflow/sdk/submission/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
92
92
|
hpcflow/sdk/submission/jobscript.py,sha256=Z9NUzkIcmoFw-XAtG8FdLpO2LtMt3czk1v1BnbM1eZw,44678
|
@@ -117,7 +117,7 @@ hpcflow/tests/scripts/test_main_scripts.py,sha256=6mZvcppeFf9yL7XipYwHKxQvILKzCo
|
|
117
117
|
hpcflow/tests/shells/wsl/test_wsl_submission.py,sha256=IrpvsxVfsQCUmS8KKn7w9DiVFR8z_ak_IWyAd1E0KKc,516
|
118
118
|
hpcflow/tests/unit/test_action.py,sha256=GDyx2ak6H-gvuHAG7-oia39crFcX1bGC3h2M7j8teOs,26334
|
119
119
|
hpcflow/tests/unit/test_action_rule.py,sha256=vX7hMo_9AO5iUGWdDF8uP8rM4jghZidusiY4ZvNcEKo,556
|
120
|
-
hpcflow/tests/unit/test_app.py,sha256=
|
120
|
+
hpcflow/tests/unit/test_app.py,sha256=1JVEuGlPHhO3igkbHsKAQOkBrRbXD-YFsRcyKD3uF2o,3244
|
121
121
|
hpcflow/tests/unit/test_cli.py,sha256=9oQZOlX0z5LC4e2JFLuIgGnUXgmR2RCAtbXR5XRwqJs,288
|
122
122
|
hpcflow/tests/unit/test_command.py,sha256=qf2z0wofxCisza90HMDlb81wsNhByXRAOPMfmRv6paA,22422
|
123
123
|
hpcflow/tests/unit/test_config.py,sha256=yW_tCjCaReCud7Lv4-CLt8mZ7XoaGLGxjozJQoZYZ2c,2507
|
@@ -125,12 +125,13 @@ hpcflow/tests/unit/test_config_file.py,sha256=eB1wJimxk7v4vYtwQ1kwPcExdjcN1q-rds
|
|
125
125
|
hpcflow/tests/unit/test_element.py,sha256=JxqLigktPbdoZz6zV8iXiqPG7-vrdexUpzK5xdbWpzg,20526
|
126
126
|
hpcflow/tests/unit/test_element_iteration.py,sha256=K0oxoDSSKy2JAcAhhE_l63M3u1cus1SsVc5LR2jLe0k,1292
|
127
127
|
hpcflow/tests/unit/test_element_set.py,sha256=oy0KTIwUKm5NNnBYVNNjLcYfipb3sZWDldjE1klSGUU,3709
|
128
|
+
hpcflow/tests/unit/test_group.py,sha256=J7Gx6BdzD2uoRUnBow7L_OfdfLUZi7sv5AZd1ysstnk,2588
|
128
129
|
hpcflow/tests/unit/test_input_source.py,sha256=pYm1V4kBsBIFstKDcrbwUiDLb82rr7ITcUEFJES2dI0,39194
|
129
|
-
hpcflow/tests/unit/test_input_value.py,sha256=
|
130
|
+
hpcflow/tests/unit/test_input_value.py,sha256=H6GX1ee7fuq5f-OsfkfiSW8eye_pWwVLUCYUSnj1-Gg,5731
|
130
131
|
hpcflow/tests/unit/test_json_like.py,sha256=aGCiGfT-tNiFu3yzW6d_T-oDc5QLwSUgq3pN3jFhyF0,29939
|
131
|
-
hpcflow/tests/unit/test_loop.py,sha256=
|
132
|
+
hpcflow/tests/unit/test_loop.py,sha256=6SPRzqxk0X3aWPiUJJTu6lKODsPGNUOdDgzdN1dFs0k,40438
|
132
133
|
hpcflow/tests/unit/test_object_list.py,sha256=nDpbRpCu4XqoYxKMr1_QmDS1s2_6nQOpIEBRHSAXoVg,3049
|
133
|
-
hpcflow/tests/unit/test_parameter.py,sha256=
|
134
|
+
hpcflow/tests/unit/test_parameter.py,sha256=39CVido_NJGX-Xj9NDSlazpGzWqMG4zp0GmIKwzO7lI,6659
|
134
135
|
hpcflow/tests/unit/test_persistence.py,sha256=DPXFiuY2v8vj0zZ7299nf-KtgYT8LhHI52fq7UPoa6Y,8128
|
135
136
|
hpcflow/tests/unit/test_resources.py,sha256=2RRFIn5brKyD1UNmkmnvyjPZowa-dokQd0EuCEeo7so,7799
|
136
137
|
hpcflow/tests/unit/test_run.py,sha256=uvG2BbVOD0JJAJCbdh0MMRJME8tVzOm7H4PTLzPLWZY,2613
|
@@ -139,16 +140,16 @@ hpcflow/tests/unit/test_schema_input.py,sha256=738tJjEzBcQ8Z_YTcybVBW7Twy_hXmbPW
|
|
139
140
|
hpcflow/tests/unit/test_shell.py,sha256=FDtQ9fHRhSKiVtxMJ8BRisoeSvvk8zmJndTB4LlhqGc,3442
|
140
141
|
hpcflow/tests/unit/test_slurm.py,sha256=ewfNuXXUEEelAxcd7MBbAQ-RCvU8xBenHTAyfXYF-R0,1064
|
141
142
|
hpcflow/tests/unit/test_submission.py,sha256=kQ3ksjGlfp47AYuwTA27RDX2XxRU3YxKlKC1ACTbXw8,16682
|
142
|
-
hpcflow/tests/unit/test_task.py,sha256=
|
143
|
+
hpcflow/tests/unit/test_task.py,sha256=QJuEpJ0y0nBesprgoau5R2kFZBCW-ygNmYatLT_M5-o,80227
|
143
144
|
hpcflow/tests/unit/test_task_schema.py,sha256=j5HHxoqq4Mb223jKcusgX-C6-TsmKG0PLjYQ4M01ZHo,4531
|
144
145
|
hpcflow/tests/unit/test_utils.py,sha256=JMhSRZFqmI9ZhREJet9en_y3aRVlQlWE7OKpkdt8SVI,14172
|
145
|
-
hpcflow/tests/unit/test_value_sequence.py,sha256=
|
146
|
+
hpcflow/tests/unit/test_value_sequence.py,sha256=yJh5YRxN-VYMbCWiUaLH4T_Ue5F2IfVS3e11zx6HlS0,15740
|
146
147
|
hpcflow/tests/unit/test_workflow.py,sha256=Eyr9BhnsFisAPotEAeYrAvxXT1d2i6oshEh1_OxgnSc,22732
|
147
148
|
hpcflow/tests/unit/test_workflow_template.py,sha256=fF7LNveMwCledgncNCRfD9Nd9dL9tSPtlAAOKV3ovAU,5396
|
148
149
|
hpcflow/tests/workflows/test_jobscript.py,sha256=9sp1o0g72JZbv2QlOl5v7wCZEFjotxiIKGNUxVaFgaA,724
|
149
150
|
hpcflow/tests/workflows/test_workflows.py,sha256=xai6FRtGqG4lStJk6KmsqPUSuvqs9FrsBOxMVALshIs,13400
|
150
151
|
hpcflow/viz_demo.ipynb,sha256=1QdnVsk72vihv2L6hOGyk318uEa22ZSgGxQCa7hW2oo,6238
|
151
|
-
hpcflow_new2-0.2.
|
152
|
-
hpcflow_new2-0.2.
|
153
|
-
hpcflow_new2-0.2.
|
154
|
-
hpcflow_new2-0.2.
|
152
|
+
hpcflow_new2-0.2.0a174.dist-info/METADATA,sha256=NfVF7HERChbLHOBa9_DF6ivOsKNunDM59lo97rwu_Ko,2473
|
153
|
+
hpcflow_new2-0.2.0a174.dist-info/WHEEL,sha256=kLuE8m1WYU0Ig0_YEGrXyTtiJvKPpLpDEiChiNyei5Y,88
|
154
|
+
hpcflow_new2-0.2.0a174.dist-info/entry_points.txt,sha256=aoGtCnFdfPcXfBdu2zZyMOJoz6fPgdR0elqsgrE-USU,106
|
155
|
+
hpcflow_new2-0.2.0a174.dist-info/RECORD,,
|
File without changes
|
File without changes
|