dv-flow-mgr 0.0.1.13657597614a1__py3-none-any.whl → 0.0.1.13667970156a1__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 +2 -0
- dv_flow/mgr/expr_parser.py +9 -3
- dv_flow/mgr/fileset.py +2 -1
- dv_flow/mgr/package_def.py +28 -5
- dv_flow/mgr/parsetab.py +14 -14
- dv_flow/mgr/std/fileset.py +7 -2
- dv_flow/mgr/task_data.py +3 -2
- dv_flow/mgr/task_def.py +1 -0
- dv_flow/mgr/task_graph_builder.py +15 -2
- dv_flow/mgr/task_listener_log.py +9 -3
- dv_flow/mgr/task_node.py +23 -21
- dv_flow/mgr/task_runner.py +7 -0
- {dv_flow_mgr-0.0.1.13657597614a1.dist-info → dv_flow_mgr-0.0.1.13667970156a1.dist-info}/METADATA +1 -1
- {dv_flow_mgr-0.0.1.13657597614a1.dist-info → dv_flow_mgr-0.0.1.13667970156a1.dist-info}/RECORD +18 -18
- {dv_flow_mgr-0.0.1.13657597614a1.dist-info → dv_flow_mgr-0.0.1.13667970156a1.dist-info}/LICENSE +0 -0
- {dv_flow_mgr-0.0.1.13657597614a1.dist-info → dv_flow_mgr-0.0.1.13667970156a1.dist-info}/WHEEL +0 -0
- {dv_flow_mgr-0.0.1.13657597614a1.dist-info → dv_flow_mgr-0.0.1.13667970156a1.dist-info}/entry_points.txt +0 -0
- {dv_flow_mgr-0.0.1.13657597614a1.dist-info → dv_flow_mgr-0.0.1.13667970156a1.dist-info}/top_level.txt +0 -0
dv_flow/mgr/__init__.py
CHANGED
@@ -8,4 +8,6 @@ from .task_graph_runner import TaskGraphRunner
|
|
8
8
|
from .task_graph_runner_local import TaskGraphRunnerLocal
|
9
9
|
from .task_graph_builder import TaskGraphBuilder
|
10
10
|
from .task_node import task
|
11
|
+
from .task_runner import TaskSetRunner
|
12
|
+
from .task_listener_log import TaskListenerLog
|
11
13
|
|
dv_flow/mgr/expr_parser.py
CHANGED
@@ -143,7 +143,6 @@ class ExprParser(object):
|
|
143
143
|
t_RPAREN = r'\)'
|
144
144
|
t_ID = r'[a-zA-Z_][a-zA-Z0-9_]*'
|
145
145
|
t_PIPE = r'\|'
|
146
|
-
t_STRING2 = r'\'.*\''
|
147
146
|
|
148
147
|
def t_NUMBER(self, t):
|
149
148
|
r'\d+'
|
@@ -155,8 +154,15 @@ class ExprParser(object):
|
|
155
154
|
return t
|
156
155
|
|
157
156
|
def t_STRING1(self, t):
|
158
|
-
r'
|
159
|
-
t.value = t.value[1:-1].replace('
|
157
|
+
r'"([^"\\]*(\\.[^"\\]*)*)"'
|
158
|
+
t.value = t.value[1:-1].replace(r'\"', '"').replace(r'\\', '\\')
|
159
|
+
|
160
|
+
def t_STRING2(self, t):
|
161
|
+
r'\'([^\'\\]*(\\.[^\'\\]*)*)\''
|
162
|
+
t.value = t.value[1:-1].replace(r'\'', '"').replace(r'\\', '\\')
|
163
|
+
|
164
|
+
# r'(\'|\")([^\\\n]|(\\.))*?(\'|\")'
|
165
|
+
# t.value = t.value[1:-1].replace('\\"', '"').replace("\\'", "'").replace('\\n', '\n').replace('\\t', '\t').replace('\\\\', '\\')
|
160
166
|
return t
|
161
167
|
|
162
168
|
# Ignored characters
|
dv_flow/mgr/fileset.py
CHANGED
dv_flow/mgr/package_def.py
CHANGED
@@ -56,6 +56,10 @@ class PackageDef(BaseModel):
|
|
56
56
|
basedir : str = None
|
57
57
|
_log : ClassVar = logging.getLogger("PackageDef")
|
58
58
|
|
59
|
+
def __post_init__(self):
|
60
|
+
for t in self.tasks:
|
61
|
+
t.fullname = self.name + "." + t.name
|
62
|
+
|
59
63
|
def getTask(self, name : str) -> 'TaskDef':
|
60
64
|
for t in self.tasks:
|
61
65
|
if t.name == name:
|
@@ -83,11 +87,13 @@ class PackageDef(BaseModel):
|
|
83
87
|
# Now we have a unified map of the tasks declared in this package
|
84
88
|
for name in list(tasks_m.keys()):
|
85
89
|
task_i = tasks_m[name]
|
90
|
+
fullname = self.name + "." + name
|
86
91
|
if len(task_i) < 3:
|
87
92
|
# Need to create the task ctor
|
88
93
|
ctor_t = self.mkTaskCtor(session, task_i[0], task_i[1], tasks_m)
|
89
94
|
tasks_m[name] = (task_i[0], task_i[1], ctor_t)
|
90
95
|
ret.tasks[name] = tasks_m[name][2]
|
96
|
+
ret.tasks[fullname] = tasks_m[name][2]
|
91
97
|
|
92
98
|
session.pop_package(ret)
|
93
99
|
|
@@ -95,7 +101,7 @@ class PackageDef(BaseModel):
|
|
95
101
|
return ret
|
96
102
|
|
97
103
|
def getTaskCtor(self, session, task_name, tasks_m):
|
98
|
-
self._log.debug("--> getTaskCtor")
|
104
|
+
self._log.debug("--> getTaskCtor %s" % task_name)
|
99
105
|
# Find package (not package_def) that implements this task
|
100
106
|
# Insert an indirect reference to that tasks's constructor
|
101
107
|
last_dot = task_name.rfind('.')
|
@@ -132,6 +138,7 @@ class PackageDef(BaseModel):
|
|
132
138
|
needs = [] if task.needs is None else task.needs.copy()
|
133
139
|
|
134
140
|
if task.uses is not None:
|
141
|
+
self._log.debug("Uses: %s" % task.uses)
|
135
142
|
base_ctor_t = self.getTaskCtor(session, task.uses, tasks_m)
|
136
143
|
base_params = base_ctor_t.mkTaskParams()
|
137
144
|
|
@@ -160,7 +167,7 @@ class PackageDef(BaseModel):
|
|
160
167
|
callable = getattr(mod, clsname)
|
161
168
|
|
162
169
|
# Determine if we need to use a new
|
163
|
-
paramT = self._getParamT(task, base_params)
|
170
|
+
paramT = self._getParamT(session, task, base_params)
|
164
171
|
|
165
172
|
if callable is not None:
|
166
173
|
ctor_t = TaskNodeCtorTask(
|
@@ -184,7 +191,7 @@ class PackageDef(BaseModel):
|
|
184
191
|
ctor_t = TaskNodeCtorTask(
|
185
192
|
name=task.name,
|
186
193
|
srcdir=srcdir,
|
187
|
-
paramT=
|
194
|
+
paramT=paramT,
|
188
195
|
passthrough=passthrough,
|
189
196
|
needs=needs,
|
190
197
|
task=TaskNull)
|
@@ -192,7 +199,8 @@ class PackageDef(BaseModel):
|
|
192
199
|
self._log.debug("<-- %s::mkTaskCtor %s" % (self.name, task.name))
|
193
200
|
return ctor_t
|
194
201
|
|
195
|
-
def _getParamT(self, task, base_t : BaseModel):
|
202
|
+
def _getParamT(self, session, task, base_t : BaseModel):
|
203
|
+
self._log.debug("--> _getParamT %s" % task.fullname)
|
196
204
|
# Get the base parameter type (if available)
|
197
205
|
# We will build a new type with updated fields
|
198
206
|
|
@@ -214,6 +222,8 @@ class PackageDef(BaseModel):
|
|
214
222
|
fields = []
|
215
223
|
field_m : Dict[str,int] = {}
|
216
224
|
|
225
|
+
pkg = session.package()
|
226
|
+
|
217
227
|
# First, pull out existing fields (if there's a base type)
|
218
228
|
if base_t is not None:
|
219
229
|
self._log.debug("Base type: %s" % str(base_t))
|
@@ -255,6 +265,11 @@ class PackageDef(BaseModel):
|
|
255
265
|
|
256
266
|
params_t = pydantic.create_model("Task%sParams" % task.name, **field_m)
|
257
267
|
|
268
|
+
self._log.debug("== Params")
|
269
|
+
for name,info in params_t.model_fields.items():
|
270
|
+
self._log.debug(" %s: %s" % (name, str(info)))
|
271
|
+
|
272
|
+
self._log.debug("<-- _getParamT %s" % task.name)
|
258
273
|
return params_t
|
259
274
|
|
260
275
|
@staticmethod
|
@@ -273,7 +288,15 @@ class PackageDef(BaseModel):
|
|
273
288
|
doc = yaml.load(fp, Loader=yaml.FullLoader)
|
274
289
|
if "package" not in doc.keys():
|
275
290
|
raise Exception("Missing 'package' key in %s" % root)
|
276
|
-
|
291
|
+
try:
|
292
|
+
pkg = PackageDef(**(doc["package"]))
|
293
|
+
|
294
|
+
for t in pkg.tasks:
|
295
|
+
t.fullname = pkg.name + "." + t.name
|
296
|
+
|
297
|
+
except Exception as e:
|
298
|
+
PackageDef._log.error("Failed to load package from %s" % root)
|
299
|
+
raise e
|
277
300
|
pkg.basedir = os.path.dirname(root)
|
278
301
|
|
279
302
|
# for t in pkg.tasks:
|
dv_flow/mgr/parsetab.py
CHANGED
@@ -27,18 +27,18 @@ for _k, _v in _lr_goto_items.items():
|
|
27
27
|
del _lr_goto_items
|
28
28
|
_lr_productions = [
|
29
29
|
("S' -> expression","S'",1,None,None,None),
|
30
|
-
('expression -> ID LPAREN RPAREN','expression',3,'p_call','expr_parser.py',
|
31
|
-
('expression -> ID LPAREN args RPAREN','expression',4,'p_call','expr_parser.py',
|
32
|
-
('args -> expression','args',1,'p_args','expr_parser.py',
|
33
|
-
('args -> args COMMA expression','args',3,'p_args','expr_parser.py',
|
34
|
-
('expression -> expression PLUS expression','expression',3,'p_expression_binop','expr_parser.py',
|
35
|
-
('expression -> expression MINUS expression','expression',3,'p_expression_binop','expr_parser.py',
|
36
|
-
('expression -> expression TIMES expression','expression',3,'p_expression_binop','expr_parser.py',
|
37
|
-
('expression -> expression PIPE expression','expression',3,'p_expression_binop','expr_parser.py',
|
38
|
-
('expression -> expression DIVIDE expression','expression',3,'p_expression_binop','expr_parser.py',
|
39
|
-
('expression -> LPAREN expression RPAREN','expression',3,'p_expression_group','expr_parser.py',
|
40
|
-
('expression -> NUMBER','expression',1,'p_expression_number','expr_parser.py',
|
41
|
-
('expression -> ID','expression',1,'p_expression_name','expr_parser.py',
|
42
|
-
('expression -> STRING1','expression',1,'p_expression_string1','expr_parser.py',
|
43
|
-
('expression -> STRING2','expression',1,'p_expression_string2','expr_parser.py',
|
30
|
+
('expression -> ID LPAREN RPAREN','expression',3,'p_call','expr_parser.py',180),
|
31
|
+
('expression -> ID LPAREN args RPAREN','expression',4,'p_call','expr_parser.py',181),
|
32
|
+
('args -> expression','args',1,'p_args','expr_parser.py',185),
|
33
|
+
('args -> args COMMA expression','args',3,'p_args','expr_parser.py',186),
|
34
|
+
('expression -> expression PLUS expression','expression',3,'p_expression_binop','expr_parser.py',194),
|
35
|
+
('expression -> expression MINUS expression','expression',3,'p_expression_binop','expr_parser.py',195),
|
36
|
+
('expression -> expression TIMES expression','expression',3,'p_expression_binop','expr_parser.py',196),
|
37
|
+
('expression -> expression PIPE expression','expression',3,'p_expression_binop','expr_parser.py',197),
|
38
|
+
('expression -> expression DIVIDE expression','expression',3,'p_expression_binop','expr_parser.py',198),
|
39
|
+
('expression -> LPAREN expression RPAREN','expression',3,'p_expression_group','expr_parser.py',209),
|
40
|
+
('expression -> NUMBER','expression',1,'p_expression_number','expr_parser.py',213),
|
41
|
+
('expression -> ID','expression',1,'p_expression_name','expr_parser.py',217),
|
42
|
+
('expression -> STRING1','expression',1,'p_expression_string1','expr_parser.py',221),
|
43
|
+
('expression -> STRING2','expression',1,'p_expression_string2','expr_parser.py',225),
|
44
44
|
]
|
dv_flow/mgr/std/fileset.py
CHANGED
@@ -23,7 +23,12 @@ async def FileSet(runner, input) -> TaskDataResult:
|
|
23
23
|
|
24
24
|
|
25
25
|
changed = False
|
26
|
-
|
26
|
+
#
|
27
|
+
try:
|
28
|
+
ex_memento = TaskFileSetMemento(**input.memento) if input.memento is not None else None
|
29
|
+
except Exception as e:
|
30
|
+
_log.error("Failed to load memento: %s" % str(e))
|
31
|
+
ex_memento = None
|
27
32
|
memento = TaskFileSetMemento()
|
28
33
|
|
29
34
|
_log.debug("ex_memento: %s" % str(ex_memento))
|
@@ -39,8 +44,8 @@ async def FileSet(runner, input) -> TaskDataResult:
|
|
39
44
|
_log.debug("glob_root: %s" % glob_root)
|
40
45
|
|
41
46
|
fs = _FileSet(
|
47
|
+
filetype=input.params.type,
|
42
48
|
src=input.name,
|
43
|
-
type=input.params.type,
|
44
49
|
basedir=glob_root)
|
45
50
|
|
46
51
|
if not isinstance(input.params.include, list):
|
dv_flow/mgr/task_data.py
CHANGED
@@ -38,6 +38,7 @@ class TaskMarker(BaseModel):
|
|
38
38
|
loc : TaskMarkerLoc = dc.Field(default=None)
|
39
39
|
|
40
40
|
class TaskParameterSet(BaseModel):
|
41
|
+
type : str = None
|
41
42
|
task : str = None # Name of the task that produced this param set
|
42
43
|
seq : int = -1 # Order in which the param-set must appear
|
43
44
|
|
@@ -51,14 +52,14 @@ class TaskDataInput(BaseModel):
|
|
51
52
|
|
52
53
|
class TaskDataResult(BaseModel):
|
53
54
|
changed : bool = dc.Field(default=True)
|
54
|
-
output : List[
|
55
|
+
output : List[Any] = dc.Field(default_factory=list)
|
55
56
|
memento : Any = dc.Field(default=None)
|
56
57
|
markers : List[TaskMarker] = dc.Field(default_factory=list)
|
57
58
|
status : int = dc.Field(default=0)
|
58
59
|
|
59
60
|
class TaskDataOutput(BaseModel):
|
60
61
|
changed : bool = True
|
61
|
-
output : List[
|
62
|
+
output : List[Any] = dc.Field(default_factory=list)
|
62
63
|
dep_m : Dict[str,List[str]] = dc.Field(default_factory=dict)
|
63
64
|
|
64
65
|
class TaskDataParamOpE(enum.Enum):
|
dv_flow/mgr/task_def.py
CHANGED
@@ -33,6 +33,7 @@ class TaskSpec(object):
|
|
33
33
|
class TaskDef(BaseModel):
|
34
34
|
"""Holds definition information (ie the YAML view) for a task"""
|
35
35
|
name : str
|
36
|
+
fullname : str = dc.Field(default=None)
|
36
37
|
# type : Union[str,TaskSpec] = dc.Field(default_factory=list)
|
37
38
|
uses : str = dc.Field(default=None)
|
38
39
|
pytask : str = dc.Field(default=None)
|
@@ -27,7 +27,7 @@ from .package_def import PackageDef, PackageSpec
|
|
27
27
|
from .pkg_rgy import PkgRgy
|
28
28
|
from .task import Task
|
29
29
|
from .task_node import TaskNodeCtor
|
30
|
-
from typing import Dict, List
|
30
|
+
from typing import Dict, List, Union
|
31
31
|
|
32
32
|
@dc.dataclass
|
33
33
|
class TaskGraphBuilder(object):
|
@@ -178,8 +178,21 @@ class TaskGraphBuilder(object):
|
|
178
178
|
self._logger.debug("<-- getPackage: %s" % str(pkg))
|
179
179
|
|
180
180
|
return pkg
|
181
|
+
|
182
|
+
def mkTaskNode(self, typename, name=None, srcdir=None, needs=None, **kwargs):
|
183
|
+
ctor = self.getTaskCtor(typename)
|
184
|
+
params = ctor.mkTaskParams(**kwargs)
|
185
|
+
return ctor.mkTaskNode(
|
186
|
+
params=params,
|
187
|
+
name=name,
|
188
|
+
srcdir=srcdir,
|
189
|
+
needs=needs)
|
181
190
|
|
182
|
-
def getTaskCtor(self, spec : 'TaskSpec', pkg : PackageDef = None) -> 'TaskCtor':
|
191
|
+
def getTaskCtor(self, spec : Union[str,'TaskSpec'], pkg : PackageDef = None) -> 'TaskCtor':
|
192
|
+
from .task_def import TaskSpec
|
193
|
+
if type(spec) == str:
|
194
|
+
spec = TaskSpec(spec)
|
195
|
+
|
183
196
|
self._logger.debug("--> getTaskCtor %s" % spec.name)
|
184
197
|
spec_e = spec.name.split(".")
|
185
198
|
task_name = spec_e[-1]
|
dv_flow/mgr/task_listener_log.py
CHANGED
@@ -1,15 +1,21 @@
|
|
1
1
|
import dataclasses as dc
|
2
|
+
from rich.console import Console
|
2
3
|
|
4
|
+
@dc.dataclass
|
3
5
|
class TaskListenerLog(object):
|
6
|
+
console : Console = dc.field(default_factory=Console)
|
7
|
+
level : int = 0
|
4
8
|
|
5
9
|
def event(self, task : 'Task', reason : 'Reason'):
|
6
10
|
if reason == 'enter':
|
7
|
-
|
11
|
+
self.level += 1
|
12
|
+
self.console.print("[green]>[%d][/green] Task %s" % (self.level, task.name))
|
8
13
|
elif reason == 'leave':
|
9
14
|
for m in task.result.markers:
|
10
15
|
print(" %s" % m)
|
11
|
-
print("< Task %s" % task.name
|
16
|
+
self.console.print("[green]<[%d][/green] Task %s" % (self.level, task.name))
|
17
|
+
self.level -= 1
|
12
18
|
else:
|
13
|
-
print("- Task %s" % task.name
|
19
|
+
self.console.print("[red]-[/red] Task %s" % task.name)
|
14
20
|
pass
|
15
21
|
|
dv_flow/mgr/task_node.py
CHANGED
@@ -108,6 +108,29 @@ class TaskNodeCtor(object):
|
|
108
108
|
paramT : Any
|
109
109
|
passthrough : bool
|
110
110
|
|
111
|
+
def __call__(self,
|
112
|
+
name=None,
|
113
|
+
srcdir=None,
|
114
|
+
params=None,
|
115
|
+
needs=None,
|
116
|
+
passthrough=None,
|
117
|
+
**kwargs):
|
118
|
+
"""Convenience method for direct creation of tasks"""
|
119
|
+
if params is None:
|
120
|
+
params = self.mkTaskParams(kwargs)
|
121
|
+
|
122
|
+
node = self.mkTaskNode(
|
123
|
+
srcdir=srcdir,
|
124
|
+
params=params,
|
125
|
+
name=name,
|
126
|
+
needs=needs)
|
127
|
+
if passthrough is not None:
|
128
|
+
node.passthrough = passthrough
|
129
|
+
else:
|
130
|
+
node.passthrough = self.passthrough
|
131
|
+
|
132
|
+
return node
|
133
|
+
|
111
134
|
def getNeeds(self) -> List[str]:
|
112
135
|
return []
|
113
136
|
|
@@ -188,28 +211,7 @@ class TaskNodeCtorTask(TaskNodeCtorDefBase):
|
|
188
211
|
class TaskNodeCtorWrapper(TaskNodeCtor):
|
189
212
|
T : Any
|
190
213
|
|
191
|
-
def __call__(self,
|
192
|
-
name=None,
|
193
|
-
srcdir=None,
|
194
|
-
params=None,
|
195
|
-
needs=None,
|
196
|
-
passthrough=None,
|
197
|
-
**kwargs):
|
198
|
-
"""Convenience method for direct creation of tasks"""
|
199
|
-
if params is None:
|
200
|
-
params = self.mkTaskParams(kwargs)
|
201
|
-
|
202
|
-
node = self.mkTaskNode(
|
203
|
-
srcdir=srcdir,
|
204
|
-
params=params,
|
205
|
-
name=name,
|
206
|
-
needs=needs)
|
207
|
-
if passthrough is not None:
|
208
|
-
node.passthrough = passthrough
|
209
|
-
else:
|
210
|
-
node.passthrough = self.passthrough
|
211
214
|
|
212
|
-
return node
|
213
215
|
|
214
216
|
def mkTaskNode(self, params, srcdir=None, name=None, needs=None) -> TaskNode:
|
215
217
|
node = TaskNode(name, srcdir, params, self.T, needs=needs)
|
dv_flow/mgr/task_runner.py
CHANGED
@@ -140,6 +140,13 @@ class TaskSetRunner(TaskRunner):
|
|
140
140
|
with open(os.path.join(self.rundir, "cache", "mementos.json"), "w") as f:
|
141
141
|
json.dump(dst_memento, f)
|
142
142
|
|
143
|
+
if isinstance(task, list):
|
144
|
+
return list(t.output for t in task)
|
145
|
+
else:
|
146
|
+
return task.output
|
147
|
+
|
148
|
+
|
149
|
+
|
143
150
|
pass
|
144
151
|
|
145
152
|
def _buildDepMap(self, dep_m, task : TaskNode):
|
{dv_flow_mgr-0.0.1.13657597614a1.dist-info → dv_flow_mgr-0.0.1.13667970156a1.dist-info}/RECORD
RENAMED
@@ -1,47 +1,47 @@
|
|
1
|
-
dv_flow/mgr/__init__.py,sha256=
|
1
|
+
dv_flow/mgr/__init__.py,sha256=2iTpSe1M8g_u2UlAQFa3XFfqcw8gBOWdBvrstce1c5E,403
|
2
2
|
dv_flow/mgr/__main__.py,sha256=uik6gDAvtZNG0yyDKYc4FTl6R1QHAR543jNG2lCAa6E,1771
|
3
3
|
dv_flow/mgr/eval_jq.py,sha256=Ue-qkyNW6uOu2Wy8u6nrTbPPY7ujaHd0-4iki0eV3Ec,294
|
4
4
|
dv_flow/mgr/expr_eval.py,sha256=Mp0TvrV6gZWcj1uYwLfPNI-ARwwdAfwntE5byLBfBuY,2276
|
5
|
-
dv_flow/mgr/expr_parser.py,sha256=
|
6
|
-
dv_flow/mgr/fileset.py,sha256=
|
5
|
+
dv_flow/mgr/expr_parser.py,sha256=FhBTkKKkJXubGHUzmcMWubPfPklYLGzVz1jK4-dYb44,5702
|
6
|
+
dv_flow/mgr/fileset.py,sha256=ewyjKLzuOecZg0vtabN_UkbzNEnk1sXgrH8uDyeKB60,1184
|
7
7
|
dv_flow/mgr/fragment_def.py,sha256=cyzp1XeWtNOaagScmeS-BPsoXj9j2LTBbKq5ZUioz8I,1641
|
8
8
|
dv_flow/mgr/out,sha256=d8GGBi3J43fhdLBlnsUbzBfRe0TD0QTP3nOTz54l2bI,200
|
9
9
|
dv_flow/mgr/package.py,sha256=878twhPD-E1pFlDNUtuyeFEgJ_Y89b560og4St-Iwrs,1679
|
10
|
-
dv_flow/mgr/package_def.py,sha256=
|
10
|
+
dv_flow/mgr/package_def.py,sha256=ek60ERvWFOVlL71_Fgk1-RWQMrkxNt4USrfZXwLS2d0,14603
|
11
11
|
dv_flow/mgr/package_import_spec.py,sha256=ah3r15v5Jdub2poc3sgi6Uar1L3oGoYsCPPNiOHV-a4,1760
|
12
12
|
dv_flow/mgr/param.py,sha256=3BY-ucig6JRw73FhjyJQL-vpd57qhAzixgZ8I5FoUpw,553
|
13
13
|
dv_flow/mgr/param_def.py,sha256=gLua-EQiY8V2CFX-2svLRIlrs8PEeGh4-EPtn4a2Mng,712
|
14
14
|
dv_flow/mgr/param_ref_eval.py,sha256=U8QhDf1n_9bLnExdc1oQamq5-pOUXrFalOX4oyR9UoM,1138
|
15
|
-
dv_flow/mgr/parsetab.py,sha256=
|
15
|
+
dv_flow/mgr/parsetab.py,sha256=I-p3nC60t9jiNtPhKyl_sE92SiP96zJLnNdydcLy33g,3780
|
16
16
|
dv_flow/mgr/pkg_rgy.py,sha256=2R_EaeBDJn5qUq9DzSnLc37wUP36MWSv-p0LgUjJRAg,4471
|
17
17
|
dv_flow/mgr/task.py,sha256=kLQSvnVwj9ROIDtxq8lLu-4mJizTxOqvUeogmgN6QAA,5976
|
18
18
|
dv_flow/mgr/task_ctor.py,sha256=hlfl-UVvyjzLFN6D0Oel9eBs0xUQPqCX7gQ0uEHoL7o,1382
|
19
|
-
dv_flow/mgr/task_data.py,sha256=
|
20
|
-
dv_flow/mgr/task_def.py,sha256=
|
19
|
+
dv_flow/mgr/task_data.py,sha256=F0X-e0IHTh06Z0F67TWIUPKuJYf6JPzZyMPrDzOJvK0,11409
|
20
|
+
dv_flow/mgr/task_def.py,sha256=T06dvQegPJunH8ekuN5aPxIVcaUWiv5qkfqbZnCacLk,1923
|
21
21
|
dv_flow/mgr/task_exec_data.py,sha256=aT__kmVmNxqnS_GbTRS1vrYgKiv8cH-HUSmRb6YYKsI,640
|
22
|
-
dv_flow/mgr/task_graph_builder.py,sha256=
|
22
|
+
dv_flow/mgr/task_graph_builder.py,sha256=okqJDDu6qyubXQoyI-r0jUTd53Tq7ISSYCymZh_Cppw,7708
|
23
23
|
dv_flow/mgr/task_graph_runner.py,sha256=jUGI49QvxUCfQoKQDDk2psbeapIcCg72qNOW1JipHzM,2182
|
24
24
|
dv_flow/mgr/task_graph_runner_local.py,sha256=OrydPwtQ8E7hYWvSXx0h7lI3nfUNFyklULhsyMwz9dA,4687
|
25
25
|
dv_flow/mgr/task_impl_data.py,sha256=bFPijoKrh9x7fZN2DsvRJp0UHo-gGM0VjtDQISyfhFk,321
|
26
|
-
dv_flow/mgr/task_listener_log.py,sha256=
|
26
|
+
dv_flow/mgr/task_listener_log.py,sha256=5N-WG6ii-R6XPbgPR6zcfKjABOoGYab6I_04Lfwux5Q,705
|
27
27
|
dv_flow/mgr/task_memento.py,sha256=C7VTQpBhDEoYuDmE6YTM-6TLMLnqHp6Y0Vat1aTgtCs,1096
|
28
|
-
dv_flow/mgr/task_node.py,sha256=
|
28
|
+
dv_flow/mgr/task_node.py,sha256=BxkjUJU7WdIhyBbP7FMBFY6EgHenhnnYGGdGW3Xukck,8450
|
29
29
|
dv_flow/mgr/task_output.py,sha256=l-W-FvVo6YDah1RQS-I9N0KUtB3vp-kl7lxIdmNz0l4,178
|
30
30
|
dv_flow/mgr/task_params_ctor.py,sha256=aXgB8o9xFPjaEjGW_xYkEC0N0apzGzGUPDj7g2ZLvus,1112
|
31
|
-
dv_flow/mgr/task_runner.py,sha256=
|
31
|
+
dv_flow/mgr/task_runner.py,sha256=Ky10BWKy_NhvJp2nsbB0pyS8n1K0pKatBEmTdD1ZKOc,7071
|
32
32
|
dv_flow/mgr/type.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
33
33
|
dv_flow/mgr/type_def.py,sha256=KdhuNlfw-NKU-4VZFCnMPyj775yEB7cpr5tz73a9yuQ,259
|
34
34
|
dv_flow/mgr/util.py,sha256=06eVyURF4ga-s8C9Sd3ZSDebwO4QS0XXaB8xADVbWRc,1437
|
35
35
|
dv_flow/mgr/cmds/cmd_run.py,sha256=eths8kT7mBmpZqwOuMtpKAaux4rg-f7hPBxxTHbpKT4,2903
|
36
36
|
dv_flow/mgr/share/flow.json,sha256=lNmZex9NXkYbyb2aZseQfUOkV9CMyfH0iLODEI7EPBw,5096
|
37
37
|
dv_flow/mgr/std/exec.py,sha256=ETx9xSxhdCD_iw6pcmhrafDCJ-41AneyEAPwQf3q-3w,452
|
38
|
-
dv_flow/mgr/std/fileset.py,sha256=
|
38
|
+
dv_flow/mgr/std/fileset.py,sha256=abHgTxz25FD1ep5QXlCZKt4gCyfplJsjx6LyfQ11f_Q,2683
|
39
39
|
dv_flow/mgr/std/flow.dv,sha256=jlFOh3xVECOzHws7x6YvJ9eCIGHM5gsPeEnheiGOukY,1553
|
40
40
|
dv_flow/mgr/std/message.py,sha256=CWrBKImbXKe2d7hJ223U3Ifuxo54zLpFPJviE8BUJvk,188
|
41
41
|
dv_flow/mgr/std/task_null.py,sha256=UKwUnqwFPBY8BO44ZAPcgehQB59kHZFa1qyZc1TwUqE,196
|
42
|
-
dv_flow_mgr-0.0.1.
|
43
|
-
dv_flow_mgr-0.0.1.
|
44
|
-
dv_flow_mgr-0.0.1.
|
45
|
-
dv_flow_mgr-0.0.1.
|
46
|
-
dv_flow_mgr-0.0.1.
|
47
|
-
dv_flow_mgr-0.0.1.
|
42
|
+
dv_flow_mgr-0.0.1.13667970156a1.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
43
|
+
dv_flow_mgr-0.0.1.13667970156a1.dist-info/METADATA,sha256=KkpZBeRE5Av-3wHTQewdBoyjAtM3voZTDxeXsjrsjhs,13276
|
44
|
+
dv_flow_mgr-0.0.1.13667970156a1.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
|
45
|
+
dv_flow_mgr-0.0.1.13667970156a1.dist-info/entry_points.txt,sha256=1roy8wAFM48LabOvr6jiOw0MUs-qE8X3Vf8YykPazxk,50
|
46
|
+
dv_flow_mgr-0.0.1.13667970156a1.dist-info/top_level.txt,sha256=amfVTkggzYPtWwLqNmRukfz1Buu0pGS2SrYBBLhXm04,8
|
47
|
+
dv_flow_mgr-0.0.1.13667970156a1.dist-info/RECORD,,
|
{dv_flow_mgr-0.0.1.13657597614a1.dist-info → dv_flow_mgr-0.0.1.13667970156a1.dist-info}/LICENSE
RENAMED
File without changes
|
{dv_flow_mgr-0.0.1.13657597614a1.dist-info → dv_flow_mgr-0.0.1.13667970156a1.dist-info}/WHEEL
RENAMED
File without changes
|
File without changes
|
File without changes
|