dv-flow-mgr 1.9.14961727636rc0__py3-none-any.whl → 1.9.14984445659rc0__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/package.py +7 -1
- dv_flow/mgr/package_def.py +5 -0
- dv_flow/mgr/package_loader.py +27 -53
- dv_flow/mgr/task_listener_log.py +15 -4
- {dv_flow_mgr-1.9.14961727636rc0.dist-info → dv_flow_mgr-1.9.14984445659rc0.dist-info}/METADATA +1 -1
- {dv_flow_mgr-1.9.14961727636rc0.dist-info → dv_flow_mgr-1.9.14984445659rc0.dist-info}/RECORD +11 -11
- {dv_flow_mgr-1.9.14961727636rc0.dist-info → dv_flow_mgr-1.9.14984445659rc0.dist-info}/WHEEL +0 -0
- {dv_flow_mgr-1.9.14961727636rc0.dist-info → dv_flow_mgr-1.9.14984445659rc0.dist-info}/entry_points.txt +0 -0
- {dv_flow_mgr-1.9.14961727636rc0.dist-info → dv_flow_mgr-1.9.14984445659rc0.dist-info}/licenses/LICENSE +0 -0
- {dv_flow_mgr-1.9.14961727636rc0.dist-info → dv_flow_mgr-1.9.14984445659rc0.dist-info}/top_level.txt +0 -0
dv_flow/mgr/__init__.py
CHANGED
dv_flow/mgr/package.py
CHANGED
@@ -21,13 +21,18 @@
|
|
21
21
|
#****************************************************************************
|
22
22
|
import dataclasses as dc
|
23
23
|
import logging
|
24
|
-
from typing import Any, ClassVar, Dict, List
|
24
|
+
from typing import Any, ClassVar, Dict, List, Union
|
25
25
|
from .fragment_def import FragmentDef
|
26
26
|
from .package_def import PackageDef
|
27
27
|
from .srcinfo import SrcInfo
|
28
28
|
from .task import Task
|
29
29
|
from .type import Type
|
30
30
|
|
31
|
+
@dc.dataclass
|
32
|
+
class Override(object):
|
33
|
+
target : Union[str, 'Package']
|
34
|
+
override : Union[str, 'Package']
|
35
|
+
|
31
36
|
@dc.dataclass
|
32
37
|
class Package(object):
|
33
38
|
pkg_def : PackageDef
|
@@ -39,6 +44,7 @@ class Package(object):
|
|
39
44
|
type_m : Dict[str,Type] = dc.field(default_factory=dict)
|
40
45
|
fragment_def_l : List[FragmentDef] = dc.field(default_factory=list)
|
41
46
|
pkg_m : Dict[str, 'Package'] = dc.field(default_factory=dict)
|
47
|
+
# overrides : Dict[str, str]
|
42
48
|
srcinfo : SrcInfo = None
|
43
49
|
_log : ClassVar = logging.getLogger("Package")
|
44
50
|
|
dv_flow/mgr/package_def.py
CHANGED
@@ -39,6 +39,9 @@ from .srcinfo import SrcInfo
|
|
39
39
|
from .task_def import TaskDef
|
40
40
|
from .type_def import TypeDef
|
41
41
|
|
42
|
+
class Override(BaseModel):
|
43
|
+
name : str = dc.Field()
|
44
|
+
override : str = dc.Field(alias="with")
|
42
45
|
|
43
46
|
class PackageDef(BaseModel):
|
44
47
|
name : str = dc.Field(
|
@@ -50,6 +53,8 @@ class PackageDef(BaseModel):
|
|
50
53
|
imports : List[Union[str,PackageImportSpec]] = dc.Field(
|
51
54
|
default_factory=list,
|
52
55
|
description="List of packages to import")
|
56
|
+
overrides : Dict[str, str] = dc.Field(default_factory=dict,
|
57
|
+
description="Overrides for packages and parameters")
|
53
58
|
fragments: List[str] = dc.Field(
|
54
59
|
default_factory=list,
|
55
60
|
description="List of fragments to include")
|
dv_flow/mgr/package_loader.py
CHANGED
@@ -72,11 +72,29 @@ class LoaderScope(SymbolScope):
|
|
72
72
|
# Split the name into elements
|
73
73
|
name_elems = name.split('.')
|
74
74
|
|
75
|
+
def find_pkg(pkg_name):
|
76
|
+
pkg = None
|
77
|
+
|
78
|
+
if pkg_name in self.loader._pkg_m.keys():
|
79
|
+
pkg = self.loader._pkg_m[pkg_name]
|
80
|
+
else:
|
81
|
+
path = self.loader.pkg_rgy.findPackagePath(pkg_name)
|
82
|
+
if path is not None:
|
83
|
+
path = os.path.normpath(path)
|
84
|
+
pkg = self.loader._loadPackage(path)
|
85
|
+
self.loader._pkg_m[pkg_name] = pkg
|
86
|
+
if pkg is not None:
|
87
|
+
self._log.debug("Found pkg %s (%s)" % (pkg_name, str(pkg.task_m.keys())))
|
88
|
+
else:
|
89
|
+
self._log.debug("Failed to find pkg %s" % pkg_name)
|
90
|
+
|
91
|
+
return pkg
|
92
|
+
|
75
93
|
if len(name_elems) > 1:
|
76
94
|
for i in range(len(name_elems)-1, -1, -1):
|
77
95
|
pkg_name = ".".join(name_elems[:i+1])
|
78
96
|
|
79
|
-
pkg =
|
97
|
+
pkg = find_pkg(pkg_name)
|
80
98
|
if pkg is not None:
|
81
99
|
break;
|
82
100
|
|
@@ -108,25 +126,6 @@ class LoaderScope(SymbolScope):
|
|
108
126
|
self._log.debug("<-- findType: %s (%s)" % (name, str(ret)))
|
109
127
|
|
110
128
|
return ret
|
111
|
-
|
112
|
-
def findPackage(self, name) -> Package:
|
113
|
-
pkg = None
|
114
|
-
|
115
|
-
if name in self.loader._pkg_m.keys():
|
116
|
-
pkg = self.loader._pkg_m[name]
|
117
|
-
else:
|
118
|
-
path = self.loader.pkg_rgy.findPackagePath(name)
|
119
|
-
if path is not None:
|
120
|
-
path = os.path.normpath(path)
|
121
|
-
pkg = self.loader._loadPackage(path)
|
122
|
-
self.loader._pkg_m[name] = pkg
|
123
|
-
if pkg is not None:
|
124
|
-
self._log.debug("Found pkg %s (%s)" % (name, str(pkg.task_m.keys())))
|
125
|
-
else:
|
126
|
-
self._log.debug("Failed to find pkg %s" % name)
|
127
|
-
|
128
|
-
return pkg
|
129
|
-
|
130
129
|
|
131
130
|
@dc.dataclass
|
132
131
|
class PackageScope(SymbolScope):
|
@@ -369,6 +368,13 @@ class PackageLoader(object):
|
|
369
368
|
# TODO: handle 'uses' for packages
|
370
369
|
pkg.paramT = self._getParamT(pkg_def, None)
|
371
370
|
|
371
|
+
# Apply any overrides from above
|
372
|
+
|
373
|
+
# Now, apply these overrides to the
|
374
|
+
for target,override in pkg_def.overrides.items():
|
375
|
+
# TODO: expand target, override
|
376
|
+
pass
|
377
|
+
|
372
378
|
pkg_scope = self.package_scope()
|
373
379
|
if pkg_scope is not None:
|
374
380
|
self._log.debug("Add self (%s) as a subpkg of %s" % (pkg.name, pkg_scope.pkg.name))
|
@@ -605,13 +611,7 @@ class PackageLoader(object):
|
|
605
611
|
task.uses = self._findTaskOrType(taskdef.uses)
|
606
612
|
|
607
613
|
if task.uses is None:
|
608
|
-
|
609
|
-
if closest:
|
610
|
-
self.error("failed to resolve task-uses %s. Did you mean %s?" % (
|
611
|
-
taskdef.uses,
|
612
|
-
closest), taskdef.srcinfo)
|
613
|
-
else:
|
614
|
-
self.error("failed to resolve task-uses %s" % taskdef.uses, taskdef.srcinfo)
|
614
|
+
self.error("failed to resolve task-uses %s" % taskdef.uses, taskdef.srcinfo)
|
615
615
|
continue
|
616
616
|
|
617
617
|
passthrough, consumes, rundir = self._getPTConsumesRundir(taskdef, task.uses)
|
@@ -948,29 +948,3 @@ class PackageLoader(object):
|
|
948
948
|
def marker(self, marker):
|
949
949
|
for l in self.marker_listeners:
|
950
950
|
l(marker)
|
951
|
-
|
952
|
-
def find_closest_name(self, name):
|
953
|
-
import difflib
|
954
|
-
|
955
|
-
# First see if we can find the package
|
956
|
-
|
957
|
-
name_s = set()
|
958
|
-
pkg_s = set()
|
959
|
-
for p in self._pkg_m.values():
|
960
|
-
self._gatherTaskNames(name_s, pkg_s, p)
|
961
|
-
|
962
|
-
closest_matches = difflib.get_close_matches(name, name_s)
|
963
|
-
|
964
|
-
if closest_matches and len(closest_matches) > 0:
|
965
|
-
closest_match = closest_matches[0]
|
966
|
-
self._log.debug("Closest match: %s" % closest_match)
|
967
|
-
return closest_match
|
968
|
-
|
969
|
-
def _gatherTaskNames(self, name_s, pkg_s, pkg):
|
970
|
-
if pkg.name not in pkg_s:
|
971
|
-
pkg_s.add(pkg.name)
|
972
|
-
for t in pkg.task_m.keys():
|
973
|
-
name_s.add(t)
|
974
|
-
for p in pkg.pkg_m.values():
|
975
|
-
self._gatherTaskNames(name_s, pkg_s, p)
|
976
|
-
|
dv_flow/mgr/task_listener_log.py
CHANGED
@@ -100,9 +100,17 @@ class TaskListenerLog(object):
|
|
100
100
|
sev_pref,
|
101
101
|
(" " + name) if name is not None and name != "" else "",
|
102
102
|
m.msg)
|
103
|
+
|
104
|
+
# Escape anything that looks like a styling marker
|
105
|
+
msg = msg.replace("[", "\\[")
|
106
|
+
|
103
107
|
|
104
108
|
if m.loc is not None:
|
105
|
-
|
109
|
+
|
110
|
+
try:
|
111
|
+
self.console.print("%s" % msg)
|
112
|
+
except Exception as e:
|
113
|
+
self._log.error("Problem displaying message \"%s\" to the console: %s" % (msg, e))
|
106
114
|
if m.loc.line != -1 and m.loc.pos != -1:
|
107
115
|
self.console.print(" %s:%d:%d" % (m.loc.path, m.loc.line, m.loc.pos))
|
108
116
|
elif m.loc.line != -1:
|
@@ -110,9 +118,12 @@ class TaskListenerLog(object):
|
|
110
118
|
else:
|
111
119
|
self.console.print(" %s" % m.loc.path)
|
112
120
|
else:
|
113
|
-
|
114
|
-
|
115
|
-
|
121
|
+
try:
|
122
|
+
self.console.print("%s%s" % (
|
123
|
+
msg,
|
124
|
+
("(%s)" % rundir) if rundir is not None else ""))
|
125
|
+
except Exception as e:
|
126
|
+
self._log.error("Problem displaying message \"%s\" to the console: %s" % (msg, e))
|
116
127
|
|
117
128
|
pass
|
118
129
|
|
{dv_flow_mgr-1.9.14961727636rc0.dist-info → dv_flow_mgr-1.9.14984445659rc0.dist-info}/RECORD
RENAMED
@@ -1,4 +1,4 @@
|
|
1
|
-
dv_flow/mgr/__init__.py,sha256
|
1
|
+
dv_flow/mgr/__init__.py,sha256=-6xIQMeY8cnLTIa2To7xXMSSvPpXHuUX6NiFj5XUMog,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
|
@@ -18,10 +18,10 @@ dv_flow/mgr/name_resolution.py,sha256=yeOQuPRWaZRWbEc-82W7qO854RY1qicqC4IYxk8jpv
|
|
18
18
|
dv_flow/mgr/need_def.py,sha256=X52FJnhukwFsGCkIM-W6apZEdxqS5Gmm-rRO-TS83aU,173
|
19
19
|
dv_flow/mgr/null_callable.py,sha256=x6hlJ9EL6xFLSGFgd14eXbxSWxsUGF56jpbLhERjPtg,243
|
20
20
|
dv_flow/mgr/out,sha256=d8GGBi3J43fhdLBlnsUbzBfRe0TD0QTP3nOTz54l2bI,200
|
21
|
-
dv_flow/mgr/package.py,sha256=
|
22
|
-
dv_flow/mgr/package_def.py,sha256=
|
21
|
+
dv_flow/mgr/package.py,sha256=qz17dfKW3csOiACUe4TqrOnd8Z2d_DxYbLmP0OwhKZ8,4580
|
22
|
+
dv_flow/mgr/package_def.py,sha256=h3_FIKQB0vqfcu1jRAZuB8W8Kozr62oaKNchxeNjpWk,5898
|
23
23
|
dv_flow/mgr/package_import_spec.py,sha256=aZMpnS9a5NFY76_pYXEuO3-Mkc_xFzy73fdrUe_54Dc,1760
|
24
|
-
dv_flow/mgr/package_loader.py,sha256=
|
24
|
+
dv_flow/mgr/package_loader.py,sha256=bYkTXr3PS0xhi3AO8pxvqyNB9RPQRePcy6gUWJOBnvY,34889
|
25
25
|
dv_flow/mgr/package_node.py,sha256=CccD2ECiIXy9JBkRR3c7qDxeBiLiPbRT9CqR-Al_niI,214
|
26
26
|
dv_flow/mgr/param.py,sha256=kkxMRGf6mPjSZJsjgLKH2vJL62Sn0ZESvjBLkEYOp20,1386
|
27
27
|
dv_flow/mgr/param_def.py,sha256=9uO-7UI4OotYixQBo8Nwb2o8FQRFxxJylYCZm9rjt48,1917
|
@@ -38,7 +38,7 @@ dv_flow/mgr/task_def.py,sha256=lhiOL7E_TfW7Ytg5qipE6d2cqTkfVqAOs1MZgtCqeLg,5257
|
|
38
38
|
dv_flow/mgr/task_gen_ctxt.py,sha256=1QQqqgaCjJSlzTV0SASpTb69vINFrDq3aqjYCKUkx3s,846
|
39
39
|
dv_flow/mgr/task_graph_builder.py,sha256=pqzazJjA36g-ETuvxfEl6JV6035koJJPqSF_L-Egtgg,32716
|
40
40
|
dv_flow/mgr/task_graph_dot_writer.py,sha256=qK4Imy9o2_F1aKoU1tJ-qoBHslq2BhSMbdjAUPfpN7I,6009
|
41
|
-
dv_flow/mgr/task_listener_log.py,sha256=
|
41
|
+
dv_flow/mgr/task_listener_log.py,sha256=5skg1QAp3jmInsjoxI2htul4DKv6ID0T9Z5itk4wudQ,4763
|
42
42
|
dv_flow/mgr/task_listener_trace.py,sha256=7B-V2YK8uXd_QSGBq_7USmbe5CleVvwumU0CpsmxZvg,6224
|
43
43
|
dv_flow/mgr/task_node.py,sha256=OC3rkeRSFv9wmgkMZ_7eJu7nuXGJcwW_b6FGQM-w7AU,5231
|
44
44
|
dv_flow/mgr/task_node_compound.py,sha256=0biBPT_2SpCPJL7DFaFY27_K7kNxJ1taIut3Fv12HXk,3347
|
@@ -76,9 +76,9 @@ dv_flow/mgr/util/util.py,sha256=BO7iqP_c9ttmXkojq7nKDN-g8wl1_Pco9k-KnrXxjwE,1889
|
|
76
76
|
dv_flow/mgr/util/cmds/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
77
77
|
dv_flow/mgr/util/cmds/cmd_schema.py,sha256=IJzZdxCSEgIQ79LpYiM7UqJ9RJ-7yraqmBN2XVgAgXA,1752
|
78
78
|
dv_flow/mgr/util/cmds/cmd_workspace.py,sha256=egmaIXpe5L-TePwmcfisfrG6tdiTUWSjqa9Za5WChVs,890
|
79
|
-
dv_flow_mgr-1.9.
|
80
|
-
dv_flow_mgr-1.9.
|
81
|
-
dv_flow_mgr-1.9.
|
82
|
-
dv_flow_mgr-1.9.
|
83
|
-
dv_flow_mgr-1.9.
|
84
|
-
dv_flow_mgr-1.9.
|
79
|
+
dv_flow_mgr-1.9.14984445659rc0.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
80
|
+
dv_flow_mgr-1.9.14984445659rc0.dist-info/METADATA,sha256=b3MThxkBzbiwjPJ2n-9_BBAbtJpe5H2qP9wQTsv-too,13335
|
81
|
+
dv_flow_mgr-1.9.14984445659rc0.dist-info/WHEEL,sha256=DnLRTWE75wApRYVsjgc6wsVswC54sMSJhAEd4xhDpBk,91
|
82
|
+
dv_flow_mgr-1.9.14984445659rc0.dist-info/entry_points.txt,sha256=1roy8wAFM48LabOvr6jiOw0MUs-qE8X3Vf8YykPazxk,50
|
83
|
+
dv_flow_mgr-1.9.14984445659rc0.dist-info/top_level.txt,sha256=amfVTkggzYPtWwLqNmRukfz1Buu0pGS2SrYBBLhXm04,8
|
84
|
+
dv_flow_mgr-1.9.14984445659rc0.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
{dv_flow_mgr-1.9.14961727636rc0.dist-info → dv_flow_mgr-1.9.14984445659rc0.dist-info}/top_level.txt
RENAMED
File without changes
|