dv-flow-mgr 0.0.1.14110240305a1__py3-none-any.whl → 0.0.1.14139694132a1__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_ctor_def_base.py +0 -3
- dv_flow/mgr/task_node_ctor_proxy.py +0 -3
- dv_flow/mgr/task_node_ctor_task.py +0 -4
- dv_flow/mgr/task_node_ctor_wrapper.py +0 -3
- dv_flow/mgr/task_node_leaf.py +18 -4
- dv_flow/mgr/task_runner.py +32 -29
- {dv_flow_mgr-0.0.1.14110240305a1.dist-info → dv_flow_mgr-0.0.1.14139694132a1.dist-info}/METADATA +1 -1
- {dv_flow_mgr-0.0.1.14110240305a1.dist-info → dv_flow_mgr-0.0.1.14139694132a1.dist-info}/RECORD +17 -17
- {dv_flow_mgr-0.0.1.14110240305a1.dist-info → dv_flow_mgr-0.0.1.14139694132a1.dist-info}/WHEEL +0 -0
- {dv_flow_mgr-0.0.1.14110240305a1.dist-info → dv_flow_mgr-0.0.1.14139694132a1.dist-info}/entry_points.txt +0 -0
- {dv_flow_mgr-0.0.1.14110240305a1.dist-info → dv_flow_mgr-0.0.1.14139694132a1.dist-info}/licenses/LICENSE +0 -0
- {dv_flow_mgr-0.0.1.14110240305a1.dist-info → dv_flow_mgr-0.0.1.14139694132a1.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:
|
@@ -28,9 +28,6 @@ import logging
|
|
28
28
|
import toposort
|
29
29
|
from typing import Any, Callable, ClassVar, Dict, List, Tuple
|
30
30
|
from .task_data import TaskDataInput, TaskDataOutput, TaskDataResult
|
31
|
-
from .task_params_ctor import TaskParamsCtor
|
32
|
-
from .param_ref_eval import ParamRefEval
|
33
|
-
from .param import Param
|
34
31
|
from .task_node_ctor import TaskNodeCtor
|
35
32
|
|
36
33
|
@dc.dataclass
|
@@ -28,9 +28,6 @@ import logging
|
|
28
28
|
import toposort
|
29
29
|
from typing import Any, Callable, ClassVar, Dict, List, Tuple
|
30
30
|
from .task_data import TaskDataInput, TaskDataOutput, TaskDataResult
|
31
|
-
from .task_params_ctor import TaskParamsCtor
|
32
|
-
from .param_ref_eval import ParamRefEval
|
33
|
-
from .param import Param
|
34
31
|
from .task_node import TaskNode
|
35
32
|
from .task_node_ctor import TaskNodeCtor
|
36
33
|
from .task_node_ctor_def_base import TaskNodeCtorDefBase
|
@@ -28,12 +28,8 @@ import logging
|
|
28
28
|
import toposort
|
29
29
|
from typing import Any, Callable, ClassVar, Dict, List, Tuple
|
30
30
|
from .task_data import TaskDataInput, TaskDataOutput, TaskDataResult
|
31
|
-
from .task_params_ctor import TaskParamsCtor
|
32
|
-
from .param_ref_eval import ParamRefEval
|
33
|
-
from .param import Param
|
34
31
|
from .task_node import TaskNode
|
35
32
|
from .task_node_leaf import TaskNodeLeaf
|
36
|
-
from .task_node_ctor import TaskNodeCtor
|
37
33
|
from .task_node_ctor_def_base import TaskNodeCtorDefBase
|
38
34
|
|
39
35
|
@dc.dataclass
|
@@ -28,13 +28,10 @@ import logging
|
|
28
28
|
import toposort
|
29
29
|
from typing import Any, Callable, ClassVar, Dict, List, Tuple
|
30
30
|
from .task_data import TaskDataInput, TaskDataOutput, TaskDataResult
|
31
|
-
from .task_params_ctor import TaskParamsCtor
|
32
|
-
from .param_ref_eval import ParamRefEval
|
33
31
|
from .param import Param
|
34
32
|
from .task_node import TaskNode
|
35
33
|
from .task_node_leaf import TaskNodeLeaf
|
36
34
|
from .task_node_ctor import TaskNodeCtor
|
37
|
-
from .task_node_ctor_def_base import TaskNodeCtorDefBase
|
38
35
|
|
39
36
|
@dc.dataclass
|
40
37
|
class TaskNodeCtorWrapper(TaskNodeCtor):
|
dv_flow/mgr/task_node_leaf.py
CHANGED
@@ -7,8 +7,8 @@ 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
|
-
from .task_params_ctor import TaskParamsCtor
|
12
12
|
from .param_ref_eval import ParamRefEval
|
13
13
|
from .param import Param
|
14
14
|
|
@@ -83,10 +83,12 @@ class TaskNodeLeaf(TaskNode):
|
|
83
83
|
|
84
84
|
# Default inputs is the list of parameter sets that match 'consumes'
|
85
85
|
inputs = []
|
86
|
-
if self.consumes
|
86
|
+
if isinstance(self.consumes, list) and len(self.consumes):
|
87
87
|
for in_p in in_params:
|
88
88
|
if self._matches(in_p, self.consumes):
|
89
89
|
inputs.append(in_p)
|
90
|
+
elif self.consumes == ConsumesE.All:
|
91
|
+
inputs = in_params.copy()
|
90
92
|
|
91
93
|
for name,field in self.params.model_fields.items():
|
92
94
|
value = getattr(self.params, name)
|
@@ -125,10 +127,17 @@ class TaskNodeLeaf(TaskNode):
|
|
125
127
|
# Add an entry for ourselves
|
126
128
|
dep_m[self.name] = list(need.name for need,_ in self.needs)
|
127
129
|
|
128
|
-
if self.passthrough:
|
130
|
+
if isinstance(self.passthrough, list):
|
131
|
+
self._log.warning("List-based passthrough not yet supported")
|
132
|
+
elif self.passthrough == PassthroughE.All:
|
133
|
+
self._log.debug("Propagating all input parameters to output")
|
134
|
+
for need,block in self.needs:
|
135
|
+
if not block:
|
136
|
+
output.extend(need.output.output)
|
137
|
+
elif self.passthrough == PassthroughE.Unused:
|
129
138
|
self._log.debug("passthrough: %s" % self.name)
|
130
139
|
|
131
|
-
if self.consumes
|
140
|
+
if self.consumes == ConsumesE.No or (isinstance(self.consumes, list) and len(self.consumes) == 0):
|
132
141
|
self._log.debug("Propagating all input parameters to output")
|
133
142
|
for need,block in self.needs:
|
134
143
|
if not block:
|
@@ -164,6 +173,11 @@ class TaskNodeLeaf(TaskNode):
|
|
164
173
|
# TODO:
|
165
174
|
self._log.debug("<-- do_run: %s" % self.name)
|
166
175
|
|
176
|
+
if self.result is None:
|
177
|
+
raise Exception("Task %s did not produce a result" % self.name)
|
178
|
+
|
179
|
+
if self.output is None:
|
180
|
+
raise Exception("Task %s did not produce a result" % self.name)
|
167
181
|
return self.result
|
168
182
|
|
169
183
|
def __hash__(self):
|
dv_flow/mgr/task_runner.py
CHANGED
@@ -117,20 +117,7 @@ class TaskSetRunner(TaskRunner):
|
|
117
117
|
while len(active_task_l) >= self.nproc and t not in done_task_s:
|
118
118
|
# Wait for at least one job to complete
|
119
119
|
done, pending = await asyncio.wait(at[1] for at in active_task_l)
|
120
|
-
|
121
|
-
for i in range(len(active_task_l)):
|
122
|
-
if active_task_l[i][1] == d:
|
123
|
-
tt = active_task_l[i][0]
|
124
|
-
tt.end = datetime.now()
|
125
|
-
if tt.result.memento is not None:
|
126
|
-
dst_memento[tt.name] = tt.result.memento.model_dump()
|
127
|
-
else:
|
128
|
-
dst_memento[tt.name] = None
|
129
|
-
self.status |= tt.result.status
|
130
|
-
self._notify(tt, "leave")
|
131
|
-
done_task_s.add(tt)
|
132
|
-
active_task_l.pop(i)
|
133
|
-
break
|
120
|
+
self._completeTasks(active_task_l, done_task_s, done, dst_memento)
|
134
121
|
|
135
122
|
if self.status == 0 and t not in done_task_s:
|
136
123
|
memento = src_memento.get(t.name, None)
|
@@ -162,19 +149,10 @@ class TaskSetRunner(TaskRunner):
|
|
162
149
|
|
163
150
|
# All pending tasks in the task-group have been launched
|
164
151
|
# Wait for them to all complete
|
165
|
-
|
152
|
+
while len(active_task_l):
|
166
153
|
# TODO: Shouldn't gather here -- reach to each completion
|
167
|
-
|
168
|
-
|
169
|
-
for tt in active_task_l:
|
170
|
-
tt[0].end = datetime.now()
|
171
|
-
if tt[0].result.memento is not None:
|
172
|
-
dst_memento[tt[0].name] = tt[0].result.memento.model_dump()
|
173
|
-
else:
|
174
|
-
dst_memento[tt[0].name] = None
|
175
|
-
self.status |= tt[0].result.status
|
176
|
-
self._notify(tt[0], "leave")
|
177
|
-
active_task_l.clear()
|
154
|
+
done, pending = await asyncio.wait(at[1] for at in active_task_l)
|
155
|
+
self._completeTasks(active_task_l, done_task_s, done, dst_memento)
|
178
156
|
|
179
157
|
if self.status != 0:
|
180
158
|
self._log.debug("Exiting due to status: %d", self.status)
|
@@ -183,10 +161,35 @@ class TaskSetRunner(TaskRunner):
|
|
183
161
|
with open(os.path.join(self.rundir, "cache", "mementos.json"), "w") as f:
|
184
162
|
json.dump(dst_memento, f)
|
185
163
|
|
186
|
-
if
|
187
|
-
|
164
|
+
if self.status == 0:
|
165
|
+
if isinstance(task, list):
|
166
|
+
for t in task:
|
167
|
+
if t.output is None:
|
168
|
+
raise Exception("Task %s did not produce output" % t.name)
|
169
|
+
return list(t.output for t in task)
|
170
|
+
else:
|
171
|
+
if task.output is None:
|
172
|
+
raise Exception("Task %s did not produce output" % task.name)
|
173
|
+
return task.output
|
188
174
|
else:
|
189
|
-
return
|
175
|
+
return None
|
176
|
+
|
177
|
+
def _completeTasks(self, active_task_l, done_task_s, done_l, dst_memento):
|
178
|
+
for d in done_l:
|
179
|
+
for i in range(len(active_task_l)):
|
180
|
+
if active_task_l[i][1] == d:
|
181
|
+
tt = active_task_l[i][0]
|
182
|
+
tt.end = datetime.now()
|
183
|
+
if tt.result.memento is not None:
|
184
|
+
dst_memento[tt.name] = tt.result.memento.model_dump()
|
185
|
+
else:
|
186
|
+
dst_memento[tt.name] = None
|
187
|
+
self.status |= tt.result.status
|
188
|
+
self._notify(tt, "leave")
|
189
|
+
done_task_s.add(tt)
|
190
|
+
active_task_l.pop(i)
|
191
|
+
break
|
192
|
+
pass
|
190
193
|
|
191
194
|
def buildDepMap(self, task : Union[TaskNode, List[TaskNode]]) -> Dict[TaskNode, Set[TaskNode]]:
|
192
195
|
tasks = task if isinstance(task, list) else [task]
|
{dv_flow_mgr-0.0.1.14110240305a1.dist-info → dv_flow_mgr-0.0.1.14139694132a1.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,23 +15,23 @@ 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
|
26
26
|
dv_flow/mgr/task_node_ctor_compound_proxy.py,sha256=fkH_b35xE0dABbRn9Boa80WWx_tR4L9v1mhX6faefpg,1999
|
27
|
-
dv_flow/mgr/task_node_ctor_def_base.py,sha256=
|
28
|
-
dv_flow/mgr/task_node_ctor_proxy.py,sha256=
|
29
|
-
dv_flow/mgr/task_node_ctor_task.py,sha256=
|
30
|
-
dv_flow/mgr/task_node_ctor_wrapper.py,sha256=
|
31
|
-
dv_flow/mgr/task_node_leaf.py,sha256=
|
27
|
+
dv_flow/mgr/task_node_ctor_def_base.py,sha256=KEOU0uRL8VxbANyOc7X5dUMERAtlqUAGI-pMPfbuHlU,1451
|
28
|
+
dv_flow/mgr/task_node_ctor_proxy.py,sha256=ViOFJ64JM4-CGFZNl89BghFuKSQ66kZVqSj4v2PA6VA,1906
|
29
|
+
dv_flow/mgr/task_node_ctor_task.py,sha256=qpgqMgQ-Nx4F2hAWfp08zPU43TbWs9rv0GnFuD84G6M,2085
|
30
|
+
dv_flow/mgr/task_node_ctor_wrapper.py,sha256=El09jWz6aAq08sy2ZPgr93LwtCi2Zyt1Ykh-Shd0Cho,3292
|
31
|
+
dv_flow/mgr/task_node_leaf.py,sha256=t1aP26CPCO89XSA_5AonvNFQhsgjJsq62lxY3TFyUMI,7231
|
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=mEFf0Mh5XYHkmB52UQI1gT9ugH9oISEb59Ce8EezZaI,9104
|
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.14139694132a1.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
53
|
+
dv_flow_mgr-0.0.1.14139694132a1.dist-info/METADATA,sha256=p0Qw8i67Jgu_NdhXRRZD_6xzpMtrELAJp4GE6Tuumjs,13336
|
54
|
+
dv_flow_mgr-0.0.1.14139694132a1.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
|
55
|
+
dv_flow_mgr-0.0.1.14139694132a1.dist-info/entry_points.txt,sha256=1roy8wAFM48LabOvr6jiOw0MUs-qE8X3Vf8YykPazxk,50
|
56
|
+
dv_flow_mgr-0.0.1.14139694132a1.dist-info/top_level.txt,sha256=amfVTkggzYPtWwLqNmRukfz1Buu0pGS2SrYBBLhXm04,8
|
57
|
+
dv_flow_mgr-0.0.1.14139694132a1.dist-info/RECORD,,
|
{dv_flow_mgr-0.0.1.14110240305a1.dist-info → dv_flow_mgr-0.0.1.14139694132a1.dist-info}/WHEEL
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|