dv-flow-mgr 1.8.14931268525rc0__py3-none-any.whl → 1.8.14950048134rc0__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 -1
- dv_flow/mgr/cmds/cmd_run.py +2 -1
- dv_flow/mgr/package_loader.py +27 -19
- dv_flow/mgr/std/flow.dv +1 -11
- dv_flow/mgr/task_graph_builder.py +59 -24
- {dv_flow_mgr-1.8.14931268525rc0.dist-info → dv_flow_mgr-1.8.14950048134rc0.dist-info}/METADATA +1 -1
- {dv_flow_mgr-1.8.14931268525rc0.dist-info → dv_flow_mgr-1.8.14950048134rc0.dist-info}/RECORD +11 -11
- {dv_flow_mgr-1.8.14931268525rc0.dist-info → dv_flow_mgr-1.8.14950048134rc0.dist-info}/WHEEL +1 -1
- {dv_flow_mgr-1.8.14931268525rc0.dist-info → dv_flow_mgr-1.8.14950048134rc0.dist-info}/entry_points.txt +0 -0
- {dv_flow_mgr-1.8.14931268525rc0.dist-info → dv_flow_mgr-1.8.14950048134rc0.dist-info}/licenses/LICENSE +0 -0
- {dv_flow_mgr-1.8.14931268525rc0.dist-info → dv_flow_mgr-1.8.14950048134rc0.dist-info}/top_level.txt +0 -0
dv_flow/mgr/__init__.py
CHANGED
dv_flow/mgr/cmds/cmd_run.py
CHANGED
@@ -22,6 +22,7 @@
|
|
22
22
|
import asyncio
|
23
23
|
import os
|
24
24
|
import logging
|
25
|
+
import sys
|
25
26
|
from typing import ClassVar
|
26
27
|
from ..util import loadProjPkgDef
|
27
28
|
from ..task_data import SeverityE
|
@@ -48,7 +49,7 @@ class CmdRun(object):
|
|
48
49
|
|
49
50
|
if listener.has_severity[SeverityE.Error] > 0:
|
50
51
|
print("Error(s) encountered while loading package definition")
|
51
|
-
|
52
|
+
sys.exit(1)
|
52
53
|
|
53
54
|
if pkg is None:
|
54
55
|
raise Exception("Failed to find a 'flow.dv' file that defines a package in %s or its parent directories" % os.getcwd())
|
dv_flow/mgr/package_loader.py
CHANGED
@@ -448,25 +448,27 @@ class PackageLoader(object):
|
|
448
448
|
imp_path = os.path.join(base, leaf)
|
449
449
|
self._log.debug("Found: %s" % imp_path)
|
450
450
|
elif os.path.isdir(os.path.join(base, leaf)):
|
451
|
-
|
452
|
-
|
453
|
-
|
454
|
-
|
455
|
-
|
456
|
-
for dir in os.listdir(path):
|
457
|
-
if os.path.isdir(os.path.join(path, dir)):
|
458
|
-
if next_dir is None:
|
459
|
-
next_dir = dir
|
460
|
-
else:
|
461
|
-
path = None
|
462
|
-
break
|
463
|
-
if path is not None:
|
464
|
-
path = next_dir
|
465
|
-
if path is not None and os.path.isfile(os.path.join(path, "flow.dv")):
|
466
|
-
imp_path = os.path.join(path, "flow.dv")
|
467
|
-
self._log.debug("Found: %s" % imp_path)
|
451
|
+
if os.path.isfile(os.path.join(base, leaf, "flow.dv")):
|
452
|
+
imp_path = os.path.join(base, leaf, "flow.dv")
|
453
|
+
self._log.debug("Found: %s" % imp_path)
|
454
|
+
else:
|
455
|
+
imp_path = self._findFlowDvSubdir(os.path.join(base, leaf))
|
468
456
|
self._log.debug("<-- _findFlowDvInDir %s" % imp_path)
|
469
457
|
return imp_path
|
458
|
+
|
459
|
+
def _findFlowDvSubdir(self, dir):
|
460
|
+
ret = None
|
461
|
+
# Search deeper
|
462
|
+
ret = None
|
463
|
+
for subdir in os.listdir(dir):
|
464
|
+
if os.path.isfile(os.path.join(dir, subdir, "flow.dv")):
|
465
|
+
ret = os.path.join(dir, subdir, "flow.dv")
|
466
|
+
self._log.debug("Found: %s" % ret)
|
467
|
+
elif os.path.isdir(os.path.join(dir, subdir)):
|
468
|
+
ret = self._findFlowDvSubdir(os.path.join(dir, subdir))
|
469
|
+
if ret is not None:
|
470
|
+
break
|
471
|
+
return ret
|
470
472
|
|
471
473
|
def _loadFragments(self, pkg, fragments, basedir, taskdefs, typedefs):
|
472
474
|
for spec in fragments:
|
@@ -548,6 +550,10 @@ class PackageLoader(object):
|
|
548
550
|
def getTask(self, name) -> Task:
|
549
551
|
task = self._findTask(name)
|
550
552
|
return task
|
553
|
+
|
554
|
+
def getType(self, name) -> Type:
|
555
|
+
type = self._findType(name)
|
556
|
+
return type
|
551
557
|
|
552
558
|
def _loadTasks(self, pkg, taskdefs : List[TaskDef], basedir : str):
|
553
559
|
self._log.debug("--> _loadTasks %s" % pkg.name)
|
@@ -747,10 +753,12 @@ class PackageLoader(object):
|
|
747
753
|
return self._loader_scope.findType(name)
|
748
754
|
|
749
755
|
def _findTask(self, name):
|
756
|
+
ret = None
|
750
757
|
if len(self._pkg_s):
|
751
|
-
|
758
|
+
ret = self._pkg_s[-1].findTask(name)
|
752
759
|
else:
|
753
|
-
|
760
|
+
ret = self._loader_scope.findTask(name)
|
761
|
+
return ret
|
754
762
|
|
755
763
|
def _findTaskOrType(self, name):
|
756
764
|
self._log.debug("--> _findTaskOrType %s" % name)
|
dv_flow/mgr/std/flow.dv
CHANGED
@@ -120,22 +120,12 @@ package:
|
|
120
120
|
Optional timestamp file to determine if running
|
121
121
|
the command changed the output
|
122
122
|
|
123
|
-
- name: DataItem
|
124
|
-
shell: pytask
|
125
|
-
run: dv_flow.mgr.std.data_item.DataItem
|
126
|
-
doc: |
|
127
|
-
Creates and outputs a data item
|
128
|
-
with:
|
129
|
-
type:
|
130
|
-
type: str
|
131
|
-
value: ""
|
132
|
-
with:
|
133
|
-
type: map
|
134
123
|
types:
|
135
124
|
- name: DataItem
|
136
125
|
with:
|
137
126
|
type:
|
138
127
|
type: str
|
128
|
+
|
139
129
|
- name: FileSet
|
140
130
|
uses: std.DataItem
|
141
131
|
with:
|
@@ -306,41 +306,76 @@ class TaskGraphBuilder(object):
|
|
306
306
|
|
307
307
|
def mkTaskNode(self, task_t, name=None, srcdir=None, needs=None, **kwargs):
|
308
308
|
self._log.debug("--> mkTaskNode: %s" % task_t)
|
309
|
+
ret = None
|
309
310
|
|
311
|
+
task = None
|
310
312
|
if task_t in self._task_m.keys():
|
311
313
|
task = self._task_m[task_t]
|
312
|
-
# Get the package for this task
|
313
|
-
self.push_name_resolution_context(task.package)
|
314
314
|
elif self.loader is not None:
|
315
315
|
task = self.loader.getTask(task_t)
|
316
|
+
|
316
317
|
if task is None:
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
318
|
+
if task_t in self._type_m.keys():
|
319
|
+
type = self._type_m[task_t]
|
320
|
+
|
321
|
+
if type is None:
|
322
|
+
type = self.loader.getType(task_t)
|
323
|
+
|
324
|
+
if type is not None:
|
325
|
+
if srcdir is None:
|
326
|
+
srcdir = os.path.dirname(type.srcinfo.file)
|
327
|
+
ret = TaskNodeLeaf(
|
328
|
+
name=name,
|
329
|
+
srcdir=srcdir,
|
330
|
+
params=type.paramT(),
|
331
|
+
ctxt=self._ctxt,
|
332
|
+
task=DataCallable(type.paramT))
|
333
|
+
self._task_node_m[name] = ret
|
334
|
+
else:
|
335
|
+
raise Exception("task_t (%s) is neither a task nor type" % str(task_t))
|
321
336
|
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
337
|
+
elif task_t in self._type_m.keys():
|
338
|
+
# Create a task around the type
|
339
|
+
type = self._type_m[task_t]
|
340
|
+
if srcdir is None:
|
341
|
+
srcdir = os.path.dirname(type.srcinfo.file)
|
342
|
+
ret = TaskNodeLeaf(
|
343
|
+
name=name,
|
326
344
|
srcdir=srcdir,
|
327
|
-
|
345
|
+
params=type.paramT(),
|
346
|
+
ctxt=self._ctxt,
|
347
|
+
task=DataCallable(type.paramT)
|
348
|
+
)
|
349
|
+
self._task_node_m[name] = ret
|
328
350
|
|
329
|
-
|
330
|
-
|
331
|
-
|
351
|
+
if ret is None:
|
352
|
+
if task is None:
|
353
|
+
raise Exception("task_t (%s) not present" % str(task_t))
|
332
354
|
|
333
|
-
|
334
|
-
if hasattr(ret.params, k):
|
335
|
-
setattr(ret.params, k, v)
|
336
|
-
else:
|
337
|
-
raise Exception("Task %s parameters do not include %s" % (task.name, k))
|
355
|
+
self.push_name_resolution_context(task.package)
|
338
356
|
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
357
|
+
try:
|
358
|
+
ret = self._mkTaskNode(
|
359
|
+
task,
|
360
|
+
name=name,
|
361
|
+
srcdir=srcdir,
|
362
|
+
eval=self._eval)
|
363
|
+
|
364
|
+
if needs is not None:
|
365
|
+
for need in needs:
|
366
|
+
ret.needs.append((need, False))
|
367
|
+
|
368
|
+
for k,v in kwargs.items():
|
369
|
+
if hasattr(ret.params, k):
|
370
|
+
setattr(ret.params, k, v)
|
371
|
+
else:
|
372
|
+
raise Exception("Task %s parameters do not include %s" % (task.name, k))
|
373
|
+
finally:
|
374
|
+
# Clean up package context if we created one
|
375
|
+
self.pop_name_resolution_context()
|
376
|
+
|
377
|
+
self._log.debug("<-- mkTaskNode: %s" % task_t)
|
378
|
+
return ret
|
344
379
|
|
345
380
|
def mkDataItem(self, name, **kwargs):
|
346
381
|
self._log.debug("--> mkDataItem: %s" % name)
|
{dv_flow_mgr-1.8.14931268525rc0.dist-info → dv_flow_mgr-1.8.14950048134rc0.dist-info}/RECORD
RENAMED
@@ -1,4 +1,4 @@
|
|
1
|
-
dv_flow/mgr/__init__.py,sha256=
|
1
|
+
dv_flow/mgr/__init__.py,sha256=RAohHzmrdRRIKaqwH7AMnO2sTmlt1FtW-4kx-j9KvOw,1315
|
2
2
|
dv_flow/mgr/__main__.py,sha256=BogNdBkXhgg05E8_IumNkVoag6WwvfbpiI8346oOtPo,3844
|
3
3
|
dv_flow/mgr/cond_def.py,sha256=2ZkzPusqVkN1fFMTvkDl9O_OJLPdD_cK3xzX9J75RMw,343
|
4
4
|
dv_flow/mgr/config.py,sha256=b2MVlVVNB0psk8x4bQRAYshkpNJrtyMtV1Ymhmx9AfM,137
|
@@ -20,7 +20,7 @@ dv_flow/mgr/out,sha256=d8GGBi3J43fhdLBlnsUbzBfRe0TD0QTP3nOTz54l2bI,200
|
|
20
20
|
dv_flow/mgr/package.py,sha256=L1ba5xguOZWuyg9s4MfafKgSoIka3SgAQzYAmcV7XgQ,4430
|
21
21
|
dv_flow/mgr/package_def.py,sha256=1O1SBJATnw-zeYKRNENgw-RWxZK0hxNQhnncfE_NR-U,5674
|
22
22
|
dv_flow/mgr/package_import_spec.py,sha256=aZMpnS9a5NFY76_pYXEuO3-Mkc_xFzy73fdrUe_54Dc,1760
|
23
|
-
dv_flow/mgr/package_loader.py,sha256=
|
23
|
+
dv_flow/mgr/package_loader.py,sha256=7kI7UFALnnOhz128iiH_Fid9vfNSYAIzhMeQPuA4DJg,33704
|
24
24
|
dv_flow/mgr/package_node.py,sha256=CccD2ECiIXy9JBkRR3c7qDxeBiLiPbRT9CqR-Al_niI,214
|
25
25
|
dv_flow/mgr/param.py,sha256=kkxMRGf6mPjSZJsjgLKH2vJL62Sn0ZESvjBLkEYOp20,1386
|
26
26
|
dv_flow/mgr/param_def.py,sha256=9uO-7UI4OotYixQBo8Nwb2o8FQRFxxJylYCZm9rjt48,1917
|
@@ -34,7 +34,7 @@ dv_flow/mgr/srcinfo.py,sha256=xrfp-relVr7hYNbxOjY5jqX4H0nNMm9HK5AAM6_Piyk,366
|
|
34
34
|
dv_flow/mgr/task.py,sha256=n3v9A9HvgMWNeQhXVB_L2qRjgjounXMs9-bbxtyEau8,2088
|
35
35
|
dv_flow/mgr/task_data.py,sha256=lN7Iq8YTitEMGG4rZqYQi6Ri2HuPgBQ5oGQbW-63T8c,12436
|
36
36
|
dv_flow/mgr/task_def.py,sha256=8NPwtTROfWDkMqcO9mKXV4dw0sC4mCMmnsNuv8uTdTY,5094
|
37
|
-
dv_flow/mgr/task_graph_builder.py,sha256=
|
37
|
+
dv_flow/mgr/task_graph_builder.py,sha256=2u5iOa4vMZaAxbImVknMLQLV6TEVbxXzEfsE7d3YXKI,29380
|
38
38
|
dv_flow/mgr/task_graph_dot_writer.py,sha256=qK4Imy9o2_F1aKoU1tJ-qoBHslq2BhSMbdjAUPfpN7I,6009
|
39
39
|
dv_flow/mgr/task_listener_log.py,sha256=Ai-6X5BOoGsaNTgnlXEW0-czrjJm7__ShNK501CUmko,4337
|
40
40
|
dv_flow/mgr/task_listener_trace.py,sha256=7B-V2YK8uXd_QSGBq_7USmbe5CleVvwumU0CpsmxZvg,6224
|
@@ -57,14 +57,14 @@ dv_flow/mgr/type.py,sha256=hoJTatlPC0yOazKSWduK-5CfY38RPkc6qXFzOCcVSdM,723
|
|
57
57
|
dv_flow/mgr/type_def.py,sha256=4sge3PibO1jDnS0cXdX0PiurcKbDA3kT6rb4DGIKwEM,1176
|
58
58
|
dv_flow/mgr/yaml_srcinfo_loader.py,sha256=29BNRiB8Hj1FepkrLtdjHSv5U_85Q432gBeeK80nKEA,1606
|
59
59
|
dv_flow/mgr/cmds/cmd_graph.py,sha256=yg5KbNrGvm3dySiI0Qei_pMWZkOE9GtEyaQ4IdNVmoE,2852
|
60
|
-
dv_flow/mgr/cmds/cmd_run.py,sha256
|
60
|
+
dv_flow/mgr/cmds/cmd_run.py,sha256=-0jfBihKTNLsHbILvul-quicUYFJ0yMcr5iZK4HFWrI,4096
|
61
61
|
dv_flow/mgr/cmds/cmd_show.py,sha256=JOIFaVXt8YCf9bKXfq6qzV5wQdxdLHqE-yCj0ecGREs,3755
|
62
62
|
dv_flow/mgr/share/flow.json,sha256=lNmZex9NXkYbyb2aZseQfUOkV9CMyfH0iLODEI7EPBw,5096
|
63
63
|
dv_flow/mgr/std/create_file.py,sha256=SEpKTQdiY32002C7b4kYfAiK9v_xajixOJU5WftW75I,2957
|
64
64
|
dv_flow/mgr/std/data_item.py,sha256=olKtspEVFOvr92reUl4QaQV27UVyjSGIfIWpsy0Myvo,434
|
65
65
|
dv_flow/mgr/std/exec.py,sha256=UChqa_tAjvdB1NjqTsvlPgFomP8hMsX2rAOPyUonNpk,3896
|
66
66
|
dv_flow/mgr/std/fileset.py,sha256=_9IUjZ2_doygc29Qg1hJPaFPzlaIaTdvHnYTai8mE3A,4183
|
67
|
-
dv_flow/mgr/std/flow.dv,sha256=
|
67
|
+
dv_flow/mgr/std/flow.dv,sha256=qT3qlDjo6DMMcPXHLbW6Z0OJOouXupQK3cm_15JxSKI,3786
|
68
68
|
dv_flow/mgr/std/incdirs.py,sha256=F0wraOxkRJRkrhsyk9v2YvpquFtcK4ZsMO1G9sgmhmA,588
|
69
69
|
dv_flow/mgr/std/message.py,sha256=0JHLErg8whqMLAasG1fumZ2O7R7WNWeNQ9ibJaLDpVY,1029
|
70
70
|
dv_flow/mgr/std/task_null.py,sha256=dw6LXBXVwth6gLPeduDvlz5znAhcVpDH8r1DticD-0w,1041
|
@@ -74,9 +74,9 @@ dv_flow/mgr/util/util.py,sha256=BO7iqP_c9ttmXkojq7nKDN-g8wl1_Pco9k-KnrXxjwE,1889
|
|
74
74
|
dv_flow/mgr/util/cmds/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
75
75
|
dv_flow/mgr/util/cmds/cmd_schema.py,sha256=IJzZdxCSEgIQ79LpYiM7UqJ9RJ-7yraqmBN2XVgAgXA,1752
|
76
76
|
dv_flow/mgr/util/cmds/cmd_workspace.py,sha256=egmaIXpe5L-TePwmcfisfrG6tdiTUWSjqa9Za5WChVs,890
|
77
|
-
dv_flow_mgr-1.8.
|
78
|
-
dv_flow_mgr-1.8.
|
79
|
-
dv_flow_mgr-1.8.
|
80
|
-
dv_flow_mgr-1.8.
|
81
|
-
dv_flow_mgr-1.8.
|
82
|
-
dv_flow_mgr-1.8.
|
77
|
+
dv_flow_mgr-1.8.14950048134rc0.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
78
|
+
dv_flow_mgr-1.8.14950048134rc0.dist-info/METADATA,sha256=zkhMnyZn6nXcEc_vPWK_jlt-k8gQzG4g3BaDYm6Oca8,13335
|
79
|
+
dv_flow_mgr-1.8.14950048134rc0.dist-info/WHEEL,sha256=DnLRTWE75wApRYVsjgc6wsVswC54sMSJhAEd4xhDpBk,91
|
80
|
+
dv_flow_mgr-1.8.14950048134rc0.dist-info/entry_points.txt,sha256=1roy8wAFM48LabOvr6jiOw0MUs-qE8X3Vf8YykPazxk,50
|
81
|
+
dv_flow_mgr-1.8.14950048134rc0.dist-info/top_level.txt,sha256=amfVTkggzYPtWwLqNmRukfz1Buu0pGS2SrYBBLhXm04,8
|
82
|
+
dv_flow_mgr-1.8.14950048134rc0.dist-info/RECORD,,
|
File without changes
|
File without changes
|
{dv_flow_mgr-1.8.14931268525rc0.dist-info → dv_flow_mgr-1.8.14950048134rc0.dist-info}/top_level.txt
RENAMED
File without changes
|