hpcflow-new2 0.2.0a179__py3-none-any.whl → 0.2.0a181__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/demo_data_manifest/__init__.py +3 -0
- hpcflow/sdk/__init__.py +4 -1
- hpcflow/sdk/app.py +160 -15
- hpcflow/sdk/cli.py +14 -0
- hpcflow/sdk/cli_common.py +83 -0
- hpcflow/sdk/config/__init__.py +4 -0
- hpcflow/sdk/config/callbacks.py +25 -2
- hpcflow/sdk/config/cli.py +4 -1
- hpcflow/sdk/config/config.py +188 -14
- hpcflow/sdk/config/config_file.py +91 -3
- hpcflow/sdk/config/errors.py +33 -0
- hpcflow/sdk/core/__init__.py +2 -0
- hpcflow/sdk/core/actions.py +492 -35
- hpcflow/sdk/core/cache.py +22 -0
- hpcflow/sdk/core/command_files.py +221 -5
- hpcflow/sdk/core/commands.py +57 -0
- hpcflow/sdk/core/element.py +407 -8
- hpcflow/sdk/core/environment.py +92 -0
- hpcflow/sdk/core/errors.py +245 -61
- hpcflow/sdk/core/json_like.py +72 -14
- hpcflow/sdk/core/loop.py +122 -21
- hpcflow/sdk/core/loop_cache.py +34 -9
- hpcflow/sdk/core/object_list.py +172 -26
- hpcflow/sdk/core/parallel.py +14 -0
- hpcflow/sdk/core/parameters.py +478 -25
- hpcflow/sdk/core/rule.py +31 -1
- hpcflow/sdk/core/run_dir_files.py +12 -2
- hpcflow/sdk/core/task.py +407 -80
- hpcflow/sdk/core/task_schema.py +70 -9
- hpcflow/sdk/core/test_utils.py +35 -0
- hpcflow/sdk/core/utils.py +101 -4
- hpcflow/sdk/core/validation.py +13 -1
- hpcflow/sdk/core/workflow.py +316 -96
- hpcflow/sdk/core/zarr_io.py +23 -0
- hpcflow/sdk/data/__init__.py +13 -0
- hpcflow/sdk/demo/__init__.py +3 -0
- hpcflow/sdk/helper/__init__.py +3 -0
- hpcflow/sdk/helper/cli.py +9 -0
- hpcflow/sdk/helper/helper.py +28 -0
- hpcflow/sdk/helper/watcher.py +33 -0
- hpcflow/sdk/log.py +40 -0
- hpcflow/sdk/persistence/__init__.py +14 -4
- hpcflow/sdk/persistence/base.py +289 -23
- hpcflow/sdk/persistence/json.py +29 -0
- hpcflow/sdk/persistence/pending.py +217 -107
- hpcflow/sdk/persistence/store_resource.py +58 -2
- hpcflow/sdk/persistence/utils.py +8 -0
- hpcflow/sdk/persistence/zarr.py +68 -1
- hpcflow/sdk/runtime.py +52 -10
- hpcflow/sdk/submission/__init__.py +3 -0
- hpcflow/sdk/submission/jobscript.py +198 -9
- hpcflow/sdk/submission/jobscript_info.py +13 -0
- hpcflow/sdk/submission/schedulers/__init__.py +60 -0
- hpcflow/sdk/submission/schedulers/direct.py +53 -0
- hpcflow/sdk/submission/schedulers/sge.py +45 -7
- hpcflow/sdk/submission/schedulers/slurm.py +45 -8
- hpcflow/sdk/submission/schedulers/utils.py +4 -0
- hpcflow/sdk/submission/shells/__init__.py +11 -1
- hpcflow/sdk/submission/shells/base.py +32 -1
- hpcflow/sdk/submission/shells/bash.py +36 -1
- hpcflow/sdk/submission/shells/os_version.py +18 -6
- hpcflow/sdk/submission/shells/powershell.py +22 -0
- hpcflow/sdk/submission/submission.py +88 -3
- hpcflow/sdk/typing.py +10 -1
- {hpcflow_new2-0.2.0a179.dist-info → hpcflow_new2-0.2.0a181.dist-info}/METADATA +3 -3
- {hpcflow_new2-0.2.0a179.dist-info → hpcflow_new2-0.2.0a181.dist-info}/RECORD +70 -70
- {hpcflow_new2-0.2.0a179.dist-info → hpcflow_new2-0.2.0a181.dist-info}/LICENSE +0 -0
- {hpcflow_new2-0.2.0a179.dist-info → hpcflow_new2-0.2.0a181.dist-info}/WHEEL +0 -0
- {hpcflow_new2-0.2.0a179.dist-info → hpcflow_new2-0.2.0a181.dist-info}/entry_points.txt +0 -0
@@ -1,3 +1,7 @@
|
|
1
|
+
"""
|
2
|
+
Shell models based on Microsoft PowerShell.
|
3
|
+
"""
|
4
|
+
|
1
5
|
import subprocess
|
2
6
|
from textwrap import dedent, indent
|
3
7
|
from typing import Dict, List, Optional
|
@@ -11,12 +15,18 @@ class WindowsPowerShell(Shell):
|
|
11
15
|
|
12
16
|
# TODO: add snippets that can be used in demo task schemas?
|
13
17
|
|
18
|
+
#: Default for executable name.
|
14
19
|
DEFAULT_EXE = "powershell.exe"
|
15
20
|
|
21
|
+
#: File extension for jobscripts.
|
16
22
|
JS_EXT = ".ps1"
|
23
|
+
#: Basic indent.
|
17
24
|
JS_INDENT = " "
|
25
|
+
#: Indent for environment setup.
|
18
26
|
JS_ENV_SETUP_INDENT = 2 * JS_INDENT
|
27
|
+
#: Template for the jobscript shebang line.
|
19
28
|
JS_SHEBANG = ""
|
29
|
+
#: Template for the common part of the jobscript header.
|
20
30
|
JS_HEADER = dedent(
|
21
31
|
"""\
|
22
32
|
function {workflow_app_alias} {{
|
@@ -60,6 +70,7 @@ class WindowsPowerShell(Shell):
|
|
60
70
|
$ELEM_RUN_DIR_FILE = JoinMultiPath $WK_PATH artifacts submissions $SUB_IDX {element_run_dirs_file_path}
|
61
71
|
"""
|
62
72
|
)
|
73
|
+
#: Template for the jobscript header when directly executed.
|
63
74
|
JS_DIRECT_HEADER = dedent(
|
64
75
|
"""\
|
65
76
|
{shebang}
|
@@ -68,6 +79,7 @@ class WindowsPowerShell(Shell):
|
|
68
79
|
{wait_command}
|
69
80
|
"""
|
70
81
|
)
|
82
|
+
#: Template for the jobscript body.
|
71
83
|
JS_MAIN = dedent(
|
72
84
|
"""\
|
73
85
|
$elem_EAR_IDs = get_nth_line $EAR_ID_FILE $JS_elem_idx
|
@@ -117,6 +129,7 @@ class WindowsPowerShell(Shell):
|
|
117
129
|
}}
|
118
130
|
"""
|
119
131
|
)
|
132
|
+
#: Template for the element processing loop in a jobscript.
|
120
133
|
JS_ELEMENT_LOOP = dedent(
|
121
134
|
"""\
|
122
135
|
for ($JS_elem_idx = 0; $JS_elem_idx -lt {num_elements}; $JS_elem_idx += 1) {{
|
@@ -172,6 +185,9 @@ class WindowsPowerShell(Shell):
|
|
172
185
|
return app_invoc_exe
|
173
186
|
|
174
187
|
def format_stream_assignment(self, shell_var_name, command):
|
188
|
+
"""
|
189
|
+
Produce code to assign the output of the command to a shell variable.
|
190
|
+
"""
|
175
191
|
return f"${shell_var_name} = {command}"
|
176
192
|
|
177
193
|
def format_save_parameter(
|
@@ -183,6 +199,9 @@ class WindowsPowerShell(Shell):
|
|
183
199
|
cmd_idx: int,
|
184
200
|
stderr: bool,
|
185
201
|
):
|
202
|
+
"""
|
203
|
+
Produce code to save a parameter's value into the workflow persistent store.
|
204
|
+
"""
|
186
205
|
# TODO: quote shell_var_name as well? e.g. if it's a white-space delimited list?
|
187
206
|
# and test.
|
188
207
|
stderr_str = " --stderr" if stderr else ""
|
@@ -195,6 +214,9 @@ class WindowsPowerShell(Shell):
|
|
195
214
|
)
|
196
215
|
|
197
216
|
def format_loop_check(self, workflow_app_alias: str, loop_name: str, run_ID: int):
|
217
|
+
"""
|
218
|
+
Produce code to check the looping status of part of a workflow.
|
219
|
+
"""
|
198
220
|
return (
|
199
221
|
f"{workflow_app_alias} "
|
200
222
|
f"internal workflow $WK_PATH check-loop "
|
@@ -1,3 +1,7 @@
|
|
1
|
+
"""
|
2
|
+
A collection of submissions to a scheduler, generated from a workflow.
|
3
|
+
"""
|
4
|
+
|
1
5
|
from __future__ import annotations
|
2
6
|
from collections import defaultdict
|
3
7
|
|
@@ -24,6 +28,9 @@ from hpcflow.sdk.log import TimeIt
|
|
24
28
|
|
25
29
|
|
26
30
|
def timedelta_format(td: timedelta) -> str:
|
31
|
+
"""
|
32
|
+
Convert time delta to string in standard form.
|
33
|
+
"""
|
27
34
|
days, seconds = td.days, td.seconds
|
28
35
|
hours = seconds // (60 * 60)
|
29
36
|
seconds -= hours * (60 * 60)
|
@@ -33,6 +40,9 @@ def timedelta_format(td: timedelta) -> str:
|
|
33
40
|
|
34
41
|
|
35
42
|
def timedelta_parse(td_str: str) -> timedelta:
|
43
|
+
"""
|
44
|
+
Parse a string in standard form as a time delta.
|
45
|
+
"""
|
36
46
|
days, other = td_str.split("-")
|
37
47
|
days = int(days)
|
38
48
|
hours, mins, secs = [int(i) for i in other.split(":")]
|
@@ -40,12 +50,38 @@ def timedelta_parse(td_str: str) -> timedelta:
|
|
40
50
|
|
41
51
|
|
42
52
|
class SubmissionStatus(enum.Enum):
|
43
|
-
|
44
|
-
|
45
|
-
|
53
|
+
"""
|
54
|
+
The overall status of a submission.
|
55
|
+
"""
|
56
|
+
|
57
|
+
#: Not yet submitted.
|
58
|
+
PENDING = 0
|
59
|
+
#: All jobscripts submitted successfully.
|
60
|
+
SUBMITTED = 1
|
61
|
+
#: Some jobscripts submitted successfully.
|
62
|
+
PARTIALLY_SUBMITTED = 2
|
46
63
|
|
47
64
|
|
48
65
|
class Submission(JSONLike):
|
66
|
+
"""
|
67
|
+
A collection of jobscripts to be submitted to a scheduler.
|
68
|
+
|
69
|
+
Parameters
|
70
|
+
----------
|
71
|
+
index: int
|
72
|
+
The index of this submission.
|
73
|
+
jobscripts: list[~hpcflow.app.Jobscript]
|
74
|
+
The jobscripts in the submission.
|
75
|
+
workflow: ~hpcflow.app.Workflow
|
76
|
+
The workflow this is part of.
|
77
|
+
submission_parts: dict
|
78
|
+
Description of submission parts.
|
79
|
+
JS_parallelism: bool
|
80
|
+
Whether to exploit jobscript parallelism.
|
81
|
+
environments: ~hpcflow.app.EnvironmentsList
|
82
|
+
The execution environments to use.
|
83
|
+
"""
|
84
|
+
|
49
85
|
_child_objects = (
|
50
86
|
ChildObjectSpec(
|
51
87
|
name="jobscripts",
|
@@ -77,6 +113,7 @@ class Submission(JSONLike):
|
|
77
113
|
self._submission_parts_lst = None # assigned on first access; datetime objects
|
78
114
|
|
79
115
|
if workflow:
|
116
|
+
#: The workflow this is part of.
|
80
117
|
self.workflow = workflow
|
81
118
|
|
82
119
|
self._set_parent_refs()
|
@@ -156,14 +193,23 @@ class Submission(JSONLike):
|
|
156
193
|
|
157
194
|
@property
|
158
195
|
def index(self) -> int:
|
196
|
+
"""
|
197
|
+
The index of this submission.
|
198
|
+
"""
|
159
199
|
return self._index
|
160
200
|
|
161
201
|
@property
|
162
202
|
def environments(self) -> app.EnvironmentsList:
|
203
|
+
"""
|
204
|
+
The execution environments to use.
|
205
|
+
"""
|
163
206
|
return self._environments
|
164
207
|
|
165
208
|
@property
|
166
209
|
def submission_parts(self) -> List[Dict]:
|
210
|
+
"""
|
211
|
+
Description of the parts of this submission.
|
212
|
+
"""
|
167
213
|
if not self._submission_parts:
|
168
214
|
return []
|
169
215
|
|
@@ -237,14 +283,23 @@ class Submission(JSONLike):
|
|
237
283
|
|
238
284
|
@property
|
239
285
|
def jobscripts(self) -> List:
|
286
|
+
"""
|
287
|
+
The jobscripts in this submission.
|
288
|
+
"""
|
240
289
|
return self._jobscripts
|
241
290
|
|
242
291
|
@property
|
243
292
|
def JS_parallelism(self):
|
293
|
+
"""
|
294
|
+
Whether to exploit jobscript parallelism.
|
295
|
+
"""
|
244
296
|
return self._JS_parallelism
|
245
297
|
|
246
298
|
@property
|
247
299
|
def workflow(self) -> List:
|
300
|
+
"""
|
301
|
+
The workflow this is part of.
|
302
|
+
"""
|
248
303
|
return self._workflow
|
249
304
|
|
250
305
|
@workflow.setter
|
@@ -268,6 +323,9 @@ class Submission(JSONLike):
|
|
268
323
|
|
269
324
|
@property
|
270
325
|
def status(self):
|
326
|
+
"""
|
327
|
+
The status of this submission.
|
328
|
+
"""
|
271
329
|
if not self.submission_parts:
|
272
330
|
return SubmissionStatus.PENDING
|
273
331
|
else:
|
@@ -278,6 +336,9 @@ class Submission(JSONLike):
|
|
278
336
|
|
279
337
|
@property
|
280
338
|
def needs_submit(self):
|
339
|
+
"""
|
340
|
+
Whether this submission needs a submit to be done.
|
341
|
+
"""
|
281
342
|
return self.status in (
|
282
343
|
SubmissionStatus.PENDING,
|
283
344
|
SubmissionStatus.PARTIALLY_SUBMITTED,
|
@@ -285,19 +346,31 @@ class Submission(JSONLike):
|
|
285
346
|
|
286
347
|
@property
|
287
348
|
def path(self):
|
349
|
+
"""
|
350
|
+
The path to files associated with this submission.
|
351
|
+
"""
|
288
352
|
return self.workflow.submissions_path / str(self.index)
|
289
353
|
|
290
354
|
@property
|
291
355
|
def all_EAR_IDs(self):
|
356
|
+
"""
|
357
|
+
The IDs of all EARs in this submission.
|
358
|
+
"""
|
292
359
|
return [i for js in self.jobscripts for i in js.all_EAR_IDs]
|
293
360
|
|
294
361
|
@property
|
295
362
|
def all_EARs(self):
|
363
|
+
"""
|
364
|
+
All EARs in this this submission.
|
365
|
+
"""
|
296
366
|
return [i for js in self.jobscripts for i in js.all_EARs]
|
297
367
|
|
298
368
|
@property
|
299
369
|
@TimeIt.decorator
|
300
370
|
def EARs_by_elements(self):
|
371
|
+
"""
|
372
|
+
All EARs in this submission, grouped by element.
|
373
|
+
"""
|
301
374
|
task_elem_EARs = defaultdict(lambda: defaultdict(list))
|
302
375
|
for i in self.all_EARs:
|
303
376
|
task_elem_EARs[i.task.index][i.element.index].append(i)
|
@@ -305,10 +378,16 @@ class Submission(JSONLike):
|
|
305
378
|
|
306
379
|
@property
|
307
380
|
def abort_EARs_file_name(self):
|
381
|
+
"""
|
382
|
+
The name of a file describing what EARs have aborted.
|
383
|
+
"""
|
308
384
|
return f"abort_EARs.txt"
|
309
385
|
|
310
386
|
@property
|
311
387
|
def abort_EARs_file_path(self):
|
388
|
+
"""
|
389
|
+
The path to the file describing what EARs have aborted in this submission.
|
390
|
+
"""
|
312
391
|
return self.path / self.abort_EARs_file_name
|
313
392
|
|
314
393
|
@TimeIt.decorator
|
@@ -357,6 +436,9 @@ class Submission(JSONLike):
|
|
357
436
|
|
358
437
|
Uniqueness is determines only by the `Scheduler.unique_properties` tuple.
|
359
438
|
|
439
|
+
Parameters
|
440
|
+
----------
|
441
|
+
jobscripts: list[~hpcflow.app.Jobscript]
|
360
442
|
"""
|
361
443
|
js_idx = []
|
362
444
|
schedulers = []
|
@@ -566,6 +648,9 @@ class Submission(JSONLike):
|
|
566
648
|
|
567
649
|
@TimeIt.decorator
|
568
650
|
def cancel(self):
|
651
|
+
"""
|
652
|
+
Cancel the active jobs for this submission's jobscripts.
|
653
|
+
"""
|
569
654
|
act_js = list(self.get_active_jobscripts())
|
570
655
|
if not act_js:
|
571
656
|
print("No active jobscripts to cancel.")
|
hpcflow/sdk/typing.py
CHANGED
@@ -1,9 +1,18 @@
|
|
1
|
+
"""
|
2
|
+
Common type aliases.
|
3
|
+
"""
|
1
4
|
from typing import Tuple, TypeVar
|
2
5
|
from pathlib import Path
|
3
6
|
|
7
|
+
#: Type of a value that can be treated as a path.
|
4
8
|
PathLike = TypeVar("PathLike", str, Path, None) # TODO: maybe don't need TypeVar?
|
5
9
|
|
6
|
-
|
10
|
+
#: Type of an element index:
|
11
|
+
#: (task_insert_ID, element_idx)
|
7
12
|
E_idx_type = Tuple[int, int]
|
13
|
+
#: Type of an element iteration index:
|
14
|
+
#: (task_insert_ID, element_idx, iteration_idx)
|
8
15
|
EI_idx_type = Tuple[int, int, int]
|
16
|
+
#: Type of an element action run index:
|
17
|
+
#: (task_insert_ID, element_idx, iteration_idx, action_idx, run_idx)
|
9
18
|
EAR_idx_type = Tuple[int, int, int, int, int]
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: hpcflow-new2
|
3
|
-
Version: 0.2.
|
3
|
+
Version: 0.2.0a181
|
4
4
|
Summary: Computational workflow management
|
5
5
|
License: MIT
|
6
6
|
Author: aplowman
|
@@ -28,9 +28,9 @@ Requires-Dist: pytest (>=7.2.0,<8.0.0) ; extra == "test"
|
|
28
28
|
Requires-Dist: requests (>=2.31.0,<3.0.0)
|
29
29
|
Requires-Dist: reretry (>=0.11.8,<0.12.0)
|
30
30
|
Requires-Dist: rich (>=13.4.2,<14.0.0)
|
31
|
-
Requires-Dist: ruamel
|
31
|
+
Requires-Dist: ruamel-yaml (>=0.18.6,<0.19.0)
|
32
32
|
Requires-Dist: termcolor (>=1.1.0,<2.0.0)
|
33
|
-
Requires-Dist: valida (>=0.7.
|
33
|
+
Requires-Dist: valida (>=0.7.5,<0.8.0)
|
34
34
|
Requires-Dist: watchdog (>=2.1.9,<3.0.0)
|
35
35
|
Requires-Dist: zarr (==2.17.2) ; python_version >= "3.9"
|
36
36
|
Requires-Dist: zarr (>=2.16.1,<3.0.0) ; python_version < "3.9"
|
@@ -1,10 +1,10 @@
|
|
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=-BYY1b1ddlGLhPsjvL4wQkEC-DW7MLBtKVv2DXP5t04,26
|
5
5
|
hpcflow/app.py,sha256=d-kgfnZNlqlCi2H8bK26714brD_u3ibN3FaEZgjF9aA,1332
|
6
6
|
hpcflow/cli.py,sha256=G2J3D9v6MnMWOWMMWK6UEKLn_6wnV9lT_qygEBBxg-I,66
|
7
|
-
hpcflow/data/demo_data_manifest/__init__.py,sha256=
|
7
|
+
hpcflow/data/demo_data_manifest/__init__.py,sha256=Hsq0jT8EXM13wu1MpGy5FQgyuz56ygep4VWOnulFn50,41
|
8
8
|
hpcflow/data/demo_data_manifest/demo_data_manifest.json,sha256=VauMm2cjlwGqR2zlfs_qzQn3zkwiUPG20nmMlucu-yY,91
|
9
9
|
hpcflow/data/scripts/__init__.py,sha256=PqXAhMNG3u78no80syXUGcs6uQ2Ir3pj24ioBjsmhuk,80
|
10
10
|
hpcflow/data/scripts/demo_task_1_generate_t1_infile_1.py,sha256=HdPPv796JjlWuN2K8xUlv3c_kSZRr3GvXr_4KwSCOfQ,212
|
@@ -34,40 +34,40 @@ hpcflow/data/template_components/task_schemas.yaml,sha256=VMtzckqDyfL9JpjYkG9Fkz
|
|
34
34
|
hpcflow/data/workflows/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
35
35
|
hpcflow/data/workflows/workflow_1.yaml,sha256=lF7Re2SVc_5gQk5AwB0gXaq-n-T5ia4su3zNQ9oMRV0,220
|
36
36
|
hpcflow/examples.ipynb,sha256=cLKp4QsxwwMXRanDnfWY9kqsV23q6G4raOpu6IZXnMw,28553
|
37
|
-
hpcflow/sdk/__init__.py,sha256=
|
38
|
-
hpcflow/sdk/app.py,sha256=
|
39
|
-
hpcflow/sdk/cli.py,sha256=
|
40
|
-
hpcflow/sdk/cli_common.py,sha256=
|
41
|
-
hpcflow/sdk/config/__init__.py,sha256=
|
42
|
-
hpcflow/sdk/config/callbacks.py,sha256=
|
43
|
-
hpcflow/sdk/config/cli.py,sha256=
|
44
|
-
hpcflow/sdk/config/config.py,sha256=
|
45
|
-
hpcflow/sdk/config/config_file.py,sha256=
|
46
|
-
hpcflow/sdk/config/errors.py,sha256=
|
47
|
-
hpcflow/sdk/core/__init__.py,sha256=
|
48
|
-
hpcflow/sdk/core/actions.py,sha256=
|
49
|
-
hpcflow/sdk/core/cache.py,sha256=
|
50
|
-
hpcflow/sdk/core/command_files.py,sha256=
|
51
|
-
hpcflow/sdk/core/commands.py,sha256=
|
52
|
-
hpcflow/sdk/core/element.py,sha256=
|
53
|
-
hpcflow/sdk/core/environment.py,sha256=
|
54
|
-
hpcflow/sdk/core/errors.py,sha256=
|
55
|
-
hpcflow/sdk/core/json_like.py,sha256=
|
56
|
-
hpcflow/sdk/core/loop.py,sha256=
|
57
|
-
hpcflow/sdk/core/loop_cache.py,sha256=
|
58
|
-
hpcflow/sdk/core/object_list.py,sha256=
|
59
|
-
hpcflow/sdk/core/parallel.py,sha256=
|
60
|
-
hpcflow/sdk/core/parameters.py,sha256=
|
61
|
-
hpcflow/sdk/core/rule.py,sha256=
|
62
|
-
hpcflow/sdk/core/run_dir_files.py,sha256=
|
63
|
-
hpcflow/sdk/core/task.py,sha256=
|
64
|
-
hpcflow/sdk/core/task_schema.py,sha256=
|
65
|
-
hpcflow/sdk/core/test_utils.py,sha256=
|
66
|
-
hpcflow/sdk/core/utils.py,sha256=
|
67
|
-
hpcflow/sdk/core/validation.py,sha256=
|
68
|
-
hpcflow/sdk/core/workflow.py,sha256=
|
69
|
-
hpcflow/sdk/core/zarr_io.py,sha256=
|
70
|
-
hpcflow/sdk/data/__init__.py,sha256
|
37
|
+
hpcflow/sdk/__init__.py,sha256=5DGawWK-NhDA_pYL_NRr4AL8Zk17Ra7Yk_4LuCaUUEU,5785
|
38
|
+
hpcflow/sdk/app.py,sha256=k3QHqVmLHKe0Q_-kjjdmB4zfmMHdHB2ZH_jFCXW2JeY,100626
|
39
|
+
hpcflow/sdk/cli.py,sha256=h3igMZAjfvQvmF0uKTKLYClPnRxTONIyiv6Cjr0rllo,38015
|
40
|
+
hpcflow/sdk/cli_common.py,sha256=F5IXERXVRTlIwjrqYgYeNKLhK9MjpOnv6aAc_xIyIo0,7199
|
41
|
+
hpcflow/sdk/config/__init__.py,sha256=7WUK7nb7UW64ZUDzaHa39BFAWWIfGRfgEPjSPxWjgWA,119
|
42
|
+
hpcflow/sdk/config/callbacks.py,sha256=jiODBYbUkQUN-M4ayTNG5_ozYarGJA2-QFBDpccsrg8,5858
|
43
|
+
hpcflow/sdk/config/cli.py,sha256=Q20ZZllROieX0vXg3JSNZ8y5doH2Sr7HWX5_PN7Wzu8,10736
|
44
|
+
hpcflow/sdk/config/config.py,sha256=Dbt1nQT8-24k41DjUaMsPlf_gYwS1sIxK5-hk0Aji4g,35490
|
45
|
+
hpcflow/sdk/config/config_file.py,sha256=hskSA4w5qe-zuAb4GTFw0dx0wzC9dzWkGahScaPPy5g,14875
|
46
|
+
hpcflow/sdk/config/errors.py,sha256=HpqGJdFlJzFO2B7eRSvTHMySwCUAI-b89YRS1DyZ5As,7490
|
47
|
+
hpcflow/sdk/core/__init__.py,sha256=qcsbBwQNp7HVDzW-HZWg2-J0BAFzU0tJmQP0jKDBR-Q,299
|
48
|
+
hpcflow/sdk/core/actions.py,sha256=6gJnwYe3Olmz_FwiH4WvDbb3ffvNkhrByg-FsBGVSCI,90840
|
49
|
+
hpcflow/sdk/core/cache.py,sha256=EX1Kx8qrAP_lJpadMgIH72CCJVe-_LWRA-Z1PwfsQPg,5949
|
50
|
+
hpcflow/sdk/core/command_files.py,sha256=LMa4eXRLnl4NmOy5mYZkEBy4nWA9Nq6eUew8K_r7RCM,25142
|
51
|
+
hpcflow/sdk/core/commands.py,sha256=xIg82Fw6djuD32a4BwN5WreOlL-K7cUwg5ks8glwodM,14624
|
52
|
+
hpcflow/sdk/core/element.py,sha256=EoWP2o6doLL_DjO1_VjK4y6-KyKasAXv_JWszFS7yIE,58150
|
53
|
+
hpcflow/sdk/core/environment.py,sha256=IKU1-S6aCl8SBbXzuC2KTpMfzwTfGgNcdu8Hb7eCqz0,7729
|
54
|
+
hpcflow/sdk/core/errors.py,sha256=gcy50oJbjGZzmVKpLl5nUxfJkanw_78bDPi5oQdaMa0,13728
|
55
|
+
hpcflow/sdk/core/json_like.py,sha256=opGf5GnQdufrlYZUDI61Sq8FVOWDAIPdFUmmy5ohlbo,21329
|
56
|
+
hpcflow/sdk/core/loop.py,sha256=0DEjHiw8xn4S2uPpaucpx2tnkMbETaFwMLnqe_Oye60,34130
|
57
|
+
hpcflow/sdk/core/loop_cache.py,sha256=7DzBlkTNRiCn67sVpTo2QuCy3oL_e67JOdQ633NXT7A,7277
|
58
|
+
hpcflow/sdk/core/object_list.py,sha256=LyTp76OKWbj7ypyS-ubD4Bgs5so8W3zY0_9YakknOBc,23510
|
59
|
+
hpcflow/sdk/core/parallel.py,sha256=tihWhq3tghwSFEUx7_r9MCMosfKkwq_wHrolbCHNd6c,396
|
60
|
+
hpcflow/sdk/core/parameters.py,sha256=V4zBIqLuc6lENHoUXTM3bjqRcfRfq-0ay0QuN3WwA5E,77874
|
61
|
+
hpcflow/sdk/core/rule.py,sha256=cWpGaBiYsRHKeaG1XfbI_Rgwhpz6rfM-sQ1nUeTKKhA,5625
|
62
|
+
hpcflow/sdk/core/run_dir_files.py,sha256=wtgWuvtWuNFo5YG5v1k3EBvYQFqGkr27mv4NqMlp4lQ,2410
|
63
|
+
hpcflow/sdk/core/task.py,sha256=zwGW-YewQIh9JSDDV5mrm7epPFT0SRT7ofpI2HUh6RM,131822
|
64
|
+
hpcflow/sdk/core/task_schema.py,sha256=ORi3iULG7J7JeQu1CaovTzBc4-mP2tthxq6g0JBdDnE,34448
|
65
|
+
hpcflow/sdk/core/test_utils.py,sha256=vkpZesJNFNfBxjIDDr_WKIxFx2tUkde_kPn6eDjtwxs,10303
|
66
|
+
hpcflow/sdk/core/utils.py,sha256=9PHfwfUyREJTSQYlCbRbKHwrx1SA6c7Uh_TFrg9xynQ,28591
|
67
|
+
hpcflow/sdk/core/validation.py,sha256=jWBJiHOv2_pL-Dua9dpsd6Qc2KmDZOQeVhFri4vMn6U,704
|
68
|
+
hpcflow/sdk/core/workflow.py,sha256=nd_NWNPZUgpc4GvX5Ivy1oF__Dj2Q_kIAfvQbBohXjs,120067
|
69
|
+
hpcflow/sdk/core/zarr_io.py,sha256=RgJia3jgE3Y16ERU4nWNzHNDkK-qDS1znZMB1IfOUd4,6182
|
70
|
+
hpcflow/sdk/data/__init__.py,sha256=-YzROirohSKU2UGYj5vkCe_J2KejbzhIjUXNaJwKHLk,568
|
71
71
|
hpcflow/sdk/data/config_file_schema.yaml,sha256=7i3z_m3GBRtLyB4c7qPngnlQWqcIq1CyCcOysDyq4es,791
|
72
72
|
hpcflow/sdk/data/config_schema.yaml,sha256=FOB7hiWySulWA86ERJKeJjzlNKW_eP4q2hUWpV__TEM,6488
|
73
73
|
hpcflow/sdk/data/environments_spec_schema.yaml,sha256=567S6KYkAzeV4eyUCuSpUr8LnsD2BKI7fUZVRxeYtsw,790
|
@@ -75,36 +75,36 @@ hpcflow/sdk/data/files_spec_schema.yaml,sha256=yNA52Te-6p3a-TzWvrVx_0kEy7ZpJYhrL
|
|
75
75
|
hpcflow/sdk/data/parameters_spec_schema.yaml,sha256=Wj7CvG7Ul1nZDtBca-oxeFH_aSZkBSz4oQpnuM7VKls,148
|
76
76
|
hpcflow/sdk/data/task_schema_spec_schema.yaml,sha256=6NROg7x-493bdvRwvY4M71R7POT-tNnmROkEsnnoL4k,93
|
77
77
|
hpcflow/sdk/data/workflow_spec_schema.yaml,sha256=RjMALO0yAjVvnnp9KjzsSFPLkkRHztiuAHhYiXDGyWM,392
|
78
|
-
hpcflow/sdk/demo/__init__.py,sha256=
|
78
|
+
hpcflow/sdk/demo/__init__.py,sha256=8mgXFcEpn817_vO6L785GW268JUBrZt69bTCGszgvf0,28
|
79
79
|
hpcflow/sdk/demo/cli.py,sha256=TDQjEI6a90Yq9J6TVoLh9PHzWPRdAAx24ci3MQYmo-4,5625
|
80
|
-
hpcflow/sdk/helper/__init__.py,sha256=
|
81
|
-
hpcflow/sdk/helper/cli.py,sha256=
|
82
|
-
hpcflow/sdk/helper/helper.py,sha256=
|
83
|
-
hpcflow/sdk/helper/watcher.py,sha256=
|
84
|
-
hpcflow/sdk/log.py,sha256=
|
85
|
-
hpcflow/sdk/persistence/__init__.py,sha256=
|
86
|
-
hpcflow/sdk/persistence/base.py,sha256=
|
87
|
-
hpcflow/sdk/persistence/json.py,sha256=
|
88
|
-
hpcflow/sdk/persistence/pending.py,sha256=
|
89
|
-
hpcflow/sdk/persistence/store_resource.py,sha256=
|
90
|
-
hpcflow/sdk/persistence/utils.py,sha256=
|
91
|
-
hpcflow/sdk/persistence/zarr.py,sha256=
|
92
|
-
hpcflow/sdk/runtime.py,sha256=
|
93
|
-
hpcflow/sdk/submission/__init__.py,sha256=
|
94
|
-
hpcflow/sdk/submission/jobscript.py,sha256=
|
95
|
-
hpcflow/sdk/submission/jobscript_info.py,sha256=
|
96
|
-
hpcflow/sdk/submission/schedulers/__init__.py,sha256=
|
97
|
-
hpcflow/sdk/submission/schedulers/direct.py,sha256=
|
98
|
-
hpcflow/sdk/submission/schedulers/sge.py,sha256=
|
99
|
-
hpcflow/sdk/submission/schedulers/slurm.py,sha256=
|
100
|
-
hpcflow/sdk/submission/schedulers/utils.py,sha256=
|
101
|
-
hpcflow/sdk/submission/shells/__init__.py,sha256=
|
102
|
-
hpcflow/sdk/submission/shells/base.py,sha256=
|
103
|
-
hpcflow/sdk/submission/shells/bash.py,sha256=
|
104
|
-
hpcflow/sdk/submission/shells/os_version.py,sha256=
|
105
|
-
hpcflow/sdk/submission/shells/powershell.py,sha256=
|
106
|
-
hpcflow/sdk/submission/submission.py,sha256=
|
107
|
-
hpcflow/sdk/typing.py,sha256=
|
80
|
+
hpcflow/sdk/helper/__init__.py,sha256=HPbnZlvgC9xJKpXyjrBuEXGMIfkLfblD_RBefBLJOFc,29
|
81
|
+
hpcflow/sdk/helper/cli.py,sha256=i2CAEi2vgcAN2c-oiGQNHoRRpkFXbpjolypHkPPTACM,3808
|
82
|
+
hpcflow/sdk/helper/helper.py,sha256=XkvaZkPwwJg3sakk4VxbUy1NG7_nHeVQ04mV_LnlDDg,8676
|
83
|
+
hpcflow/sdk/helper/watcher.py,sha256=k423kvL5gJBHKe63g-hN4qtudIFass1dJG2xMH9WAFE,4597
|
84
|
+
hpcflow/sdk/log.py,sha256=kPWNOZfH__SIDTZDy30Yh6M2OzwjBgz2kEg7pVcqf5w,6801
|
85
|
+
hpcflow/sdk/persistence/__init__.py,sha256=SgxmOppBDbsNCKtsW_H-Zgg5wfEOL18SEiqSV_51C2o,1167
|
86
|
+
hpcflow/sdk/persistence/base.py,sha256=XHRxd_GcB-xlwuPUy8KH_hWYRiw138VEYE44YFEW2qY,70221
|
87
|
+
hpcflow/sdk/persistence/json.py,sha256=JMVFyHTSaEmdFJR4VFh3xtfOSeAz5x8zmxQR53INOs4,22699
|
88
|
+
hpcflow/sdk/persistence/pending.py,sha256=C9DW8cMHVLJD-018fFK8JlNfRa_zbLCk8V5mrPnWEEQ,30568
|
89
|
+
hpcflow/sdk/persistence/store_resource.py,sha256=tu9oDC8KzmfnEsnxRg-bTtGniCRVjJSIDC9fd_KxFJE,5467
|
90
|
+
hpcflow/sdk/persistence/utils.py,sha256=ScC6fDTsO4xabH9r6X7yYeE6fsvudE8jeDC4mg0z1Qc,1707
|
91
|
+
hpcflow/sdk/persistence/zarr.py,sha256=DVC_kTLwRCbtlCdVs3fgGN2iZzy4-QE_OFD-UjPdvvY,50618
|
92
|
+
hpcflow/sdk/runtime.py,sha256=06urvnZ28yJD-vgp9LxfMyKMnSgK7HEHgtX99P0lY3E,10732
|
93
|
+
hpcflow/sdk/submission/__init__.py,sha256=79xJXVkddsuj3uJz3BV9iOnAV7vCeJvLrhKccOA_dnU,67
|
94
|
+
hpcflow/sdk/submission/jobscript.py,sha256=qEdA3oYUinnpXUlWTy0Wz7d1he2BPHsdI-bcELpjLI0,50134
|
95
|
+
hpcflow/sdk/submission/jobscript_info.py,sha256=JpGjqWt0JSdXCbSWvz5dx0ISc5aKSbme-hyy8plLpxI,1528
|
96
|
+
hpcflow/sdk/submission/schedulers/__init__.py,sha256=MHfCYSkd3dOfmTAhCKWZGxR-Kujo0QJTjL5V60vafrg,4353
|
97
|
+
hpcflow/sdk/submission/schedulers/direct.py,sha256=sot-tC-lUf5cUXTmxbdI_hgzuX8QqlLJVzjFEEJhxOg,6774
|
98
|
+
hpcflow/sdk/submission/schedulers/sge.py,sha256=Jki8gUKxM9lrDr7WeosYn0Yg1MGr_r6duhsoFzxnWsE,12106
|
99
|
+
hpcflow/sdk/submission/schedulers/slurm.py,sha256=SnE_4cIstH2DxxnpmjarHVHC6k7UnvDw_94GKmvIfcg,23455
|
100
|
+
hpcflow/sdk/submission/schedulers/utils.py,sha256=cv6CKIDJPD7bbnOW9rGmo4hzE9OwrFyz9fBrRW6vCFg,406
|
101
|
+
hpcflow/sdk/submission/shells/__init__.py,sha256=ab3glhnQzkXa5Tzr4FlT3YRORz51OPsWYn2NkP7T_LA,1388
|
102
|
+
hpcflow/sdk/submission/shells/base.py,sha256=lmOB0DwiFXqIInQCytwL3JeFCLRHz5AkWqeVpeX3Ac8,3065
|
103
|
+
hpcflow/sdk/submission/shells/bash.py,sha256=pLoY3eS-So3xijuiQaygDd5kEtrg6HicgyLd3ahD2hI,12081
|
104
|
+
hpcflow/sdk/submission/shells/os_version.py,sha256=2K8iKAMK_E3bVNUjvuv0Fw_UPIAsPTawlrgYAADDruE,3441
|
105
|
+
hpcflow/sdk/submission/shells/powershell.py,sha256=cLAY-ADehLJO9W-KZv5M2IClacvqNqfErsAEerZnvnM,9819
|
106
|
+
hpcflow/sdk/submission/submission.py,sha256=rrOlSFc1kkQiUmNm-UuJFWxygao-aAJoT8DVkdyilks,23908
|
107
|
+
hpcflow/sdk/typing.py,sha256=zpDfDXBptQ4HLsl6v_5hAS40pjcZmyMRzpReF6AIm30,591
|
108
108
|
hpcflow/tests/conftest.py,sha256=38FCWeZdwoGI1Nh1cHG9afp2K8HJQ4sUE_h3gE26Qe4,3479
|
109
109
|
hpcflow/tests/data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
110
110
|
hpcflow/tests/data/benchmark_N_elements.yaml,sha256=6N6QK5y4A-o6u-XZHe7igcUvzjx73sBmnNLt9MXCSJs,108
|
@@ -151,8 +151,8 @@ hpcflow/tests/unit/test_workflow_template.py,sha256=fF7LNveMwCledgncNCRfD9Nd9dL9
|
|
151
151
|
hpcflow/tests/workflows/test_jobscript.py,sha256=9sp1o0g72JZbv2QlOl5v7wCZEFjotxiIKGNUxVaFgaA,724
|
152
152
|
hpcflow/tests/workflows/test_workflows.py,sha256=xai6FRtGqG4lStJk6KmsqPUSuvqs9FrsBOxMVALshIs,13400
|
153
153
|
hpcflow/viz_demo.ipynb,sha256=1QdnVsk72vihv2L6hOGyk318uEa22ZSgGxQCa7hW2oo,6238
|
154
|
-
hpcflow_new2-0.2.
|
155
|
-
hpcflow_new2-0.2.
|
156
|
-
hpcflow_new2-0.2.
|
157
|
-
hpcflow_new2-0.2.
|
158
|
-
hpcflow_new2-0.2.
|
154
|
+
hpcflow_new2-0.2.0a181.dist-info/LICENSE,sha256=Xhxf_KsrJNJFGMogumZhXSTPhUOVHCWf7nU-TDzqg0E,16763
|
155
|
+
hpcflow_new2-0.2.0a181.dist-info/METADATA,sha256=-patL-esn3vItd-deEUvY-uygAA6TfO-BTTRiOCTqvA,2465
|
156
|
+
hpcflow_new2-0.2.0a181.dist-info/WHEEL,sha256=kLuE8m1WYU0Ig0_YEGrXyTtiJvKPpLpDEiChiNyei5Y,88
|
157
|
+
hpcflow_new2-0.2.0a181.dist-info/entry_points.txt,sha256=aoGtCnFdfPcXfBdu2zZyMOJoz6fPgdR0elqsgrE-USU,106
|
158
|
+
hpcflow_new2-0.2.0a181.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|