hpcflow-new2 0.2.0a149__py3-none-any.whl → 0.2.0a153__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.
@@ -7,6 +7,8 @@ from datetime import datetime
7
7
 
8
8
  from typing import Any, Dict, List, Optional, Tuple
9
9
 
10
+ from hpcflow.sdk.log import TimeIt
11
+
10
12
 
11
13
  class PendingChanges:
12
14
  """Class to store pending changes and merge them into a persistent store.
@@ -112,6 +114,7 @@ class PendingChanges:
112
114
  def logger(self):
113
115
  return self.app.persistence_logger
114
116
 
117
+ @TimeIt.decorator
115
118
  def commit_all(self):
116
119
  """Commit all pending changes to disk."""
117
120
  self.logger.info(f"committing all pending changes: {self.where_pending()}")
@@ -131,6 +134,7 @@ class PendingChanges:
131
134
 
132
135
  assert not (self)
133
136
 
137
+ @TimeIt.decorator
134
138
  def commit_tasks(self) -> None:
135
139
  """Commit pending tasks to disk."""
136
140
  if self.add_tasks:
@@ -144,6 +148,7 @@ class PendingChanges:
144
148
  }
145
149
  self.clear_add_tasks()
146
150
 
151
+ @TimeIt.decorator
147
152
  def commit_loops(self) -> None:
148
153
  """Commit pending loops to disk."""
149
154
  if self.add_loops:
@@ -154,6 +159,7 @@ class PendingChanges:
154
159
  self.store._append_loops(loops)
155
160
  self.clear_add_loops()
156
161
 
162
+ @TimeIt.decorator
157
163
  def commit_submissions(self) -> None:
158
164
  """Commit pending submissions to disk."""
159
165
  if self.add_submissions:
@@ -166,12 +172,14 @@ class PendingChanges:
166
172
  self.store._append_submissions(subs)
167
173
  self.clear_add_submissions()
168
174
 
175
+ @TimeIt.decorator
169
176
  def commit_submission_parts(self) -> None:
170
177
  if self.add_submission_parts:
171
178
  self.logger.debug(f"commit: adding pending submission parts")
172
179
  self.store._append_submission_parts(self.add_submission_parts)
173
180
  self.clear_add_submission_parts()
174
181
 
182
+ @TimeIt.decorator
175
183
  def commit_elem_IDs(self) -> None:
176
184
  # TODO: could be batched up?
177
185
  for task_ID, elem_IDs in self.add_elem_IDs.items():
@@ -181,6 +189,7 @@ class PendingChanges:
181
189
  self.store._append_task_element_IDs(task_ID, elem_IDs)
182
190
  self.clear_add_elem_IDs()
183
191
 
192
+ @TimeIt.decorator
184
193
  def commit_elements(self) -> None:
185
194
  if self.add_elements:
186
195
  elems = self.store.get_elements(self.add_elements)
@@ -193,6 +202,7 @@ class PendingChanges:
193
202
  }
194
203
  self.clear_add_elements()
195
204
 
205
+ @TimeIt.decorator
196
206
  def commit_element_sets(self) -> None:
197
207
  # TODO: could be batched up?
198
208
  for task_id, es_js in self.add_element_sets.items():
@@ -200,6 +210,7 @@ class PendingChanges:
200
210
  self.store._append_element_sets(task_id, es_js)
201
211
  self.clear_add_element_sets()
202
212
 
213
+ @TimeIt.decorator
203
214
  def commit_elem_iter_IDs(self) -> None:
204
215
  # TODO: could be batched up?
205
216
  for elem_ID, iter_IDs in self.add_elem_iter_IDs.items():
@@ -210,6 +221,7 @@ class PendingChanges:
210
221
  self.store._append_elem_iter_IDs(elem_ID, iter_IDs)
211
222
  self.clear_add_elem_iter_IDs()
212
223
 
224
+ @TimeIt.decorator
213
225
  def commit_elem_iters(self) -> None:
214
226
  if self.add_elem_iters:
215
227
  iters = self.store.get_element_iterations(self.add_elem_iters.keys())
@@ -228,6 +240,7 @@ class PendingChanges:
228
240
  ]
229
241
  self.clear_add_elem_iters()
230
242
 
243
+ @TimeIt.decorator
231
244
  def commit_elem_iter_EAR_IDs(self) -> None:
232
245
  # TODO: could be batched up?
233
246
  for iter_ID, act_EAR_IDs in self.add_elem_iter_EAR_IDs.items():
@@ -239,6 +252,7 @@ class PendingChanges:
239
252
  self.store._append_elem_iter_EAR_IDs(iter_ID, act_idx, EAR_IDs)
240
253
  self.clear_add_elem_iter_EAR_IDs()
241
254
 
255
+ @TimeIt.decorator
242
256
  def commit_EARs(self) -> None:
243
257
  if self.add_EARs:
244
258
  EARs = self.store.get_EARs(self.add_EARs)
@@ -262,6 +276,7 @@ class PendingChanges:
262
276
 
263
277
  self.clear_add_EARs()
264
278
 
279
+ @TimeIt.decorator
265
280
  def commit_EARs_initialised(self) -> None:
266
281
  if self.set_EARs_initialised:
267
282
  iter_ids = self.set_EARs_initialised
@@ -274,6 +289,7 @@ class PendingChanges:
274
289
  self._store._update_elem_iter_EARs_initialised(i)
275
290
  self.clear_set_EARs_initialised()
276
291
 
292
+ @TimeIt.decorator
277
293
  def commit_EAR_submission_indices(self) -> None:
278
294
  # TODO: could be batched up?
279
295
  for EAR_id, sub_idx in self.set_EAR_submission_indices.items():
@@ -284,6 +300,7 @@ class PendingChanges:
284
300
  self.store._update_EAR_submission_index(EAR_id, sub_idx)
285
301
  self.clear_set_EAR_submission_indices()
286
302
 
303
+ @TimeIt.decorator
287
304
  def commit_EAR_starts(self) -> None:
288
305
  # TODO: could be batched up?
289
306
  for EAR_id, (time, snap, hostname) in self.set_EAR_starts.items():
@@ -294,6 +311,7 @@ class PendingChanges:
294
311
  self.store._update_EAR_start(EAR_id, time, snap, hostname)
295
312
  self.clear_set_EAR_starts()
296
313
 
314
+ @TimeIt.decorator
297
315
  def commit_EAR_ends(self) -> None:
298
316
  # TODO: could be batched up?
299
317
  for EAR_id, (time, snap, ext, suc) in self.set_EAR_ends.items():
@@ -304,6 +322,7 @@ class PendingChanges:
304
322
  self.store._update_EAR_end(EAR_id, time, snap, ext, suc)
305
323
  self.clear_set_EAR_ends()
306
324
 
325
+ @TimeIt.decorator
307
326
  def commit_EAR_skips(self) -> None:
308
327
  # TODO: could be batched up?
309
328
  for EAR_id in self.set_EAR_skips:
@@ -311,6 +330,7 @@ class PendingChanges:
311
330
  self.store._update_EAR_skip(EAR_id)
312
331
  self.clear_set_EAR_skips()
313
332
 
333
+ @TimeIt.decorator
314
334
  def commit_js_metadata(self) -> None:
315
335
  if self.set_js_metadata:
316
336
  self.logger.debug(
@@ -319,6 +339,7 @@ class PendingChanges:
319
339
  self.store._update_js_metadata(self.set_js_metadata)
320
340
  self.clear_set_js_metadata()
321
341
 
342
+ @TimeIt.decorator
322
343
  def commit_parameters(self) -> None:
323
344
  """Make pending parameters persistent."""
324
345
  if self.add_parameters:
@@ -334,6 +355,7 @@ class PendingChanges:
334
355
  self.store._set_parameter_value(param_id, value, is_file)
335
356
  self.clear_set_parameters()
336
357
 
358
+ @TimeIt.decorator
337
359
  def commit_files(self) -> None:
338
360
  """Add pending files to the files directory."""
339
361
  if self.add_files:
@@ -341,12 +363,14 @@ class PendingChanges:
341
363
  self.store._append_files(self.add_files)
342
364
  self.clear_add_files()
343
365
 
366
+ @TimeIt.decorator
344
367
  def commit_template_components(self) -> None:
345
368
  if self.add_template_components:
346
369
  self.logger.debug(f"commit: adding template components.")
347
370
  self.store._update_template_components(self.store.get_template_components())
348
371
  self.clear_add_template_components()
349
372
 
373
+ @TimeIt.decorator
350
374
  def commit_param_sources(self) -> None:
351
375
  """Make pending changes to parameter sources persistent."""
352
376
  for param_id, src in self.update_param_sources.items():
@@ -355,6 +379,7 @@ class PendingChanges:
355
379
  self.store._update_parameter_source(param_id, src)
356
380
  self.clear_update_param_sources()
357
381
 
382
+ @TimeIt.decorator
358
383
  def commit_loop_indices(self) -> None:
359
384
  """Make pending update to element iteration loop indices persistent."""
360
385
  for iter_ID, loop_idx in self.update_loop_indices.items():
@@ -365,6 +390,7 @@ class PendingChanges:
365
390
  self.store._update_loop_index(iter_ID, loop_idx)
366
391
  self.clear_update_loop_indices()
367
392
 
393
+ @TimeIt.decorator
368
394
  def commit_loop_num_iters(self) -> None:
369
395
  """Make pending update to the number of loop iterations."""
370
396
  for index, num_iters in self.update_loop_num_iters.items():
@@ -34,6 +34,8 @@ from hpcflow.sdk.persistence.base import (
34
34
  from hpcflow.sdk.persistence.store_resource import ZarrAttrsStoreResource
35
35
  from hpcflow.sdk.persistence.utils import ask_pw_on_auth_exc
36
36
  from hpcflow.sdk.persistence.pending import CommitResourceMap
37
+ from hpcflow.sdk.log import TimeIt
38
+
37
39
 
38
40
  blosc.use_threads = False # hpcflow is a multiprocess program in general
39
41
 
@@ -982,6 +984,7 @@ class ZarrPersistentStore(PersistentStore):
982
984
  }
983
985
  return iters
984
986
 
987
+ @TimeIt.decorator
985
988
  def _get_persistent_parameters(
986
989
  self,
987
990
  id_lst: Iterable[int],
@@ -0,0 +1,6 @@
1
+ name: workflow_1
2
+ tasks:
3
+ - schema: test_t1_conditional_OS
4
+ repeats: <<var:N>>
5
+ inputs:
6
+ p1: 101
@@ -3,7 +3,7 @@ import pytest
3
3
  import zarr
4
4
  import numpy as np
5
5
  from numpy.typing import NDArray
6
- from hpcflow.sdk.core.errors import InvalidIdentifier
6
+ from hpcflow.sdk.core.errors import InvalidIdentifier, MissingVariableSubstitutionError
7
7
 
8
8
  from hpcflow.sdk.core.utils import (
9
9
  JSONLikeDirSnapShot,
@@ -17,6 +17,7 @@ from hpcflow.sdk.core.utils import (
17
17
  check_valid_py_identifier,
18
18
  reshape,
19
19
  split_param_label,
20
+ substitute_string_vars,
20
21
  swap_nested_dict_keys,
21
22
  )
22
23
 
@@ -471,3 +472,46 @@ def test_swap_nested_dict_keys():
471
472
  "direct": {"p1": {"all_iterations": True}, "p3": {}},
472
473
  "json": {"p2": {}},
473
474
  }
475
+
476
+
477
+ def test_substitute_string_vars():
478
+ assert (
479
+ substitute_string_vars(
480
+ "hello <<var:my_name>>!",
481
+ variables={"my_name": "bob"},
482
+ )
483
+ == "hello bob!"
484
+ )
485
+
486
+
487
+ def test_substitute_string_vars_repeated_var():
488
+ assert (
489
+ substitute_string_vars(
490
+ "hello <<var:my_name>>; how are you <<var:my_name>>!",
491
+ variables={"my_name": "bob"},
492
+ )
493
+ == "hello bob; how are you bob!"
494
+ )
495
+
496
+
497
+ def test_substitute_string_vars_no_vars():
498
+ assert (
499
+ substitute_string_vars(
500
+ "hello bob!",
501
+ )
502
+ == "hello bob!"
503
+ )
504
+
505
+
506
+ def test_substitute_string_vars_raise_no_vars():
507
+ with pytest.raises(MissingVariableSubstitutionError):
508
+ substitute_string_vars("hello <<var:my_name>>")
509
+
510
+
511
+ def test_substitute_string_vars_raise_missing():
512
+ with pytest.raises(MissingVariableSubstitutionError):
513
+ substitute_string_vars("hello <<var:my_name>>", variables={"a": "b"})
514
+
515
+
516
+ def test_substitute_string_vars_non_str():
517
+ assert substitute_string_vars("<<var:a>>", variables={"a": 2}) == "2"
@@ -24,3 +24,12 @@ def test_reuse(null_config, tmp_path):
24
24
  wkt = hf.WorkflowTemplate(name="test", tasks=[])
25
25
  wk1 = hf.Workflow.from_template(wkt, name="test_1", path=tmp_path)
26
26
  wk2 = hf.Workflow.from_template(wkt, name="test_2", path=tmp_path)
27
+
28
+
29
+ def test_workflow_template_vars(tmp_path, new_null_config):
30
+ num_repeats = 2
31
+ wkt = make_test_data_YAML_workflow_template(
32
+ workflow_name="benchmark_N_elements.yaml",
33
+ variables={"N": num_repeats},
34
+ )
35
+ assert wkt.tasks[0].element_sets[0].repeats[0]["number"] == num_repeats
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: hpcflow-new2
3
- Version: 0.2.0a149
3
+ Version: 0.2.0a153
4
4
  Summary: Computational workflow management
5
5
  License: MIT
6
6
  Author: aplowman
@@ -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=0opx0sOm_ccCcxJZcAyKG4vUypLshLxdYGNv70Lmnj0,26
4
+ hpcflow/_version.py,sha256=VATiDwk3P7uiXGEaFC2lsSEIJPtfwrzAE_Am9o1urrQ,26
5
5
  hpcflow/app.py,sha256=GQsMq_sjjXxMLLiIPF1ZvyapW_7IgsxALCCwMiqmC8I,1520
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
@@ -34,9 +34,9 @@ hpcflow/data/workflows/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3
34
34
  hpcflow/data/workflows/workflow_1.yaml,sha256=lF7Re2SVc_5gQk5AwB0gXaq-n-T5ia4su3zNQ9oMRV0,220
35
35
  hpcflow/examples.ipynb,sha256=cLKp4QsxwwMXRanDnfWY9kqsV23q6G4raOpu6IZXnMw,28553
36
36
  hpcflow/sdk/__init__.py,sha256=QN1hUM9MdJ5yB3ou8q3ky530TdSd8BJi1V4XI2NmT4k,5643
37
- hpcflow/sdk/app.py,sha256=WYpoGT4kbWc_PYYsyeH-zoRFtcSMfU3KO0ghc_b_82Y,89345
38
- hpcflow/sdk/cli.py,sha256=7cmsMjuWHiTjhyeNW5t61ykD50YCaXuQT4zLQL2Y57Y,33591
39
- hpcflow/sdk/cli_common.py,sha256=vkA1RXVykxzIVgg7DS2pxlTn1mGyhr8xAf6zir08WG0,3974
37
+ hpcflow/sdk/app.py,sha256=JxBI3hPXkSfNvd71OUQaA1QpYw2vvFqBl_0eB2-wE8Q,90382
38
+ hpcflow/sdk/cli.py,sha256=0ww5eqikpUcy-zNwpZiKgFs86lF1hymtDFXWau-E9UA,34624
39
+ hpcflow/sdk/cli_common.py,sha256=5lYYuwlP1D9kmULEk4r5iCT30hrx8sCjd40pttIfvh4,4257
40
40
  hpcflow/sdk/config/__init__.py,sha256=qJrrxcAN4f1u_RyTtXgz-xlTLwNafE9v0VEMP1x6-bU,70
41
41
  hpcflow/sdk/config/callbacks.py,sha256=7z0rFX7ULUTAo24IJr6kLzPmZCgmkaQ8P5e-AfYTcY8,5339
42
42
  hpcflow/sdk/config/cli.py,sha256=PsmqrC21GAXx_-UHWVgqg-3luVe4r_MG0HjFRv2Yy1Y,10638
@@ -44,24 +44,24 @@ hpcflow/sdk/config/config.py,sha256=9DZi7sebFJUU4gGfJIrKijNAOtWy015Rc8my8hF1mXo,
44
44
  hpcflow/sdk/config/config_file.py,sha256=JlMcprj0aujFVk8552ahP2f8EXB0tglMaHwzbcGZH6w,12373
45
45
  hpcflow/sdk/config/errors.py,sha256=2D7HJ1dbyeoD3xk4MuaGSsbJsUyQzyw8kaThEBZfP2I,6876
46
46
  hpcflow/sdk/core/__init__.py,sha256=GcIklEsXy3M5PWpmxyhd2KoI0u6HjXRIjD_aR1bgRjo,215
47
- hpcflow/sdk/core/actions.py,sha256=GPUchju1f1BI0Ju8lPeiK3EUp1yHERcegVsZf0ZEcGY,74127
47
+ hpcflow/sdk/core/actions.py,sha256=ad8oQlLL_wxXnurao0ABLLKm0yA4lHyoBwR06PAk8Jg,74184
48
48
  hpcflow/sdk/core/command_files.py,sha256=oEW6g6f_cQFmRAgP1DTWPZPhufXcRi56yJZWaS8fU28,18161
49
49
  hpcflow/sdk/core/commands.py,sha256=-Tiu7zVVwWr1xiTXVB9oH3E4g09ebRRtHSRrMdFDCRY,12060
50
50
  hpcflow/sdk/core/element.py,sha256=nKKvUDP-rLECq-1nP4Fv0OfUA7GKmE3df37ku0ZyKzQ,45408
51
51
  hpcflow/sdk/core/environment.py,sha256=DGUz1NvliKh6opP0IueGHD69rn_8wFLhDsq6kAmEgM4,4849
52
- hpcflow/sdk/core/errors.py,sha256=wtoeyAaYPvRPc4W9AatdPqmOedShJgu__CLO8r7ngdI,8651
52
+ hpcflow/sdk/core/errors.py,sha256=AaJWGyKUuHlAAP2LcVIg7D7aw2noL06G4OzP89sUcxU,8712
53
53
  hpcflow/sdk/core/json_like.py,sha256=LRZsUd1tn8zXC8fESeiXs7Eko-VdnB8zcXiqixKVcZM,18874
54
54
  hpcflow/sdk/core/loop.py,sha256=5Ai_HHCzM21_IOvtgobE8yi_b9dc9jWQijt2LyI3PlM,21865
55
55
  hpcflow/sdk/core/object_list.py,sha256=bhJc-U4BpGDQMW4x0sQlVOlgNH2XIeVS4Re0u_x0l80,19866
56
56
  hpcflow/sdk/core/parallel.py,sha256=LI-g-qOuOR1oaEUWVT0qW0hmiP9hsJyUP8_IfSTKYYo,95
57
57
  hpcflow/sdk/core/parameters.py,sha256=U4nh7rSZlafgq_zR1f6qn0qqBh5tSjNZ45Yp2gseb0Q,64086
58
58
  hpcflow/sdk/core/rule.py,sha256=chMn-Unu_4Mtc3T4z93OpmYcqOapqYAdBWuRSP8CBdg,4510
59
- hpcflow/sdk/core/task.py,sha256=DRaB7CHQTyI-VNb-6vbFIyKxjBGzl0MNwCIVf2cDMds,108685
59
+ hpcflow/sdk/core/task.py,sha256=qX_LECPBK2ZESsSTvl_DQFN8IwULorJXy7g5WBwHpaE,108874
60
60
  hpcflow/sdk/core/task_schema.py,sha256=T94-3KIoMaAlQc0Z51zqGDO46n6CUfE1Mwkvf9GVtXQ,31452
61
61
  hpcflow/sdk/core/test_utils.py,sha256=9VwdOi4oPZ-fPXvLgJNRnRjLy2G4-We9lrOkbrzCVcQ,9334
62
- hpcflow/sdk/core/utils.py,sha256=vZbMNYoDQNIWgSaBG0gqpNP93_X36I0uimABv064Z_A,23347
62
+ hpcflow/sdk/core/utils.py,sha256=9VXHcM64DfuqvivAuc56g9S8EYEGUOU1TH-ZwfqDWH8,24403
63
63
  hpcflow/sdk/core/validation.py,sha256=KBKiy5DdfGiGmMaB0HdKTY0V972u5dJzvkYkX0_KtCo,518
64
- hpcflow/sdk/core/workflow.py,sha256=BWjJGYMxRU1ohKkXA48m9kIm_Rpl1qAGFpbtwv8_Uak,97908
64
+ hpcflow/sdk/core/workflow.py,sha256=139wrrGPZfNyNpcb0TP_1892yOvPByqczJuQ-N1k5Kw,100608
65
65
  hpcflow/sdk/core/zarr_io.py,sha256=V_Zm6uSiuaCbXyHFJUO74K1pAr4Zqrj3aLCBjohCwvs,5724
66
66
  hpcflow/sdk/data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
67
67
  hpcflow/sdk/data/config_file_schema.yaml,sha256=7i3z_m3GBRtLyB4c7qPngnlQWqcIq1CyCcOysDyq4es,791
@@ -72,19 +72,19 @@ hpcflow/sdk/data/parameters_spec_schema.yaml,sha256=Wj7CvG7Ul1nZDtBca-oxeFH_aSZk
72
72
  hpcflow/sdk/data/task_schema_spec_schema.yaml,sha256=6NROg7x-493bdvRwvY4M71R7POT-tNnmROkEsnnoL4k,93
73
73
  hpcflow/sdk/data/workflow_spec_schema.yaml,sha256=LLUV6RsdgT2BQrEPNKLCUB5Uijt9wxT9Bac2PLyGha8,1797
74
74
  hpcflow/sdk/demo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
75
- hpcflow/sdk/demo/cli.py,sha256=I1hzKTjoBfq6urL3hTJ5idAVnpbd96CCUSSpleTsvgs,5165
75
+ hpcflow/sdk/demo/cli.py,sha256=hMwViEXn_D7h4-G1VRMnw93ij7Gi0chM2SXQx4h7db8,5345
76
76
  hpcflow/sdk/helper/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
77
77
  hpcflow/sdk/helper/cli.py,sha256=QPVvhXEtY3n87ua_6eBh-osaQeEBgG7g7kUR4jghqtI,3491
78
78
  hpcflow/sdk/helper/helper.py,sha256=MkjYKHox1F4XOpy-20sCCDUTWUbQY84QpWZkcpSq9n8,8143
79
79
  hpcflow/sdk/helper/watcher.py,sha256=hLqgwXtZw-6ihNUUcWYnZw8TCyD_AdhYE7abOrO2r_0,4003
80
- hpcflow/sdk/log.py,sha256=6bqL67oCSLgEBE3xb3N46QWEuuVJLF4wXYu2Ys0p3ss,1925
80
+ hpcflow/sdk/log.py,sha256=VVxBnV0B_mcCTK3WrpEICAe-gnZsxoomafuOEGgO0TI,5735
81
81
  hpcflow/sdk/persistence/__init__.py,sha256=IzWycfiO6rDn_7Kocw4Df5ETe9BSoaqqxG7Yp4FW_ls,900
82
- hpcflow/sdk/persistence/base.py,sha256=dHJuSVKY1UuenOLBKeuE62AqsuGPnRu7ayg_w476e98,56206
82
+ hpcflow/sdk/persistence/base.py,sha256=MN-ZlQLZ_q6WGlUz0JiDYGG4x3gvUV_2MfOvQ3sMecE,56283
83
83
  hpcflow/sdk/persistence/json.py,sha256=aWj5R9PsGzudkD5N85W3vQF2tifekgnAbAtw-OK6ixg,19465
84
- hpcflow/sdk/persistence/pending.py,sha256=8XaxuOB2QAodoYP61d3j0cxJtZ4Ek1qYV0KgPj5cUTs,22934
84
+ hpcflow/sdk/persistence/pending.py,sha256=Ub4m4ng2x9oDTR2h6PoBJiUZKLwmMYprJ5hdI3FQ2r0,23498
85
85
  hpcflow/sdk/persistence/store_resource.py,sha256=oEyocRqa8Uym-57UFosrwate-Xw9O7i2FM82TxHc4m0,4307
86
86
  hpcflow/sdk/persistence/utils.py,sha256=woLFUXYkdZQqXeBcoDjVuPEq2xdaWVhGO0YP6Qvc2Ww,1517
87
- hpcflow/sdk/persistence/zarr.py,sha256=SA2z7zeZcrwmlxKd3B5y23Jv3-Ih0t6bsUMzoNfiPHY,41534
87
+ hpcflow/sdk/persistence/zarr.py,sha256=FIuufyaQJ6guGonmbc5a6-gGGXvalaLSbzPNolLDv3U,41592
88
88
  hpcflow/sdk/runtime.py,sha256=-n8OHcbhSVCGGlyWcJvadpsUAIJzzuWVXkZav1RQSio,9555
89
89
  hpcflow/sdk/submission/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
90
90
  hpcflow/sdk/submission/jobscript.py,sha256=XoFiD6qbWOVG30bRtiAfys-erTbv4g6PWGRxSux0kP4,44170
@@ -103,6 +103,7 @@ hpcflow/sdk/submission/submission.py,sha256=Y5sc8kf9WNTJ0uLM9wRCKkiLodewq2oOsrlL
103
103
  hpcflow/sdk/typing.py,sha256=p1duIXcWh5FRNZIGUjsTcnqjGDg2-nCpfNicrut-VPk,327
104
104
  hpcflow/tests/conftest.py,sha256=38FCWeZdwoGI1Nh1cHG9afp2K8HJQ4sUE_h3gE26Qe4,3479
105
105
  hpcflow/tests/data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
106
+ hpcflow/tests/data/benchmark_N_elements.yaml,sha256=6N6QK5y4A-o6u-XZHe7igcUvzjx73sBmnNLt9MXCSJs,108
106
107
  hpcflow/tests/data/workflow_1.json,sha256=xdqa8nIOxNN-A2F7wJX7LTOT3KOEZmulaa-9tsSB-nk,119
107
108
  hpcflow/tests/data/workflow_1.yaml,sha256=7mGwCCQX3VBWcpSYecAKqz_Gd-IODjhOlDNPh95Rw2U,85
108
109
  hpcflow/tests/data/workflow_1_slurm.yaml,sha256=0Hg9FbOKb0iFKzJOStVloJ5wgTGYYxoc2Yg8-HnXlXY,124
@@ -138,14 +139,14 @@ hpcflow/tests/unit/test_slurm.py,sha256=ewfNuXXUEEelAxcd7MBbAQ-RCvU8xBenHTAyfXYF
138
139
  hpcflow/tests/unit/test_submission.py,sha256=E8ku48TeCpAQlYDci30D-hf0YvzbT3jpm-emAaS02Is,15764
139
140
  hpcflow/tests/unit/test_task.py,sha256=94TwyjlhKMRRXTQjys2a1PiK7A-rCzhnvrkk4vRz39I,70000
140
141
  hpcflow/tests/unit/test_task_schema.py,sha256=7a7o42gQhrZPMXfH0a6sGzFCJnuFrbDEl9u3u_bFsgw,3624
141
- hpcflow/tests/unit/test_utils.py,sha256=0qYbEC6vbVZizlyZgjDoEOrSAWQ-OYYl4ZEJVuEcg1o,11940
142
+ hpcflow/tests/unit/test_utils.py,sha256=le9bb-HvGSkbrntX5uUr6AePNYckKidgeY1FNqOPBUo,13092
142
143
  hpcflow/tests/unit/test_value_sequence.py,sha256=mEU_e5Bu0GzRjBGIgPbcu1MOcafd2bBn6Gz2b02U7jA,15258
143
144
  hpcflow/tests/unit/test_workflow.py,sha256=-zLw-vytXbD9vEGrAQ9ZYLuNqVdxSe9OG0LgSoneTiU,22855
144
- hpcflow/tests/unit/test_workflow_template.py,sha256=uDaZMwSEW6yj7R1u3SG25UM7TPdwOSXJcdGmsUxkw9o,1026
145
+ hpcflow/tests/unit/test_workflow_template.py,sha256=EItRqUyXpU2z_z1rvpRqa848YOkXiBRLMj3oF_m7Ybw,1328
145
146
  hpcflow/tests/workflows/test_jobscript.py,sha256=9sp1o0g72JZbv2QlOl5v7wCZEFjotxiIKGNUxVaFgaA,724
146
147
  hpcflow/tests/workflows/test_workflows.py,sha256=xai6FRtGqG4lStJk6KmsqPUSuvqs9FrsBOxMVALshIs,13400
147
148
  hpcflow/viz_demo.ipynb,sha256=1QdnVsk72vihv2L6hOGyk318uEa22ZSgGxQCa7hW2oo,6238
148
- hpcflow_new2-0.2.0a149.dist-info/METADATA,sha256=lF0YJdAvc6Ltg1hoEv89SsXRtDAVcFOAk1mlEvso3sI,2516
149
- hpcflow_new2-0.2.0a149.dist-info/WHEEL,sha256=kLuE8m1WYU0Ig0_YEGrXyTtiJvKPpLpDEiChiNyei5Y,88
150
- hpcflow_new2-0.2.0a149.dist-info/entry_points.txt,sha256=aoGtCnFdfPcXfBdu2zZyMOJoz6fPgdR0elqsgrE-USU,106
151
- hpcflow_new2-0.2.0a149.dist-info/RECORD,,
149
+ hpcflow_new2-0.2.0a153.dist-info/METADATA,sha256=qSCp4BL7_XSlWLbkgyvfTBF5t4yiqdjv6Rh_crWhJqg,2516
150
+ hpcflow_new2-0.2.0a153.dist-info/WHEEL,sha256=kLuE8m1WYU0Ig0_YEGrXyTtiJvKPpLpDEiChiNyei5Y,88
151
+ hpcflow_new2-0.2.0a153.dist-info/entry_points.txt,sha256=aoGtCnFdfPcXfBdu2zZyMOJoz6fPgdR0elqsgrE-USU,106
152
+ hpcflow_new2-0.2.0a153.dist-info/RECORD,,