hpcflow-new2 0.2.0a185__py3-none-any.whl → 0.2.0a187__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 CHANGED
@@ -1 +1 @@
1
- __version__ = "0.2.0a185"
1
+ __version__ = "0.2.0a187"
@@ -1,19 +1,26 @@
1
1
  - label: t1_infile_1
2
2
  name:
3
3
  name: t1_infile_1.txt
4
+ doc: Input file for demonstration task t1.
4
5
  - label: t1_infile_2
5
6
  name:
6
7
  name: t1_infile_2.txt
8
+ doc: Input file for demonstration task t1.
7
9
  - label: t1_outfile_1
8
10
  name:
9
11
  name: outfile.txt
12
+ doc: Output file for demonstration task t1.
10
13
  - label: lammps_atoms_file
11
14
  name:
12
15
  name: atoms.lammps
16
+ doc: The file of atoms processed by LAMMPS.
13
17
  - label: lammps_input_script
14
18
  name:
15
19
  name: in.lammps
20
+ doc: The LAMMPS control file.
16
21
  - label: lammps_dump_files
17
22
  name:
18
23
  name: (dump.\d+.txt)
19
24
  is_regex: true
25
+ doc: >
26
+ A regular expression pattern that matches all the dump files generated by a LAMMPS run.
@@ -1,4 +1,5 @@
1
1
  - name: null_env
2
+ doc: The default system environment.
2
3
 
3
4
  - name: python_env
4
5
  executables:
@@ -7,3 +8,6 @@
7
8
  - command: python <<script_name>> <<args>>
8
9
  num_cores: 1
9
10
  parallel_mode: null
11
+ doc: |
12
+ An environment for running Python, typically with access to hpcflow and matflow modules and their dependencies.
13
+ May be a Python virtual environment.
@@ -1,3 +1,4 @@
1
+ # These are only documented when their schemas are documented.
1
2
  - type: p1
2
3
  - type: p1c
3
4
  - type: p2
@@ -1,4 +1,7 @@
1
1
  - objective: test_t1_bash
2
+ doc: >
3
+ Simple echo test using bash.
4
+ <code>p1</code> &rarr; <code>p2</code>
2
5
  inputs:
3
6
  - parameter: p1
4
7
  outputs:
@@ -13,6 +16,9 @@
13
16
  stdout: <<parameter:p2>>
14
17
 
15
18
  - objective: test_t1_ps
19
+ doc: >
20
+ Simple echo test using powershell.
21
+ <code>p1</code> &rarr; <code>p2</code>
16
22
  inputs:
17
23
  - parameter: p1
18
24
  outputs:
@@ -27,6 +33,9 @@
27
33
  stdout: <<parameter:p2>>
28
34
 
29
35
  - objective: test_t1_conditional_OS
36
+ doc: >
37
+ Simple echo test showing conditional enactment schemes.
38
+ <code>p1</code> &rarr; <code>p2</code>
30
39
  inputs:
31
40
  - parameter: p1
32
41
  outputs:
@@ -54,6 +63,9 @@
54
63
  stdout: <<parameter:p2>>
55
64
 
56
65
  - objective: test_t2_bash
66
+ doc: >
67
+ Simple echo test using bash.
68
+ <code>p2</code> &rarr; <code>p3</code>
57
69
  inputs:
58
70
  - parameter: p2
59
71
  outputs:
@@ -68,6 +80,9 @@
68
80
  stdout: <<parameter:p3>>
69
81
 
70
82
  - objective: test_t2_ps
83
+ doc: >
84
+ Simple echo test using powershell.
85
+ <code>p2</code> &rarr; <code>p3</code>
71
86
  inputs:
72
87
  - parameter: p2
73
88
  outputs:
@@ -100,6 +115,9 @@
100
115
  # from_files: [t1_outfile_1]
101
116
 
102
117
  - objective: dummy_task_1
118
+ doc: >
119
+ A dummy task showing simple output file parsing.
120
+ <code>(p1, p2, p5)</code> &rarr; <code>p3</code>
103
121
  inputs:
104
122
  - parameter: p1
105
123
  - parameter: p2
