dv-flow-mgr 0.0.1.14147547123a1__py3-none-any.whl → 0.0.2.14148165289a1__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/package_def.py +2 -2
- dv_flow/mgr/std/create_file.py +4 -0
- dv_flow/mgr/task_def.py +3 -1
- dv_flow/mgr/task_graph_builder.py +7 -8
- dv_flow/mgr/task_node.py +33 -2
- dv_flow/mgr/task_node_ctor_compound.py +2 -1
- dv_flow/mgr/task_node_leaf.py +3 -0
- {dv_flow_mgr-0.0.1.14147547123a1.dist-info → dv_flow_mgr-0.0.2.14148165289a1.dist-info}/METADATA +1 -1
- {dv_flow_mgr-0.0.1.14147547123a1.dist-info → dv_flow_mgr-0.0.2.14148165289a1.dist-info}/RECORD +13 -13
- {dv_flow_mgr-0.0.1.14147547123a1.dist-info → dv_flow_mgr-0.0.2.14148165289a1.dist-info}/WHEEL +0 -0
- {dv_flow_mgr-0.0.1.14147547123a1.dist-info → dv_flow_mgr-0.0.2.14148165289a1.dist-info}/entry_points.txt +0 -0
- {dv_flow_mgr-0.0.1.14147547123a1.dist-info → dv_flow_mgr-0.0.2.14148165289a1.dist-info}/licenses/LICENSE +0 -0
- {dv_flow_mgr-0.0.1.14147547123a1.dist-info → dv_flow_mgr-0.0.2.14148165289a1.dist-info}/top_level.txt +0 -0
dv_flow/mgr/package_def.py
CHANGED
@@ -317,7 +317,8 @@ class PackageDef(BaseModel):
|
|
317
317
|
consumes = task.consumes.copy() if isinstance(task.consumes, list) else task.consumes
|
318
318
|
needs = [] if task.needs is None else task.needs.copy()
|
319
319
|
|
320
|
-
if
|
320
|
+
if base_ctor_t is not None:
|
321
|
+
print("-- uses")
|
321
322
|
if passthrough is None:
|
322
323
|
passthrough = base_ctor_t.passthrough
|
323
324
|
if consumes is None:
|
@@ -328,7 +329,6 @@ class PackageDef(BaseModel):
|
|
328
329
|
if consumes is None:
|
329
330
|
consumes = ConsumesE.All
|
330
331
|
|
331
|
-
|
332
332
|
return (passthrough, consumes, needs)
|
333
333
|
|
334
334
|
def _getParamT(self, session, task, base_t : BaseModel):
|
dv_flow/mgr/std/create_file.py
CHANGED
@@ -66,6 +66,10 @@ async def CreateFile(runner, input) -> TaskDataResult:
|
|
66
66
|
|
67
67
|
with open(filename, "w") as fp:
|
68
68
|
fp.write(input.params.content)
|
69
|
+
memento.name = input.params.filename
|
70
|
+
memento.hash = hashlib.md5(input.params.content.encode()).hexdigest()
|
71
|
+
else:
|
72
|
+
memento = ex_memento
|
69
73
|
|
70
74
|
fs = _FileSet(
|
71
75
|
filetype=input.params.type,
|
dv_flow/mgr/task_def.py
CHANGED
@@ -207,9 +207,9 @@ class TaskGraphBuilder(object):
|
|
207
207
|
self._pkg_s.clear()
|
208
208
|
self._task_m.clear()
|
209
209
|
|
210
|
-
return self._mkTaskGraph(task
|
210
|
+
return self._mkTaskGraph(task)
|
211
211
|
|
212
|
-
def _mkTaskGraph(self, task : str
|
212
|
+
def _mkTaskGraph(self, task : str) -> TaskNode:
|
213
213
|
|
214
214
|
elems = task.split(".")
|
215
215
|
|
@@ -224,8 +224,6 @@ class TaskGraphBuilder(object):
|
|
224
224
|
else:
|
225
225
|
pkg_spec = PackageSpec(pkg_name)
|
226
226
|
|
227
|
-
rundir = os.path.join(parent_rundir, pkg_name, task_name)
|
228
|
-
|
229
227
|
self._logger.debug("pkg_spec: %s" % str(pkg_spec))
|
230
228
|
self._pkg_spec_s.append(pkg_spec)
|
231
229
|
pkg = self.getPackage(pkg_spec)
|
@@ -243,7 +241,7 @@ class TaskGraphBuilder(object):
|
|
243
241
|
need_fullname = self._resolveNeedRef(need_def)
|
244
242
|
self._logger.debug("Searching for qualifed-name task %s" % need_fullname)
|
245
243
|
if not need_fullname in self._task_m.keys():
|
246
|
-
need_t = self._mkTaskGraph(need_fullname
|
244
|
+
need_t = self._mkTaskGraph(need_fullname)
|
247
245
|
self._task_m[need_fullname] = need_t
|
248
246
|
needs.append(self._task_m[need_fullname])
|
249
247
|
|
@@ -258,7 +256,7 @@ class TaskGraphBuilder(object):
|
|
258
256
|
params=params,
|
259
257
|
name=task,
|
260
258
|
needs=needs)
|
261
|
-
task.rundir = rundir
|
259
|
+
# task.rundir = rundir
|
262
260
|
|
263
261
|
self._task_m[task.name] = task
|
264
262
|
|
@@ -359,7 +357,7 @@ class TaskGraphBuilder(object):
|
|
359
357
|
need_fullname = self._resolveNeedRef(need_def)
|
360
358
|
self._logger.debug("Searching for qualifed-name task %s" % need_fullname)
|
361
359
|
if not need_fullname in self._task_m.keys():
|
362
|
-
need_t = self._mkTaskGraph(need_fullname
|
360
|
+
need_t = self._mkTaskGraph(need_fullname)
|
363
361
|
self._task_m[need_fullname] = need_t
|
364
362
|
needs.append(self._task_m[need_fullname])
|
365
363
|
|
@@ -371,13 +369,14 @@ class TaskGraphBuilder(object):
|
|
371
369
|
name=name,
|
372
370
|
srcdir=srcdir,
|
373
371
|
needs=needs)
|
372
|
+
ret.rundir = self.get_rundir(name)
|
374
373
|
else:
|
375
374
|
raise Exception("Failed to find ctor for task %s" % task_t)
|
376
375
|
self._pkg_s.pop()
|
377
376
|
self._logger.debug("<-- mkTaskNode: %s" % task_t)
|
378
377
|
return ret
|
379
378
|
|
380
|
-
def getTaskCtor(self, spec : Union[str,'TaskSpec'], pkg : PackageDef = None) -> '
|
379
|
+
def getTaskCtor(self, spec : Union[str,'TaskSpec'], pkg : PackageDef = None) -> 'TaskNodeCtor':
|
381
380
|
from .task_def import TaskSpec
|
382
381
|
if type(spec) == str:
|
383
382
|
spec = TaskSpec(spec)
|
dv_flow/mgr/task_node.py
CHANGED
@@ -20,6 +20,7 @@
|
|
20
20
|
#*
|
21
21
|
#****************************************************************************
|
22
22
|
import enum
|
23
|
+
import json
|
23
24
|
import os
|
24
25
|
import sys
|
25
26
|
import dataclasses as dc
|
@@ -27,7 +28,7 @@ import pydantic.dataclasses as pdc
|
|
27
28
|
import logging
|
28
29
|
import toposort
|
29
30
|
from typing import Any, Callable, ClassVar, Dict, List, Tuple
|
30
|
-
from .task_data import TaskDataOutput, TaskDataResult
|
31
|
+
from .task_data import TaskDataInput, TaskDataOutput, TaskDataResult
|
31
32
|
from .param import Param
|
32
33
|
|
33
34
|
class RundirE(enum.Enum):
|
@@ -49,11 +50,11 @@ class TaskNode(object):
|
|
49
50
|
consumes : List[Any] = dc.field(default_factory=list)
|
50
51
|
needs : List[Tuple['TaskNode',bool]] = dc.field(default_factory=list)
|
51
52
|
rundir : List[str] = dc.field(default=None)
|
52
|
-
# rundir_t : RundirE = dc.field(default=RundirE.Unique)
|
53
53
|
output : TaskDataOutput = dc.field(default=None)
|
54
54
|
result : TaskDataResult = dc.field(default=None)
|
55
55
|
start : float = dc.field(default=None)
|
56
56
|
end : float = dc.field(default=None)
|
57
|
+
save_exec_data : bool = dc.field(default=True)
|
57
58
|
|
58
59
|
_log : ClassVar = logging.getLogger("TaskNode")
|
59
60
|
|
@@ -101,6 +102,36 @@ class TaskNode(object):
|
|
101
102
|
self._log.debug("<-- _matches: %s %s" % (self.name, consumed))
|
102
103
|
return consumed
|
103
104
|
|
105
|
+
def _save_exec_data(self, rundir, input : TaskDataInput):
|
106
|
+
"""Saves execution data to the rundir"""
|
107
|
+
data = {
|
108
|
+
"name": self.name,
|
109
|
+
"srcdir": self.srcdir,
|
110
|
+
"rundir": rundir,
|
111
|
+
"input": input.model_dump(warnings=False),
|
112
|
+
"needs": [need[0].name for need in self.needs],
|
113
|
+
"result": {
|
114
|
+
"status": self.result.status,
|
115
|
+
"changed": self.result.changed,
|
116
|
+
"memento": self.result.memento.model_dump() if self.result.memento else None,
|
117
|
+
},
|
118
|
+
"output": self.output.model_dump(),
|
119
|
+
}
|
120
|
+
|
121
|
+
if isinstance(self.consumes, list):
|
122
|
+
data["consumes"] = self.consumes
|
123
|
+
else:
|
124
|
+
data["consumes"] = str(self.consumes)
|
125
|
+
|
126
|
+
if isinstance(self.passthrough, list):
|
127
|
+
data["passthrough"] = self.passthrough
|
128
|
+
else:
|
129
|
+
data["passthrough"] = str(self.passthrough)
|
130
|
+
|
131
|
+
with open(os.path.join(rundir, "%s.exec_data.json" % self.name), "w") as f:
|
132
|
+
json.dump(data, f, indent=2)
|
133
|
+
f.write("\n")
|
134
|
+
|
104
135
|
|
105
136
|
|
106
137
|
|
@@ -53,9 +53,10 @@ class TaskNodeCtorCompound(TaskNodeCtor):
|
|
53
53
|
params=params,
|
54
54
|
needs=needs)
|
55
55
|
# Use the compound task's rundir
|
56
|
-
node.input.rundir = builder.get_rundir()
|
57
56
|
|
58
57
|
builder.enter_compound(node, self.task_def.rundir)
|
58
|
+
node.input.rundir = builder.get_rundir()
|
59
|
+
print("input rundir: %s" % str(node.input.rundir))
|
59
60
|
builder.addTask("in", node.input)
|
60
61
|
|
61
62
|
self._buildSubGraph(builder, node)
|
dv_flow/mgr/task_node_leaf.py
CHANGED
{dv_flow_mgr-0.0.1.14147547123a1.dist-info → dv_flow_mgr-0.0.2.14148165289a1.dist-info}/RECORD
RENAMED
@@ -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=OfFIgKKYa0FWFEeAptJuCfwbOpGeTNRp9skax9lZhDY,20910
|
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,20 +15,20 @@ 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=
|
19
|
-
dv_flow/mgr/task_graph_builder.py,sha256=
|
18
|
+
dv_flow/mgr/task_def.py,sha256=82dNRih_OTqq4gZNMtOmQ1DvzqqitKda6igpLVY82A8,3693
|
19
|
+
dv_flow/mgr/task_graph_builder.py,sha256=wJDZGeuQfS3C5w-ovYE5O8casZ-Irp-TZlGYVb1G5kg,14959
|
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=7lZKsTbOS0Cuhe-TyPj9Gcuh1a4k3sliRXW81R4UGCg,4851
|
23
23
|
dv_flow/mgr/task_node_compound.py,sha256=mNu4nf9hVqu2698ue5fpE3FeAOkvJH0Ke2W9V0G3-As,2975
|
24
24
|
dv_flow/mgr/task_node_ctor.py,sha256=COFGvm5PR2B92H3uW1yhDIUCmppo9U4IfOcv_Jrsreo,3952
|
25
|
-
dv_flow/mgr/task_node_ctor_compound.py,sha256=
|
25
|
+
dv_flow/mgr/task_node_ctor_compound.py,sha256=n2Ad1jtX147cb99HTlLrx_21XUn109bJ18zDXr0pn2Q,4259
|
26
26
|
dv_flow/mgr/task_node_ctor_compound_proxy.py,sha256=D8x54nD8Pd-2-_mr1syhqVeSFfIVf100ldi3bdzmSfI,2073
|
27
27
|
dv_flow/mgr/task_node_ctor_def_base.py,sha256=_8QQHKDkONio_ve0Z409yxC0AMO8ocNBPDjRiNED1FI,1503
|
28
28
|
dv_flow/mgr/task_node_ctor_proxy.py,sha256=ViOFJ64JM4-CGFZNl89BghFuKSQ66kZVqSj4v2PA6VA,1906
|
29
29
|
dv_flow/mgr/task_node_ctor_task.py,sha256=d49g90TyPCMFR8BuWWqp4ym-MW5vGSdDR0V47Ru28JY,2232
|
30
30
|
dv_flow/mgr/task_node_ctor_wrapper.py,sha256=Nb1CVcPHZofnb-iLWDHQWAxlTOdbRrnR9DdSxY8yOec,3626
|
31
|
-
dv_flow/mgr/task_node_leaf.py,sha256=
|
31
|
+
dv_flow/mgr/task_node_leaf.py,sha256=tI9m0GcaKsBccHmZCSTzc6vKyNgXezVB5vC28B75AFg,7416
|
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
34
|
dv_flow/mgr/task_runner.py,sha256=-919VntXAe2XSuFW2dFpgvUre-NkILBnDBbAKBZYn5w,9594
|
@@ -38,7 +38,7 @@ dv_flow/mgr/cmds/cmd_graph.py,sha256=Ykw__EdwamDBZZKxQZVbtMtFl7koq5dJMShTBXSM2pk
|
|
38
38
|
dv_flow/mgr/cmds/cmd_run.py,sha256=VL0LU0zYnClQ8Id30sxMN_fHJzQFJsOuj7qDG7GTT60,3198
|
39
39
|
dv_flow/mgr/cmds/cmd_show.py,sha256=CZlgwB3Hcu-6HS-diqnWjCcPPpO-kjIIXU3DgWXvsf4,3773
|
40
40
|
dv_flow/mgr/share/flow.json,sha256=lNmZex9NXkYbyb2aZseQfUOkV9CMyfH0iLODEI7EPBw,5096
|
41
|
-
dv_flow/mgr/std/create_file.py,sha256=
|
41
|
+
dv_flow/mgr/std/create_file.py,sha256=TAUhpXlTmUDUYw4Dw0cI9FPuYI84yCVkoadnWZxi_8U,2888
|
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
44
|
dv_flow/mgr/std/flow.dv,sha256=t8m-urWYhKEAOFhG4wlrMqGHwiWDyO8H-b6-5vNQkBk,3795
|
@@ -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.
|
53
|
-
dv_flow_mgr-0.0.
|
54
|
-
dv_flow_mgr-0.0.
|
55
|
-
dv_flow_mgr-0.0.
|
56
|
-
dv_flow_mgr-0.0.
|
57
|
-
dv_flow_mgr-0.0.
|
52
|
+
dv_flow_mgr-0.0.2.14148165289a1.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
53
|
+
dv_flow_mgr-0.0.2.14148165289a1.dist-info/METADATA,sha256=Yw1ZOx3YbC_sT77QcD_2e5-zitdJPFBGFAMqThGvHVQ,13336
|
54
|
+
dv_flow_mgr-0.0.2.14148165289a1.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
|
55
|
+
dv_flow_mgr-0.0.2.14148165289a1.dist-info/entry_points.txt,sha256=1roy8wAFM48LabOvr6jiOw0MUs-qE8X3Vf8YykPazxk,50
|
56
|
+
dv_flow_mgr-0.0.2.14148165289a1.dist-info/top_level.txt,sha256=amfVTkggzYPtWwLqNmRukfz1Buu0pGS2SrYBBLhXm04,8
|
57
|
+
dv_flow_mgr-0.0.2.14148165289a1.dist-info/RECORD,,
|
{dv_flow_mgr-0.0.1.14147547123a1.dist-info → dv_flow_mgr-0.0.2.14148165289a1.dist-info}/WHEEL
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|