dv-flow-mgr 0.0.1.14110240305a1__py3-none-any.whl → 0.0.1.14116344455a1__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.
- dv_flow/mgr/__init__.py +1 -0
- dv_flow/mgr/package_def.py +11 -5
- dv_flow/mgr/std/flow.dv +4 -2
- dv_flow/mgr/task_def.py +9 -5
- dv_flow/mgr/task_node.py +1 -1
- dv_flow/mgr/task_node_leaf.py +18 -3
- dv_flow/mgr/task_runner.py +11 -3
- {dv_flow_mgr-0.0.1.14110240305a1.dist-info → dv_flow_mgr-0.0.1.14116344455a1.dist-info}/METADATA +1 -1
- {dv_flow_mgr-0.0.1.14110240305a1.dist-info → dv_flow_mgr-0.0.1.14116344455a1.dist-info}/RECORD +13 -13
- {dv_flow_mgr-0.0.1.14110240305a1.dist-info → dv_flow_mgr-0.0.1.14116344455a1.dist-info}/WHEEL +0 -0
- {dv_flow_mgr-0.0.1.14110240305a1.dist-info → dv_flow_mgr-0.0.1.14116344455a1.dist-info}/entry_points.txt +0 -0
- {dv_flow_mgr-0.0.1.14110240305a1.dist-info → dv_flow_mgr-0.0.1.14116344455a1.dist-info}/licenses/LICENSE +0 -0
- {dv_flow_mgr-0.0.1.14110240305a1.dist-info → dv_flow_mgr-0.0.1.14116344455a1.dist-info}/top_level.txt +0 -0
dv_flow/mgr/__init__.py
CHANGED
dv_flow/mgr/package_def.py
CHANGED
@@ -33,7 +33,7 @@ from .fragment_def import FragmentDef
|
|
33
33
|
from .package import Package
|
34
34
|
from .package_import_spec import PackageImportSpec, PackageSpec
|
35
35
|
from .param_def import ParamDef
|
36
|
-
from .task_def import TaskDef
|
36
|
+
from .task_def import TaskDef, PassthroughE, ConsumesE
|
37
37
|
from .task_node_ctor import TaskNodeCtor
|
38
38
|
from .task_node_ctor_proxy import TaskNodeCtorProxy
|
39
39
|
from .task_node_ctor_task import TaskNodeCtorTask
|
@@ -183,7 +183,7 @@ class PackageDef(BaseModel):
|
|
183
183
|
base_params : BaseModel = None
|
184
184
|
callable = None
|
185
185
|
passthrough = task.passthrough
|
186
|
-
consumes =
|
186
|
+
consumes = task.consumes.copy() if isinstance(task.consumes, list) else task.consumes
|
187
187
|
needs = [] if task.needs is None else task.needs.copy()
|
188
188
|
fullname = self.name + "." + task.name
|
189
189
|
|
@@ -192,15 +192,21 @@ class PackageDef(BaseModel):
|
|
192
192
|
base_ctor_t = self.getTaskCtor(session, task.uses, tasks_m)
|
193
193
|
base_params = base_ctor_t.mkTaskParams()
|
194
194
|
|
195
|
-
|
196
|
-
|
197
|
-
consumes
|
195
|
+
if passthrough is None:
|
196
|
+
passthrough = base_ctor_t.passthrough
|
197
|
+
if consumes is None:
|
198
|
+
consumes = base_ctor_t.consumes
|
198
199
|
|
199
200
|
if base_ctor_t is None:
|
200
201
|
self._log.error("Failed to load task ctor %s" % task.uses)
|
201
202
|
else:
|
202
203
|
self._log.debug("No 'uses' specified")
|
203
204
|
|
205
|
+
if passthrough is None:
|
206
|
+
passthrough = PassthroughE.No
|
207
|
+
if consumes is None:
|
208
|
+
consumes = ConsumesE.All
|
209
|
+
|
204
210
|
# Determine the implementation constructor first
|
205
211
|
if task.pytask is not None:
|
206
212
|
# Built-in impl
|
dv_flow/mgr/std/flow.dv
CHANGED
@@ -37,7 +37,8 @@ package:
|
|
37
37
|
doc: |
|
38
38
|
Creates a fileset from a list of files or glob patterns
|
39
39
|
pytask: dv_flow.mgr.std.fileset.FileSet
|
40
|
-
passthrough:
|
40
|
+
passthrough: all
|
41
|
+
consumes: none
|
41
42
|
with:
|
42
43
|
base:
|
43
44
|
doc: |
|
@@ -61,7 +62,8 @@ package:
|
|
61
62
|
value: ""
|
62
63
|
- name: CreateFile
|
63
64
|
pytask: dv_flow.mgr.std.create_file.CreateFile
|
64
|
-
passthrough:
|
65
|
+
passthrough: all
|
66
|
+
consumes: none
|
65
67
|
doc: |
|
66
68
|
Creates one or more files in the run directory from
|
67
69
|
literal content in the .dv file. Outputs a fileset
|
dv_flow/mgr/task_def.py
CHANGED
@@ -39,8 +39,12 @@ class RundirE(enum.Enum):
|
|
39
39
|
Unique = "unique"
|
40
40
|
Inherit = "inherit"
|
41
41
|
|
42
|
+
class ConsumesE(enum.Enum):
|
43
|
+
No = "none"
|
44
|
+
All = "all"
|
45
|
+
|
42
46
|
class PassthroughE(enum.Enum):
|
43
|
-
No = "
|
47
|
+
No = "none"
|
44
48
|
All = "all"
|
45
49
|
Unused = "unused"
|
46
50
|
|
@@ -89,11 +93,11 @@ class TaskDef(BaseModel):
|
|
89
93
|
rundir : RundirE = dc.Field(
|
90
94
|
default=RundirE.Unique,
|
91
95
|
description="Specifies handling of this tasks's run directory")
|
92
|
-
passthrough: Union[
|
93
|
-
default=
|
96
|
+
passthrough: Union[PassthroughE, List[Any], None] = dc.Field(
|
97
|
+
default=None,
|
94
98
|
description="Specifies whether this task should pass its inputs to its output")
|
95
|
-
consumes : List[Any] = dc.Field(
|
96
|
-
|
99
|
+
consumes : Union[ConsumesE, List[Any], None] = dc.Field(
|
100
|
+
default=None,
|
97
101
|
description="Specifies matching patterns for parameter sets that this task consumes")
|
98
102
|
|
99
103
|
# out: List[TaskOutput] = dc.Field(default_factory=list)
|
dv_flow/mgr/task_node.py
CHANGED
@@ -86,7 +86,7 @@ class TaskNode(object):
|
|
86
86
|
for k,v in c.items():
|
87
87
|
self._log.debug("k,v: %s,%s - hasattr=%s" % (k,v, hasattr(params, k)))
|
88
88
|
if hasattr(params, k):
|
89
|
-
self._log.debug("getattr
|
89
|
+
self._log.debug("getattr=\"%s\" v=\"%s\"" % (getattr(params, k), v))
|
90
90
|
if getattr(params, k) == v:
|
91
91
|
match = True
|
92
92
|
else:
|
dv_flow/mgr/task_node_leaf.py
CHANGED
@@ -7,6 +7,7 @@ import logging
|
|
7
7
|
import toposort
|
8
8
|
from typing import Any, Callable, ClassVar, Dict, List, Tuple
|
9
9
|
from .task_data import TaskDataInput, TaskDataOutput, TaskDataResult
|
10
|
+
from .task_def import ConsumesE, PassthroughE
|
10
11
|
from .task_node import TaskNode
|
11
12
|
from .task_params_ctor import TaskParamsCtor
|
12
13
|
from .param_ref_eval import ParamRefEval
|
@@ -83,10 +84,12 @@ class TaskNodeLeaf(TaskNode):
|
|
83
84
|
|
84
85
|
# Default inputs is the list of parameter sets that match 'consumes'
|
85
86
|
inputs = []
|
86
|
-
if self.consumes
|
87
|
+
if isinstance(self.consumes, list) and len(self.consumes):
|
87
88
|
for in_p in in_params:
|
88
89
|
if self._matches(in_p, self.consumes):
|
89
90
|
inputs.append(in_p)
|
91
|
+
elif self.consumes == ConsumesE.All:
|
92
|
+
inputs = in_params.copy()
|
90
93
|
|
91
94
|
for name,field in self.params.model_fields.items():
|
92
95
|
value = getattr(self.params, name)
|
@@ -125,10 +128,17 @@ class TaskNodeLeaf(TaskNode):
|
|
125
128
|
# Add an entry for ourselves
|
126
129
|
dep_m[self.name] = list(need.name for need,_ in self.needs)
|
127
130
|
|
128
|
-
if self.passthrough:
|
131
|
+
if isinstance(self.passthrough, list):
|
132
|
+
self._log.warning("List-based passthrough not yet supported")
|
133
|
+
elif self.passthrough == PassthroughE.All:
|
134
|
+
self._log.debug("Propagating all input parameters to output")
|
135
|
+
for need,block in self.needs:
|
136
|
+
if not block:
|
137
|
+
output.extend(need.output.output)
|
138
|
+
elif self.passthrough == PassthroughE.Unused:
|
129
139
|
self._log.debug("passthrough: %s" % self.name)
|
130
140
|
|
131
|
-
if self.consumes
|
141
|
+
if self.consumes == ConsumesE.No or (isinstance(self.consumes, list) and len(self.consumes) == 0):
|
132
142
|
self._log.debug("Propagating all input parameters to output")
|
133
143
|
for need,block in self.needs:
|
134
144
|
if not block:
|
@@ -164,6 +174,11 @@ class TaskNodeLeaf(TaskNode):
|
|
164
174
|
# TODO:
|
165
175
|
self._log.debug("<-- do_run: %s" % self.name)
|
166
176
|
|
177
|
+
if self.result is None:
|
178
|
+
raise Exception("Task %s did not produce a result" % self.name)
|
179
|
+
|
180
|
+
if self.output is None:
|
181
|
+
raise Exception("Task %s did not produce a result" % self.name)
|
167
182
|
return self.result
|
168
183
|
|
169
184
|
def __hash__(self):
|
dv_flow/mgr/task_runner.py
CHANGED
@@ -183,10 +183,18 @@ class TaskSetRunner(TaskRunner):
|
|
183
183
|
with open(os.path.join(self.rundir, "cache", "mementos.json"), "w") as f:
|
184
184
|
json.dump(dst_memento, f)
|
185
185
|
|
186
|
-
if
|
187
|
-
|
186
|
+
if self.status == 0:
|
187
|
+
if isinstance(task, list):
|
188
|
+
for t in task:
|
189
|
+
if t.output is None:
|
190
|
+
raise Exception("Task %s did not produce output" % t.name)
|
191
|
+
return list(t.output for t in task)
|
192
|
+
else:
|
193
|
+
if task.output is None:
|
194
|
+
raise Exception("Task %s did not produce output" % task.name)
|
195
|
+
return task.output
|
188
196
|
else:
|
189
|
-
return
|
197
|
+
return None
|
190
198
|
|
191
199
|
def buildDepMap(self, task : Union[TaskNode, List[TaskNode]]) -> Dict[TaskNode, Set[TaskNode]]:
|
192
200
|
tasks = task if isinstance(task, list) else [task]
|
{dv_flow_mgr-0.0.1.14110240305a1.dist-info → dv_flow_mgr-0.0.1.14116344455a1.dist-info}/RECORD
RENAMED
@@ -1,4 +1,4 @@
|
|
1
|
-
dv_flow/mgr/__init__.py,sha256=
|
1
|
+
dv_flow/mgr/__init__.py,sha256=Zv-hbAhsxnQ49zy6_tKlwqgu5q12Yr7dCySyJMDtOO0,1154
|
2
2
|
dv_flow/mgr/__main__.py,sha256=ExLZCOjDZtxqPk_SSF5SZKkbYUjMmVca4sT2OeePv10,3437
|
3
3
|
dv_flow/mgr/eval_jq.py,sha256=bRsHtaN51qIOiZK1VJV52W0-vj5VH0nQ7XIFebZi5kI,1129
|
4
4
|
dv_flow/mgr/expr_eval.py,sha256=N_8hRIgzJK9JVqhRt8F9rc4S7AAdKHMMltafqk6KhJs,3113
|
@@ -7,7 +7,7 @@ dv_flow/mgr/fileset.py,sha256=4izm4-qldWLiZxWDUa5Em0iFizzS-S-O0YU6zvtbUUs,1264
|
|
7
7
|
dv_flow/mgr/fragment_def.py,sha256=AHx3ITbiNbGCzlDk5FM8Iimm0GJnWXDDRAoRC1b41jM,1647
|
8
8
|
dv_flow/mgr/out,sha256=d8GGBi3J43fhdLBlnsUbzBfRe0TD0QTP3nOTz54l2bI,200
|
9
9
|
dv_flow/mgr/package.py,sha256=9FhOu1hKYKzlD88zehwrI6KAcs1E7TbXDnq4v54dqDQ,1701
|
10
|
-
dv_flow/mgr/package_def.py,sha256=
|
10
|
+
dv_flow/mgr/package_def.py,sha256=WdVVpWVe4Pip5mR717iz2UWoZPkIfKrH8KzPIK-t73Y,20777
|
11
11
|
dv_flow/mgr/package_import_spec.py,sha256=aZMpnS9a5NFY76_pYXEuO3-Mkc_xFzy73fdrUe_54Dc,1760
|
12
12
|
dv_flow/mgr/param.py,sha256=kkxMRGf6mPjSZJsjgLKH2vJL62Sn0ZESvjBLkEYOp20,1386
|
13
13
|
dv_flow/mgr/param_def.py,sha256=mkAw3DanIxcVWRYeh9lUAfUMkpqDFly_Ku_iobr4ix8,1745
|
@@ -15,11 +15,11 @@ dv_flow/mgr/param_ref_eval.py,sha256=5yH37oIX6f2qmk7GfRgNT5qZx0jm3CJFgB9lLDZZ1yQ
|
|
15
15
|
dv_flow/mgr/parsetab.py,sha256=I-p3nC60t9jiNtPhKyl_sE92SiP96zJLnNdydcLy33g,3780
|
16
16
|
dv_flow/mgr/pkg_rgy.py,sha256=d1nIjRm3ymMNJT-yiMDxCS6bFisTPvLMqh5VrfsHVKM,5404
|
17
17
|
dv_flow/mgr/task_data.py,sha256=lN7Iq8YTitEMGG4rZqYQi6Ri2HuPgBQ5oGQbW-63T8c,12436
|
18
|
-
dv_flow/mgr/task_def.py,sha256=
|
18
|
+
dv_flow/mgr/task_def.py,sha256=9_VJfY8hfZI7x9LFqDxALurg6oWMQQw6rdsppcjTweM,3669
|
19
19
|
dv_flow/mgr/task_graph_builder.py,sha256=3jDlC6UinOHNZO1scO4g6bdDdLZKJEjtexxV9RXy0_4,14371
|
20
20
|
dv_flow/mgr/task_graph_dot_writer.py,sha256=GxqiYwQJbFgUQdnPCS9vpIYmYFbSXwnXCSbGmjbxC3M,2418
|
21
21
|
dv_flow/mgr/task_listener_log.py,sha256=hrJEjSRXXoovDTcD1Cmhi3Spzw7uEJ-WP6tv6JUaa6s,4060
|
22
|
-
dv_flow/mgr/task_node.py,sha256=
|
22
|
+
dv_flow/mgr/task_node.py,sha256=xkcdFZyEIIO6Natk-v4-5eyLZGI5kV0516kfjgqzQ34,3540
|
23
23
|
dv_flow/mgr/task_node_compound.py,sha256=y8_jzsfT9Vnm-tCWc_-hFHFoSat95zBXFibySu38YRA,1696
|
24
24
|
dv_flow/mgr/task_node_ctor.py,sha256=COFGvm5PR2B92H3uW1yhDIUCmppo9U4IfOcv_Jrsreo,3952
|
25
25
|
dv_flow/mgr/task_node_ctor_compound.py,sha256=inJeqOtlkVa7QRCzktqvVkkZ0vZALHFadIGlRZyDTD8,4006
|
@@ -28,10 +28,10 @@ dv_flow/mgr/task_node_ctor_def_base.py,sha256=C2EeKgjeHB9xdC7nkLMBOcektwDoLhdP-4
|
|
28
28
|
dv_flow/mgr/task_node_ctor_proxy.py,sha256=e1pfLBnJHAgQvkyNcB8sKw5DJdAPRphQz1-DT9Oheho,2017
|
29
29
|
dv_flow/mgr/task_node_ctor_task.py,sha256=9HT39F3KcEpnOBd0SbUqE6FaeSY5fFp_tN1bzGNfFKk,2237
|
30
30
|
dv_flow/mgr/task_node_ctor_wrapper.py,sha256=fRwO2RRJbt7IB1Ziwobmg0-nU5vFYsXoNV4IXfsS7mw,3435
|
31
|
-
dv_flow/mgr/task_node_leaf.py,sha256=
|
31
|
+
dv_flow/mgr/task_node_leaf.py,sha256=YofovCK8ozKOXyAAnoRq9fKcNh2kGGWxsQXh6l9K8t0,7276
|
32
32
|
dv_flow/mgr/task_output.py,sha256=ZwyvwnYj_gHOEFAEOH3m24Xfc4Cn77hb1j7LkX8_3C4,1086
|
33
33
|
dv_flow/mgr/task_params_ctor.py,sha256=BPkbnoCtzhCxc1g8CJ6VimCcm5UAu92PXeDMhQ4lYsQ,1957
|
34
|
-
dv_flow/mgr/task_runner.py,sha256=
|
34
|
+
dv_flow/mgr/task_runner.py,sha256=Ho-u4xhiTVrOhSgjtcv-6pA0euwI3JFNNAHRdmSVBaA,9477
|
35
35
|
dv_flow/mgr/type.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
36
36
|
dv_flow/mgr/type_def.py,sha256=NDeyplKrPnWwEv4yHkhXEMK9d9j39b5MOeLB-1Mchqo,1095
|
37
37
|
dv_flow/mgr/cmds/cmd_graph.py,sha256=Ykw__EdwamDBZZKxQZVbtMtFl7koq5dJMShTBXSM2pk,2672
|
@@ -41,7 +41,7 @@ dv_flow/mgr/share/flow.json,sha256=lNmZex9NXkYbyb2aZseQfUOkV9CMyfH0iLODEI7EPBw,5
|
|
41
41
|
dv_flow/mgr/std/create_file.py,sha256=wmn5N_mObx_wr2LPdKOVbNmdM71hhs3UXOv6Ap9l3Ts,2726
|
42
42
|
dv_flow/mgr/std/exec.py,sha256=UChqa_tAjvdB1NjqTsvlPgFomP8hMsX2rAOPyUonNpk,3896
|
43
43
|
dv_flow/mgr/std/fileset.py,sha256=5IxS6T-x0wzA6fdEQcfHZ9kNP8IpH9hfJ3UMhL4A6Iw,3911
|
44
|
-
dv_flow/mgr/std/flow.dv,sha256=
|
44
|
+
dv_flow/mgr/std/flow.dv,sha256=t8m-urWYhKEAOFhG4wlrMqGHwiWDyO8H-b6-5vNQkBk,3795
|
45
45
|
dv_flow/mgr/std/message.py,sha256=0JHLErg8whqMLAasG1fumZ2O7R7WNWeNQ9ibJaLDpVY,1029
|
46
46
|
dv_flow/mgr/std/task_null.py,sha256=dw6LXBXVwth6gLPeduDvlz5znAhcVpDH8r1DticD-0w,1041
|
47
47
|
dv_flow/mgr/util/__init__.py,sha256=6uuA6z5cKS2hcjJw6YyEM2M79g6OpXb6tZF_Gku-AGU,22
|
@@ -49,9 +49,9 @@ dv_flow/mgr/util/__main__.py,sha256=F0LXpCDpYTPalSo0dc1h_qZkip5v1AZYYh-vcYbh5s0,
|
|
49
49
|
dv_flow/mgr/util/util.py,sha256=yg9oTPRiO87mkCSOQpOtlG9vyKPQzY3qp4OJkEMbWyY,1443
|
50
50
|
dv_flow/mgr/util/cmds/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
51
51
|
dv_flow/mgr/util/cmds/cmd_schema.py,sha256=lrEI-Jwb8j4I4yYOn9hq7_7NYbK8leVxLesrHyEWm-E,1879
|
52
|
-
dv_flow_mgr-0.0.1.
|
53
|
-
dv_flow_mgr-0.0.1.
|
54
|
-
dv_flow_mgr-0.0.1.
|
55
|
-
dv_flow_mgr-0.0.1.
|
56
|
-
dv_flow_mgr-0.0.1.
|
57
|
-
dv_flow_mgr-0.0.1.
|
52
|
+
dv_flow_mgr-0.0.1.14116344455a1.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
53
|
+
dv_flow_mgr-0.0.1.14116344455a1.dist-info/METADATA,sha256=eCspmsiQjw9KIDGVt0zXfKIQufdktI71Mn-LkQcL6Vc,13336
|
54
|
+
dv_flow_mgr-0.0.1.14116344455a1.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
|
55
|
+
dv_flow_mgr-0.0.1.14116344455a1.dist-info/entry_points.txt,sha256=1roy8wAFM48LabOvr6jiOw0MUs-qE8X3Vf8YykPazxk,50
|
56
|
+
dv_flow_mgr-0.0.1.14116344455a1.dist-info/top_level.txt,sha256=amfVTkggzYPtWwLqNmRukfz1Buu0pGS2SrYBBLhXm04,8
|
57
|
+
dv_flow_mgr-0.0.1.14116344455a1.dist-info/RECORD,,
|
{dv_flow_mgr-0.0.1.14110240305a1.dist-info → dv_flow_mgr-0.0.1.14116344455a1.dist-info}/WHEEL
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|