@@ -119,6 +137,9 @@
119
137
  from_files: [t1_outfile_1]
120
138
 
121
139
  - objective: dummy_task_2
140
+ doc: >
141
+ A dummy task showing simple output file parsing.
142
+ <code>(p3, orientations)</code> &rarr; <code>p4</code>
122
143
  inputs:
123
144
  - parameter: p3
124
145
  - parameter: orientations
@@ -32,6 +32,8 @@ class FileSpec(JSONLike):
32
32
  label: str
33
33
  #: The name of the file.
34
34
  name: str
35
+ #: Documentation for the file specification.
36
+ doc: str = ""
35
37
  _hash_value: Optional[str] = field(default=None, repr=False)
36
38
 
37
39
  def __post_init__(self):
@@ -66,6 +68,17 @@ class FileSpec(JSONLike):
66
68
  """
67
69
  return self.name.ext
68
70
 
71
+ @property
72
+ def documentation(self) -> str:
73
+ """
74
+ Documentation for rendering via Jinja.
75
+ """
76
+ if self.doc:
77
+ import markupsafe
78
+
79
+ return markupsafe.Markup(self.doc)
80
+ return repr(self)
81
+
69
82
 
70
83
  class FileNameSpec(JSONLike):
71
84
  """
@@ -211,10 +211,18 @@ class Environment(JSONLike):
211
211
  )
212
212
 
213
213
  def __init__(
214
- self, name, setup=None, specifiers=None, executables=None, _hash_value=None
214
+ self,
215
+ name,
216
+ setup=None,
217
+ specifiers=None,
218
+ executables=None,
219
+ doc="",
220
+ _hash_value=None,
215
221
  ):
216
222
  #: The name of the environment.
217
223
  self.name = name
224
+ #: Documentation for the environment.
225
+ self.doc = doc
218
226
  #: Commands to run to enter the environment.
219
227
  self.setup = setup
220
228
  #: Dictionary of attributes that may be used to supply addional key/value pairs
@@ -257,3 +265,11 @@ class Environment(JSONLike):
257
265
  f"Executables must have unique `label`s within each environment, but "
258
266
  f"found label(s) multiple times: {dup_labels!r}"
259
267
  )
268
+
269
+ @property
270
+ def documentation(self) -> str:
271
+ if self.doc:
272
+ import markupsafe
273
+
274
+ return markupsafe.Markup(self.doc)
275
+ return repr(self)
@@ -112,6 +112,7 @@ class TaskSchema(JSONLike):
112
112
  parameter_class_modules: Optional[List[str]] = None,
113
113
  web_doc: Optional[bool] = True,
114
114
  environment_presets: Optional[Dict[str, Dict[str, Dict[str, Any]]]] = None,
115
+ doc: str = "",
115
116
  _hash_value: Optional[str] = None,
116
117
  ):
117
118
  #: This is a string representing the objective of the task schema.
@@ -133,6 +134,8 @@ class TaskSchema(JSONLike):
133
134
  self.web_doc = web_doc
134
135
  #: Information about default execution environments.
135
136
  self.environment_presets = environment_presets
137
+ #: Documentation information about the task schema.
138
+ self.doc = doc
136
139
  self._hash_value = _hash_value
137
140
 
138
141
  self._set_parent_refs()
@@ -589,11 +592,16 @@ class TaskSchema(JSONLike):
589
592
  )
590
593
  action_show_hide = ""
591
594
  act_heading_class = ""
595
+ description = (
596
+ f"<h3 class='task-desc'>Description</h3>{self.doc}" if self.doc else ""
597
+ )
592
598
  out = (
593
- f"<h5>Inputs</h5>{inputs_table}"
594
- f"<h5>Outputs</h5>{outputs_table}"
595
- # f"<h5>Examples</h5>examples here..." # TODO:
596
- f"<h5{act_heading_class}>Actions{action_show_hide}</h5>{action_table}"
599
+ f"{description}"
600
+ f"<h3>Inputs</h3>{inputs_table}"
601
+ f"<h3>Outputs</h3>{outputs_table}"
602
+ # f"<h3>Examples</h3>examples here..." # TODO:
603
+ f"<h3{act_heading_class}>Actions{action_show_hide}</h3>"
604
+ f"{action_table}"
597
605
  )
