dv-flow-mgr 1.0.0.14392445998a1__py3-none-any.whl → 1.0.0.14457729129a1__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_loader.py +12 -2
- dv_flow/mgr/task_graph_builder.py +21 -10
- dv_flow/mgr/task_node_compound.py +8 -3
- {dv_flow_mgr-1.0.0.14392445998a1.dist-info → dv_flow_mgr-1.0.0.14457729129a1.dist-info}/METADATA +1 -1
- {dv_flow_mgr-1.0.0.14392445998a1.dist-info → dv_flow_mgr-1.0.0.14457729129a1.dist-info}/RECORD +9 -9
- {dv_flow_mgr-1.0.0.14392445998a1.dist-info → dv_flow_mgr-1.0.0.14457729129a1.dist-info}/WHEEL +0 -0
- {dv_flow_mgr-1.0.0.14392445998a1.dist-info → dv_flow_mgr-1.0.0.14457729129a1.dist-info}/entry_points.txt +0 -0
- {dv_flow_mgr-1.0.0.14392445998a1.dist-info → dv_flow_mgr-1.0.0.14457729129a1.dist-info}/licenses/LICENSE +0 -0
- {dv_flow_mgr-1.0.0.14392445998a1.dist-info → dv_flow_mgr-1.0.0.14457729129a1.dist-info}/top_level.txt +0 -0
dv_flow/mgr/package_loader.py
CHANGED
@@ -394,6 +394,10 @@ class PackageLoader(object):
|
|
394
394
|
else:
|
395
395
|
print("Warning: file %s is not a fragment" % file)
|
396
396
|
|
397
|
+
def getTask(self, name) -> Task:
|
398
|
+
task = self._findTask(name)
|
399
|
+
return task
|
400
|
+
|
397
401
|
def _loadTasks(self, pkg, taskdefs : List[TaskDef], basedir : str):
|
398
402
|
self._log.debug("--> _loadTasks %s" % pkg.name)
|
399
403
|
# Declare first
|
@@ -538,10 +542,16 @@ class PackageLoader(object):
|
|
538
542
|
self._pkg_s[-1].pop_scope()
|
539
543
|
|
540
544
|
def _findTaskType(self, name):
|
541
|
-
|
545
|
+
if len(self._pkg_s):
|
546
|
+
return self._pkg_s[-1].find(name)
|
547
|
+
else:
|
548
|
+
return self._loader_scope.find(name)
|
542
549
|
|
543
550
|
def _findTask(self, name):
|
544
|
-
|
551
|
+
if len(self._pkg_s):
|
552
|
+
return self._pkg_s[-1].find(name)
|
553
|
+
else:
|
554
|
+
return self._loader_scope.find(name)
|
545
555
|
|
546
556
|
|
547
557
|
def _getScopeFullname(self, leaf=None):
|
@@ -25,6 +25,7 @@ import logging
|
|
25
25
|
from typing import Callable, Any, Dict, List, Union
|
26
26
|
from .package import Package
|
27
27
|
from .package_def import PackageDef, PackageSpec
|
28
|
+
from .package_loader import PackageLoader
|
28
29
|
from .ext_rgy import ExtRgy
|
29
30
|
from .task import Task
|
30
31
|
from .task_def import RundirE
|
@@ -60,6 +61,7 @@ class TaskGraphBuilder(object):
|
|
60
61
|
"""The Task-Graph Builder knows how to discover packages and construct task graphs"""
|
61
62
|
root_pkg : Package
|
62
63
|
rundir : str
|
64
|
+
loader : PackageLoader = None
|
63
65
|
marker_l : Callable = lambda *args, **kwargs: None
|
64
66
|
_pkg_m : Dict[PackageSpec,Package] = dc.field(default_factory=dict)
|
65
67
|
_pkg_spec_s : List[PackageDef] = dc.field(default_factory=list)
|
@@ -79,7 +81,7 @@ class TaskGraphBuilder(object):
|
|
79
81
|
def __post_init__(self):
|
80
82
|
# Initialize the overrides from the global registry
|
81
83
|
self._log = logging.getLogger(type(self).__name__)
|
82
|
-
self._shell_m.update(ExtRgy.
|
84
|
+
self._shell_m.update(ExtRgy.inst()._shell_m)
|
83
85
|
self._task_rundir_s.append([])
|
84
86
|
|
85
87
|
if self.root_pkg is not None:
|
@@ -210,10 +212,18 @@ class TaskGraphBuilder(object):
|
|
210
212
|
|
211
213
|
if task_t in self._task_m.keys():
|
212
214
|
task = self._task_m[task_t]
|
215
|
+
elif self.loader is not None:
|
216
|
+
task = self.loader.getTask(task_t)
|
217
|
+
|
218
|
+
if task is None:
|
219
|
+
raise Exception("task_t (%s) not present" % str(task_t))
|
213
220
|
else:
|
214
221
|
raise Exception("task_t (%s) not present" % str(task_t))
|
215
222
|
|
216
|
-
ret = self._mkTaskNode(
|
223
|
+
ret = self._mkTaskNode(
|
224
|
+
task,
|
225
|
+
name=name,
|
226
|
+
srcdir=srcdir)
|
217
227
|
|
218
228
|
if needs is not None:
|
219
229
|
for need in needs:
|
@@ -225,7 +235,7 @@ class TaskGraphBuilder(object):
|
|
225
235
|
else:
|
226
236
|
raise Exception("Task %s parameters do not include %s" % (task.name, k))
|
227
237
|
|
228
|
-
self._log.debug("<-- mkTaskNode: %s" % task_t)
|
238
|
+
self._log.debug("<-- mkTaskNode: %s (%d needs)" % (task_t, len(ret.needs)))
|
229
239
|
return ret
|
230
240
|
|
231
241
|
def _findTask(self, pkg, name):
|
@@ -290,7 +300,7 @@ class TaskGraphBuilder(object):
|
|
290
300
|
params = task.paramT()
|
291
301
|
|
292
302
|
if task.rundir == RundirE.Unique:
|
293
|
-
self.enter_rundir(
|
303
|
+
self.enter_rundir(name)
|
294
304
|
|
295
305
|
|
296
306
|
callable = None
|
@@ -341,7 +351,7 @@ class TaskGraphBuilder(object):
|
|
341
351
|
params = task.paramT()
|
342
352
|
|
343
353
|
if task.rundir == RundirE.Unique:
|
344
|
-
self.enter_rundir(
|
354
|
+
self.enter_rundir(name)
|
345
355
|
|
346
356
|
if task.uses is not None:
|
347
357
|
# This is a compound task that is based on
|
@@ -376,13 +386,14 @@ class TaskGraphBuilder(object):
|
|
376
386
|
node.input.rundir = self.get_rundir()
|
377
387
|
self.leave_rundir()
|
378
388
|
|
379
|
-
self._log.debug("--> processing needs (%s)" % task.name)
|
389
|
+
self._log.debug("--> processing needs (%s) (%d)" % (task.name, len(task.needs)))
|
380
390
|
for need in task.needs:
|
381
391
|
need_n = self._getTaskNode(need.name)
|
382
392
|
self._log.debug("Add need %s" % need_n.name)
|
383
393
|
if need_n is None:
|
384
394
|
raise Exception("Failed to find need %s" % need.name)
|
385
395
|
node.input.needs.append((need_n, False))
|
396
|
+
# node.needs.append((need_n, False))
|
386
397
|
self._log.debug("<-- processing needs")
|
387
398
|
|
388
399
|
# TODO: handle strategy
|
@@ -429,12 +440,12 @@ class TaskGraphBuilder(object):
|
|
429
440
|
self._log.debug("Node %s references internal node %s" % (t.name, refs_internal.name))
|
430
441
|
|
431
442
|
if referenced is not None:
|
443
|
+
self._log.debug("Node %s has internal needs" % tn.name)
|
444
|
+
else:
|
432
445
|
# Add this task as a dependency of the output
|
433
446
|
# node (the root one)
|
434
447
|
self._log.debug("Add node %s as a top-level dependency" % tn.name)
|
435
448
|
node.needs.append((tn, False))
|
436
|
-
else:
|
437
|
-
self._log.debug("Node %s has internal needs" % tn.name)
|
438
449
|
|
439
450
|
if task.rundir == RundirE.Unique:
|
440
451
|
self.leave_rundir()
|
@@ -442,7 +453,7 @@ class TaskGraphBuilder(object):
|
|
442
453
|
return node
|
443
454
|
|
444
455
|
def _gatherNeeds(self, task_t, node):
|
445
|
-
self._log.debug("--> _gatherNeeds %s" % task_t.name)
|
456
|
+
self._log.debug("--> _gatherNeeds %s (%d)" % (task_t.name, len(task_t.needs)))
|
446
457
|
if task_t.uses is not None:
|
447
458
|
self._gatherNeeds(task_t.uses, node)
|
448
459
|
|
@@ -451,7 +462,7 @@ class TaskGraphBuilder(object):
|
|
451
462
|
if need_n is None:
|
452
463
|
raise Exception("Failed to find need %s" % need.name)
|
453
464
|
node.needs.append((need_n, False))
|
454
|
-
self._log.debug("<-- _gatherNeeds %s" % task_t.name)
|
465
|
+
self._log.debug("<-- _gatherNeeds %s (%d)" % (task_t.name, len(node.needs)))
|
455
466
|
|
456
467
|
def error(self, msg, loc=None):
|
457
468
|
if loc is not None:
|
@@ -21,7 +21,7 @@
|
|
21
21
|
#****************************************************************************
|
22
22
|
import dataclasses as dc
|
23
23
|
from pydantic import BaseModel
|
24
|
-
from .task_def import ConsumesE
|
24
|
+
from .task_def import ConsumesE, PassthroughE, PassthroughE, PassthroughE, PassthroughE
|
25
25
|
from .task_node import TaskNode
|
26
26
|
from .task_node_leaf import TaskNodeLeaf
|
27
27
|
from .task_data import TaskDataResult, TaskDataInput, TaskDataOutput
|
@@ -44,7 +44,9 @@ class TaskNodeCompound(TaskNode):
|
|
44
44
|
self.input = TaskNodeLeaf(
|
45
45
|
name=self.name + ".in",
|
46
46
|
srcdir=self.srcdir,
|
47
|
-
params=NullParams()
|
47
|
+
params=NullParams(),
|
48
|
+
consumes=ConsumesE.No,
|
49
|
+
passthrough=PassthroughE.All)
|
48
50
|
self.input.task = null_run
|
49
51
|
self.tasks.append(self.input)
|
50
52
|
|
@@ -55,7 +57,7 @@ class TaskNodeCompound(TaskNode):
|
|
55
57
|
return self.input
|
56
58
|
|
57
59
|
async def do_run(self,
|
58
|
-
|
60
|
+
ctxt : TaskRunner,
|
59
61
|
rundir,
|
60
62
|
memento : Any=None) -> TaskDataResult:
|
61
63
|
self._log.debug("Compound task %s (%d)" % (self.name, len(self.needs)))
|
@@ -90,6 +92,9 @@ class TaskNodeCompound(TaskNode):
|
|
90
92
|
changed=changed,
|
91
93
|
output=output,
|
92
94
|
dep_m={})
|
95
|
+
|
96
|
+
# if self.save_exec_data:
|
97
|
+
# self._save_exec_data(rundir, ctxt, self.input.input)
|
93
98
|
|
94
99
|
return 0
|
95
100
|
|
{dv_flow_mgr-1.0.0.14392445998a1.dist-info → dv_flow_mgr-1.0.0.14457729129a1.dist-info}/RECORD
RENAMED
@@ -18,7 +18,7 @@ dv_flow/mgr/out,sha256=d8GGBi3J43fhdLBlnsUbzBfRe0TD0QTP3nOTz54l2bI,200
|
|
18
18
|
dv_flow/mgr/package.py,sha256=PvOuNfuy-SlaiMDzT5SU48OlPJrhS9vpNCgX06KNyTo,2336
|
19
19
|
dv_flow/mgr/package_def.py,sha256=-UyeFb_0Sj16RtS2vxtIxTfl-oW7adJjM1I3ZSjcRpc,5729
|
20
20
|
dv_flow/mgr/package_import_spec.py,sha256=aZMpnS9a5NFY76_pYXEuO3-Mkc_xFzy73fdrUe_54Dc,1760
|
21
|
-
dv_flow/mgr/package_loader.py,sha256=
|
21
|
+
dv_flow/mgr/package_loader.py,sha256=xNdN9aNVRDzSeU2YDMEk6rWPfNphQniehg1UdW91w-k,25361
|
22
22
|
dv_flow/mgr/param.py,sha256=kkxMRGf6mPjSZJsjgLKH2vJL62Sn0ZESvjBLkEYOp20,1386
|
23
23
|
dv_flow/mgr/param_def.py,sha256=hOBBRLiXJ5DakXkhrLCBAQ9GPlgq-QS52r0aflmIgbg,1832
|
24
24
|
dv_flow/mgr/param_ref_eval.py,sha256=5yH37oIX6f2qmk7GfRgNT5qZx0jm3CJFgB9lLDZZ1yQ,1981
|
@@ -31,11 +31,11 @@ dv_flow/mgr/srcinfo.py,sha256=xrfp-relVr7hYNbxOjY5jqX4H0nNMm9HK5AAM6_Piyk,366
|
|
31
31
|
dv_flow/mgr/task.py,sha256=Xe1sCCTN4yJwhB2Aw_rywdlmVPY2CDnuwZisULuOXhw,2036
|
32
32
|
dv_flow/mgr/task_data.py,sha256=lN7Iq8YTitEMGG4rZqYQi6Ri2HuPgBQ5oGQbW-63T8c,12436
|
33
33
|
dv_flow/mgr/task_def.py,sha256=VAjkFay7KxXfZoloZfbiPr6WhURztV2Dxm6-REMQweo,4912
|
34
|
-
dv_flow/mgr/task_graph_builder.py,sha256=
|
34
|
+
dv_flow/mgr/task_graph_builder.py,sha256=AMvvQjRLkjPYw5JfKw3ZaF1f02E9FJHBAUtulj4mJBM,17210
|
35
35
|
dv_flow/mgr/task_graph_dot_writer.py,sha256=fZlNR-ZUFsI5FpH1KFCWJcSpyLSKUh8IhHO9Eavc60c,4925
|
36
36
|
dv_flow/mgr/task_listener_log.py,sha256=QH7hAVO1agYJoOx16XqjWv1c-jk5zb6p6A-hic7OMU0,4150
|
37
37
|
dv_flow/mgr/task_node.py,sha256=hPlCcped3nCNgOYj4oysVcxu4cHOIUCBUqAevOr20Lc,5086
|
38
|
-
dv_flow/mgr/task_node_compound.py,sha256=
|
38
|
+
dv_flow/mgr/task_node_compound.py,sha256=6BGcEiFQ69XL2cW9bwvp42Gd2Z3MRRriopo4BtwGccw,3319
|
39
39
|
dv_flow/mgr/task_node_ctor.py,sha256=YsoVMX5WbpbzcHvEK7ps_ZRV-J7MZ3F8NNozQw7vbog,4418
|
40
40
|
dv_flow/mgr/task_node_ctor_compound.py,sha256=290JdcTnL3b3Gv7s_wRLjdM02ezKhc9QnxZE0mv72i8,4379
|
41
41
|
dv_flow/mgr/task_node_ctor_compound_proxy.py,sha256=D8x54nD8Pd-2-_mr1syhqVeSFfIVf100ldi3bdzmSfI,2073
|
@@ -66,9 +66,9 @@ dv_flow/mgr/util/__main__.py,sha256=F0LXpCDpYTPalSo0dc1h_qZkip5v1AZYYh-vcYbh5s0,
|
|
66
66
|
dv_flow/mgr/util/util.py,sha256=cBNt3JJ0PGLlUQFTtBLi12i2j_9gNgSBtKdwS3VfF5Y,1566
|
67
67
|
dv_flow/mgr/util/cmds/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
68
68
|
dv_flow/mgr/util/cmds/cmd_schema.py,sha256=IJzZdxCSEgIQ79LpYiM7UqJ9RJ-7yraqmBN2XVgAgXA,1752
|
69
|
-
dv_flow_mgr-1.0.0.
|
70
|
-
dv_flow_mgr-1.0.0.
|
71
|
-
dv_flow_mgr-1.0.0.
|
72
|
-
dv_flow_mgr-1.0.0.
|
73
|
-
dv_flow_mgr-1.0.0.
|
74
|
-
dv_flow_mgr-1.0.0.
|
69
|
+
dv_flow_mgr-1.0.0.14457729129a1.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
70
|
+
dv_flow_mgr-1.0.0.14457729129a1.dist-info/METADATA,sha256=zEZXmvd8jfMK3AM4X8znfRsXyztd19PkyZqiU_P_LKk,13336
|
71
|
+
dv_flow_mgr-1.0.0.14457729129a1.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
|
72
|
+
dv_flow_mgr-1.0.0.14457729129a1.dist-info/entry_points.txt,sha256=1roy8wAFM48LabOvr6jiOw0MUs-qE8X3Vf8YykPazxk,50
|
73
|
+
dv_flow_mgr-1.0.0.14457729129a1.dist-info/top_level.txt,sha256=amfVTkggzYPtWwLqNmRukfz1Buu0pGS2SrYBBLhXm04,8
|
74
|
+
dv_flow_mgr-1.0.0.14457729129a1.dist-info/RECORD,,
|
{dv_flow_mgr-1.0.0.14392445998a1.dist-info → dv_flow_mgr-1.0.0.14457729129a1.dist-info}/WHEEL
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|