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 CHANGED
@@ -32,6 +32,6 @@ from .task_runner import TaskSetRunner
32
32
  from .task_listener_log import TaskListenerLog
33
33
 
34
34
  VERSION="1.9.0"
35
- SUFFIX="14961727636rc0"
35
+ SUFFIX="14984445659rc0"
36
36
  __version__="%s%s" % (VERSION, SUFFIX)
37
37
 
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
 
@@ -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")
@@ -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 = self.findPackage(pkg_name)
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
- closest = self.find_closest_name(taskdef.uses)
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
-
@@ -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
- self.console.print("%s" % msg)
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
- self.console.print("%s%s" % (
114
- msg,
115
- ("(%s)" % rundir) if rundir is not None else ""))
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
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dv-flow-mgr
3
- Version: 1.9.14961727636rc0
3
+ Version: 1.9.14984445659rc0
4
4
  Summary: DV Flow Manager is a build system for silicon design
5
5
  Author-email: Matthew Ballance <matt.ballance@gmail.com>
6
6
  License: Apache License
@@ -1,4 +1,4 @@
1
- dv_flow/mgr/__init__.py,sha256=Ucn1nIpMIGDuGOKhjnp-cRo3rPlcQsDDaqdPGZ9MJTE,1315
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=L1ba5xguOZWuyg9s4MfafKgSoIka3SgAQzYAmcV7XgQ,4430
22
- dv_flow/mgr/package_def.py,sha256=1O1SBJATnw-zeYKRNENgw-RWxZK0hxNQhnncfE_NR-U,5674
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=okJM0AE8jF8CmV8Tdfd8zpILzbwqrVI5NwqofZQTPaM,35749
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=Ai-6X5BOoGsaNTgnlXEW0-czrjJm7__ShNK501CUmko,4337
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.14961727636rc0.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
80
- dv_flow_mgr-1.9.14961727636rc0.dist-info/METADATA,sha256=GFXHemv_yeXsmXFxUn1cEZuTDOLhiMj6c_StL2Wibgg,13335
81
- dv_flow_mgr-1.9.14961727636rc0.dist-info/WHEEL,sha256=DnLRTWE75wApRYVsjgc6wsVswC54sMSJhAEd4xhDpBk,91
82
- dv_flow_mgr-1.9.14961727636rc0.dist-info/entry_points.txt,sha256=1roy8wAFM48LabOvr6jiOw0MUs-qE8X3Vf8YykPazxk,50
83
- dv_flow_mgr-1.9.14961727636rc0.dist-info/top_level.txt,sha256=amfVTkggzYPtWwLqNmRukfz1Buu0pGS2SrYBBLhXm04,8
84
- dv_flow_mgr-1.9.14961727636rc0.dist-info/RECORD,,
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,,