598
606
  return out
599
607
 
@@ -193,9 +193,11 @@ def make_workflow(
193
193
  return wk
194
194
 
195
195
 
196
- def make_test_data_YAML_workflow(workflow_name, path, **kwargs):
196
+ def make_test_data_YAML_workflow(
197
+ workflow_name, path, app=None, pkg="hpcflow.tests.data", **kwargs
198
+ ):
197
199
  """Generate a workflow whose template file is defined in the test data directory."""
198
- pkg = "hpcflow.tests.data"
200
+ app = hf if app is None else app
199
201
  try:
200
202
  script_ctx = resources.as_file(resources.files(pkg).joinpath(workflow_name))
201
203
  except AttributeError:
@@ -203,12 +205,14 @@ def make_test_data_YAML_workflow(workflow_name, path, **kwargs):
203
205
  script_ctx = resources.path(pkg, workflow_name)
204
206
 
205
207
  with script_ctx as file_path:
206
- return hf.Workflow.from_YAML_file(YAML_path=file_path, path=path, **kwargs)
208
+ return app.Workflow.from_YAML_file(YAML_path=file_path, path=path, **kwargs)
207
209
 
208
210
 
209
- def make_test_data_YAML_workflow_template(workflow_name, **kwargs):
211
+ def make_test_data_YAML_workflow_template(
212
+ workflow_name, app=None, pkg="hpcflow.tests.data", **kwargs
213
+ ):
210
214
  """Generate a workflow template whose file is defined in the test data directory."""
211
- pkg = "hpcflow.tests.data"
215
+ app = hf if app is None else app
212
216
  try:
213
217
  script_ctx = resources.as_file(resources.files(pkg).joinpath(workflow_name))
214
218
  except AttributeError:
@@ -216,7 +220,7 @@ def make_test_data_YAML_workflow_template(workflow_name, **kwargs):
216
220
  script_ctx = resources.path(pkg, workflow_name)
217
221
 
218
222
  with script_ctx as file_path:
219
- return hf.WorkflowTemplate.from_file(path=file_path, **kwargs)
223
+ return app.WorkflowTemplate.from_file(path=file_path, **kwargs)
220
224
 
221
225
 
222
226
  @dataclass
@@ -2,7 +2,7 @@ rules:
2
2
  - path: []
3
3
  condition:
4
4
  {
5
- value.allowed_keys: [name, setup, executables, specifiers, _hash_value],
5
+ value.allowed_keys: [name, setup, executables, specifiers, doc, _hash_value],
6
6
  }
7
7
  - path: [setup]
8
8
  condition:
@@ -1,5 +1,5 @@
1
1
  rules:
2
2
  - path: []
3
- condition: { value.allowed_keys: [label, name, _hash_value] }
3
+ condition: { value.allowed_keys: [label, name, doc, _hash_value] }
4
4
  - path: [name]
5
5
  condition: { value.allowed_keys: [name, args, is_regex] }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: hpcflow-new2
3
- Version: 0.2.0a185
3
+ Version: 0.2.0a187
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=C3p4CSYN9Aj246WMo18k7IpcpZxR_PPEEtdWh9kiVmA,26
4
+ hpcflow/_version.py,sha256=tZjj8d3X3pZKHr9ZyYEM1dJulI_o_IPI6rj5HHMLbUA,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=Hsq0jT8EXM13wu1MpGy5FQgyuz56ygep4VWOnulFn50,41
@@ -27,10 +27,10 @@ hpcflow/data/scripts/main_script_test_json_out_obj.py,sha256=9715rSsbslIB3ZuF22p
27
27
  hpcflow/data/scripts/main_script_test_json_sub_param_in_json_out_labels.py,sha256=GkKqWb-A32ahgX5L_uDWZFfjC6IhBOKKGGP34N2O2tA,402
28
28
  hpcflow/data/scripts/parse_t1_file_01.py,sha256=2BVotqY3sMc3FXSUPCvnzSHfymyGI9wYYOYrTrXngyI,125
29
29
  hpcflow/data/template_components/__init__.py,sha256=qv0IzZGQho4aBR2eld5rNFiYlb8nDcTvkAwa982jDWs,83
30
- hpcflow/data/template_components/command_files.yaml,sha256=9y82MoHkn6Vgi8V_SQgCWTLm09h5SlfbD8InRoJB3Qo,356
31
- hpcflow/data/template_components/environments.yaml,sha256=ed__VCjiRWGuX1GSRI7ut2DMeFu-_JnhgSEmLSXp3hY,200
32
- hpcflow/data/template_components/parameters.yaml,sha256=rJ-3f1GRiNGS6oDV9T1-H_fb1-o29KWn2hovJmDyLas,211
33
- hpcflow/data/template_components/task_schemas.yaml,sha256=VMtzckqDyfL9JpjYkG9FkzlVGYxaFvPo307Sx6ctVFk,3217
30
+ hpcflow/data/template_components/command_files.yaml,sha256=HmkyqF7ZJL4z6HDx6U2kaxxog22QGHBcxqZ5oQZdPaI,671
31
+ hpcflow/data/template_components/environments.yaml,sha256=OomUuUw1BLNGou-DeGhVwJBKz1nZTGdMJz4JV_g-5pQ,405
32
+ hpcflow/data/template_components/parameters.yaml,sha256=CMmO_2CofWi8OGQ0r9B8pIj4pf1F6LChYOjEuW1KD6U,274
33
+ hpcflow/data/template_components/task_schemas.yaml,sha256=CHMJZ6F9TAvNyhEYTJjmab12cPS8p2iPeWaTPHctNWY,3917
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
@@ -47,10 +47,10 @@ hpcflow/sdk/config/errors.py,sha256=HpqGJdFlJzFO2B7eRSvTHMySwCUAI-b89YRS1DyZ5As,
47
47
  hpcflow/sdk/core/__init__.py,sha256=qcsbBwQNp7HVDzW-HZWg2-J0BAFzU0tJmQP0jKDBR-Q,299
48
48
  hpcflow/sdk/core/actions.py,sha256=6gJnwYe3Olmz_FwiH4WvDbb3ffvNkhrByg-FsBGVSCI,90840
49
49
  hpcflow/sdk/core/cache.py,sha256=EX1Kx8qrAP_lJpadMgIH72CCJVe-_LWRA-Z1PwfsQPg,5949
50
- hpcflow/sdk/core/command_files.py,sha256=LMa4eXRLnl4NmOy5mYZkEBy4nWA9Nq6eUew8K_r7RCM,25142
50
+ hpcflow/sdk/core/command_files.py,sha256=O5UlbiOx5slu_1t6WY75LSywNPrydPgHqRqtX-01itc,25456
51
51
  hpcflow/sdk/core/commands.py,sha256=xIg82Fw6djuD32a4BwN5WreOlL-K7cUwg5ks8glwodM,14624
52
52
  hpcflow/sdk/core/element.py,sha256=EoWP2o6doLL_DjO1_VjK4y6-KyKasAXv_JWszFS7yIE,58150
53
- hpcflow/sdk/core/environment.py,sha256=IKU1-S6aCl8SBbXzuC2KTpMfzwTfGgNcdu8Hb7eCqz0,7729
53
+ hpcflow/sdk/core/environment.py,sha256=aN3iAllVY5XluyNDRsm52Gv2DqzeEoVNBSODjTZ4ncA,8031
54
54
  hpcflow/sdk/core/errors.py,sha256=gcy50oJbjGZzmVKpLl5nUxfJkanw_78bDPi5oQdaMa0,13728
55
55
  hpcflow/sdk/core/json_like.py,sha256=opGf5GnQdufrlYZUDI61Sq8FVOWDAIPdFUmmy5ohlbo,21329
56
56
  hpcflow/sdk/core/loop.py,sha256=0DEjHiw8xn4S2uPpaucpx2tnkMbETaFwMLnqe_Oye60,34130
@@ -61,8 +61,8 @@ hpcflow/sdk/core/parameters.py,sha256=V4zBIqLuc6lENHoUXTM3bjqRcfRfq-0ay0QuN3WwA5
61
61
  hpcflow/sdk/core/rule.py,sha256=cWpGaBiYsRHKeaG1XfbI_Rgwhpz6rfM-sQ1nUeTKKhA,5625
62
62
  hpcflow/sdk/core/run_dir_files.py,sha256=wtgWuvtWuNFo5YG5v1k3EBvYQFqGkr27mv4NqMlp4lQ,2410
63
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
64
+ hpcflow/sdk/core/task_schema.py,sha256=uuV8_2iEZ2Q-0ZMnkdgbUsR6b7KOLrGFG69QD7zE9wQ,34717
65
+ hpcflow/sdk/core/test_utils.py,sha256=_LoTkZj97lZkJ6ijvfWmPjn7tnsK9-h3dOTnE5rAgjs,10401
66
66
  hpcflow/sdk/core/utils.py,sha256=9PHfwfUyREJTSQYlCbRbKHwrx1SA6c7Uh_TFrg9xynQ,28591
67
67
  hpcflow/sdk/core/validation.py,sha256=jWBJiHOv2_pL-Dua9dpsd6Qc2KmDZOQeVhFri4vMn6U,704
68
68
  hpcflow/sdk/core/workflow.py,sha256=nd_NWNPZUgpc4GvX5Ivy1oF__Dj2Q_kIAfvQbBohXjs,120067
@@ -70,8 +70,8 @@ hpcflow/sdk/core/zarr_io.py,sha256=RgJia3jgE3Y16ERU4nWNzHNDkK-qDS1znZMB1IfOUd4,6
70
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
- hpcflow/sdk/data/environments_spec_schema.yaml,sha256=567S6KYkAzeV4eyUCuSpUr8LnsD2BKI7fUZVRxeYtsw,790
74
- hpcflow/sdk/data/files_spec_schema.yaml,sha256=yNA52Te-6p3a-TzWvrVx_0kEy7ZpJYhrLmgSbZ6UwH8,165
73
+ hpcflow/sdk/data/environments_spec_schema.yaml,sha256=MNNbc49HuATGYdVuItR4sbrvVDvNrADKnvSs3xCYqr0,795
74
+ hpcflow/sdk/data/files_spec_schema.yaml,sha256=kY--Jol4ia55ctzZa8a5ls8SPTdNwgDLoEoYbpP0EYs,170
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
@@ -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.0a185.dist-info/LICENSE,sha256=Xhxf_KsrJNJFGMogumZhXSTPhUOVHCWf7nU-TDzqg0E,16763
155
- hpcflow_new2-0.2.0a185.dist-info/METADATA,sha256=CMwsBvBMQHXOwYaKyFpSnRSd5svVHA8kkcfewDdVqRU,2465
156
- hpcflow_new2-0.2.0a185.dist-info/WHEEL,sha256=kLuE8m1WYU0Ig0_YEGrXyTtiJvKPpLpDEiChiNyei5Y,88
157
- hpcflow_new2-0.2.0a185.dist-info/entry_points.txt,sha256=aoGtCnFdfPcXfBdu2zZyMOJoz6fPgdR0elqsgrE-USU,106
158
- hpcflow_new2-0.2.0a185.dist-info/RECORD,,
154
+ hpcflow_new2-0.2.0a187.dist-info/LICENSE,sha256=Xhxf_KsrJNJFGMogumZhXSTPhUOVHCWf7nU-TDzqg0E,16763
155
+ hpcflow_new2-0.2.0a187.dist-info/METADATA,sha256=mctk35qSMCaPv8GpwqWnhI93-p52xBBoMCfkocV-9wM,2465
156
+ hpcflow_new2-0.2.0a187.dist-info/WHEEL,sha256=kLuE8m1WYU0Ig0_YEGrXyTtiJvKPpLpDEiChiNyei5Y,88
157
+ hpcflow_new2-0.2.0a187.dist-info/entry_points.txt,sha256=aoGtCnFdfPcXfBdu2zZyMOJoz6fPgdR0elqsgrE-USU,106
158
+ hpcflow_new2-0.2.0a187.dist-info/RECORD,,