dv-flow-mgr 0.0.1.12932354274a1__py3-none-any.whl → 0.0.1.12941329363a1__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.
@@ -59,6 +59,8 @@ class CmdRun(object):
59
59
  tasks = []
60
60
 
61
61
  for spec in args.tasks:
62
+ if spec.find('.') == -1:
63
+ spec = pkg.name + "." + spec
62
64
  task = builder.mkTaskGraph(spec)
63
65
  tasks.append(task)
64
66
 
dv_flow/mgr/pkg_rgy.py CHANGED
@@ -31,13 +31,11 @@ class PkgRgy(object):
31
31
  self._pkgpath = []
32
32
  self._pkg_m : Dict[str, Tuple[str,PackageDef]] = {}
33
33
 
34
- def hasPackage(self, name, search_path=False):
34
+ def hasPackage(self, name, search_path=True):
35
35
  if name in self._pkg_m.keys():
36
36
  return True
37
- elif search_path:
38
- for p in self._pkgpath:
39
- if os.path.exists(os.path.join(p, name)):
40
- return True
37
+ elif search_path and self._findOnPath(name) is not None:
38
+ return True
41
39
  else:
42
40
  return False
43
41
 
@@ -50,11 +48,33 @@ class PkgRgy(object):
50
48
  self._pkg_m[name][0],
51
49
  pkg_def
52
50
  )
53
- pass
54
51
  return self._pkg_m[name][1]
55
52
  else:
56
- # Go search the package path
57
- return None
53
+ return self._findOnPath(name)
54
+
55
+ def _findOnPath(self, name):
56
+ name_s = name.split('.')
57
+ name_dir = "/".join(name_s)
58
+ if len(name_s) > 1:
59
+ name_pref = "/".join(name_s[:-1])
60
+ else:
61
+ name_pref = None
62
+
63
+ pkg = None
64
+
65
+ for path in self._pkgpath:
66
+ if os.path.isfile(os.path.join(path, name_dir, "flow.dv")):
67
+ pkg = PackageDef.load(os.path.join(path, name_dir, "flow.dv"))
68
+ elif name_pref is not None and os.path.isfile(os.path.join(path, name_pref, name_s[-1] + ".dv")):
69
+ pkg = PackageDef.load(os.path.join(path, name_pref, name_s[-1] + ".dv"))
70
+ elif os.path.isfile(os.path.join(path, name + ".dv")):
71
+ pkg = PackageDef.load(os.path.join(path, name + ".dv"))
72
+
73
+ if pkg is not None:
74
+ self._pkg_m[name] = (pkg.name, pkg)
75
+ break
76
+
77
+ return pkg
58
78
 
59
79
  def registerPackage(self, pkg_def):
60
80
  if pkg_def.name in self._pkg_m.keys():
@@ -65,6 +85,10 @@ class PkgRgy(object):
65
85
  # Register built-in package
66
86
  self._pkg_m["std"] = (os.path.join(os.path.dirname(__file__), "std/flow.dv"), None)
67
87
 
88
+ if "DV_FLOW_PATH" in os.environ.keys() and os.environ["DV_FLOW_PATH"] != "":
89
+ paths = os.environ["DV_FLOW_PATH"].split(':')
90
+ self._pkgpath.extend(paths)
91
+
68
92
  if sys.version_info < (3,10):
69
93
  from importlib_metadata import entry_points
70
94
  else:
@@ -35,7 +35,6 @@ class TaskGraphBuilder(object):
35
35
  pkg_rgy : PkgRgy = None
36
36
  _pkg_s : List[Package] = dc.field(default_factory=list)
37
37
  _pkg_m : Dict[PackageSpec,Package] = dc.field(default_factory=dict)
38
- _pkg_def_m : Dict[str,PackageDef] = dc.field(default_factory=dict)
39
38
  _pkg_spec_s : List[PackageDef] = dc.field(default_factory=list)
40
39
  _task_m : Dict[TaskSpec,Task] = dc.field(default_factory=dict)
41
40
 
@@ -127,8 +126,6 @@ class TaskGraphBuilder(object):
127
126
  else:
128
127
  pkg_def = None
129
128
 
130
- print("spec: %s ; _pkg_def_m: %s" % (str(spec), str(self._pkg_def_m.keys())))
131
-
132
129
  # Need a stack to track which package we are currently in
133
130
  # Need a map to get a concrete package from a name with parameterization
134
131
 
@@ -140,8 +137,9 @@ class TaskGraphBuilder(object):
140
137
  pkg = self._pkg_s[-1]
141
138
  if spec in self._pkg_m.keys():
142
139
  pkg = self._pkg_m[spec]
143
- elif spec in self._pkg_def_m.keys():
144
- pkg = self._pkg_def_m[spec].mkPackage(self)
140
+ elif self.pkg_rgy.hasPackage(spec.name):
141
+ pkg_def = self.pkg_rgy.getPackage(spec.name)
142
+ pkg = pkg_def.mkPackage(self)
145
143
  self._pkg_m[spec] = pkg
146
144
  else:
147
145
  pkg = None
@@ -156,22 +154,26 @@ class TaskGraphBuilder(object):
156
154
  tgt_pkg_spec = PackageSpec(imp.name)
157
155
  if tgt_pkg_spec in self._pkg_m.keys():
158
156
  pkg = self._pkg_m[tgt_pkg_spec]
159
- elif tgt_pkg_spec in self._pkg_def_m.keys():
160
- base = self._pkg_def_m[tgt_pkg_spec]
157
+ elif self.pkg_rgy.hasPackage(tgt_pkg_spec.name):
158
+ base = self.pkg_rgy.getPackage(tgt_pkg_spec.name)
161
159
  pkg = base.mkPackage(self, spec.params)
162
160
  self._pkg_m[spec] = pkg
163
161
  elif imp.path is not None:
164
162
  # See if we can load the package
165
163
  print("TODO: load referenced package")
166
164
  else:
167
- raise Exception("Import alias %s not found" % imp.name)
165
+ raise Exception("Failed to resolve target (%s) of import alias %s" % (
166
+ imp.name,
167
+ imp.alias))
168
168
  break
169
169
  else:
170
170
  # Need to compare the spec with the full import spec
171
171
  imp_spec = PackageSpec(imp.name)
172
172
  # TODO: set parameters
173
173
  if imp_spec == spec:
174
- base = self._pkg_def_m[PackageSpec(spec.name)]
174
+ base = self.pkg_rgy.getPackage(spec.name)
175
+ if base is None:
176
+ raise Exception("Failed to find imported package %s" % spec.name)
175
177
  pkg = base.mkPackage(self, spec.params)
176
178
  self._pkg_m[spec] = pkg
177
179
  break
@@ -74,6 +74,8 @@ class TaskGraphRunnerLocal(TaskGraphRunner):
74
74
  print("dep_m: %s" % str(dep_m))
75
75
 
76
76
  order = list(toposort(dep_m))
77
+
78
+ print("order: %s" % str(order))
77
79
 
78
80
  active_task_l : List[Tuple[Task,Coroutine]]= []
79
81
  # Now, iterate over the concurrent sets
@@ -93,9 +95,9 @@ class TaskGraphRunnerLocal(TaskGraphRunner):
93
95
  active_task_l.pop(i)
94
96
  break
95
97
  if t not in self.done_task_m.keys():
96
- task = task_m[t]
97
- coro = asyncio.Task(task.do_run())
98
- active_task_l.append((task, coro))
98
+ task_t = task_m[t]
99
+ coro = asyncio.Task(task_t.do_run())
100
+ active_task_l.append((task_t, coro))
99
101
 
100
102
  # Now, wait for tasks to complete
101
103
  if len(active_task_l):
@@ -110,7 +112,7 @@ class TaskGraphRunnerLocal(TaskGraphRunner):
110
112
  ret = None
111
113
 
112
114
  if unwrap:
113
- return task.output
115
+ return task[0].output
114
116
  else:
115
117
  return list(t.output for t in task)
116
118
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: dv-flow-mgr
3
- Version: 0.0.1.12932354274a1
3
+ Version: 0.0.1.12941329363a1
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
@@ -5,25 +5,25 @@ dv_flow/mgr/fragment_def.py,sha256=p5i6ONtBWlDHTBFsduu3Z36_76Bn8PCIylp_xoZ7jfQ,1
5
5
  dv_flow/mgr/package.py,sha256=7G_ZQaTHin_mcwQu1PRsGmqfKAbdu9IC5HeLXtPgBDc,1342
6
6
  dv_flow/mgr/package_def.py,sha256=3X0lrbU_SCNhxF9wFTpfQcmD1AbOv4XhnA-5U0IPouk,11431
7
7
  dv_flow/mgr/package_import_spec.py,sha256=ah3r15v5Jdub2poc3sgi6Uar1L3oGoYsCPPNiOHV-a4,1760
8
- dv_flow/mgr/pkg_rgy.py,sha256=ANnG7eyWN-PBgyYlKzq4ThoQNT2YoYm_5xXIK5HzypA,3408
8
+ dv_flow/mgr/pkg_rgy.py,sha256=ej8VyWH8BWdDNVqk3cSJgQq4h3bW1rgj6uCxUr7gfH8,4384
9
9
  dv_flow/mgr/task.py,sha256=ewJ7bCFWqwVuzHZZsX2LDZfzXWVFfFlH8yFyn-xxIVg,5043
10
10
  dv_flow/mgr/task_data.py,sha256=-6Dqa3oUI7RJc1Js2SRSnhxNTcASkamXFYMN6UiknZQ,10376
11
11
  dv_flow/mgr/task_def.py,sha256=96hSwqJo0MazJ1VcLhovYRmNCplsNLt47AumtyjSddU,1690
12
- dv_flow/mgr/task_graph_builder.py,sha256=74w2A2XabL6xZVzb8bcKtSSdXdw7mzHJ69O7LrhkjMU,7935
12
+ dv_flow/mgr/task_graph_builder.py,sha256=hK4CxIBlyCL9L9iNQdDNQGrChfoFKmYtU7PT51g_PHM,8080
13
13
  dv_flow/mgr/task_graph_runner.py,sha256=NwNYcOJ952lPMLwIIlYE9CoDdedqvcw2fWHYUsKFXuU,2164
14
- dv_flow/mgr/task_graph_runner_local.py,sha256=QDCUyFj_m4hJTUsZD5nCUCnPu3hysdk65-gVA8eJ894,4546
14
+ dv_flow/mgr/task_graph_runner_local.py,sha256=-O0_TPuXoMrRvpSUWJZffDkUDyBC5PCnLCXJ4T30FgA,4604
15
15
  dv_flow/mgr/task_memento.py,sha256=C7VTQpBhDEoYuDmE6YTM-6TLMLnqHp6Y0Vat1aTgtCs,1096
16
16
  dv_flow/mgr/util.py,sha256=06eVyURF4ga-s8C9Sd3ZSDebwO4QS0XXaB8xADVbWRc,1437
17
- dv_flow/mgr/cmds/cmd_run.py,sha256=PqAbPMwqovaaq14tnNrCvP7-De8lMI09X0R7d6RIbwY,2691
17
+ dv_flow/mgr/cmds/cmd_run.py,sha256=C1bd2yZxVU03hZizGLYoH1JfZgeq_G57Kajc279iZpo,2773
18
18
  dv_flow/mgr/share/flow.json,sha256=lNmZex9NXkYbyb2aZseQfUOkV9CMyfH0iLODEI7EPBw,5096
19
19
  dv_flow/mgr/std/fileset.py,sha256=qY4RMqTHZaFZk68Y3oXtDv2_Ezu1r4wYvaRvr0GTyIY,2352
20
20
  dv_flow/mgr/std/flow.dv,sha256=pSpzrPPEu_L8DHccGfArxsKYgUfyQidShZc0ShgGtsY,500
21
21
  dv_flow/mgr/std/message.py,sha256=BPTHnEMD4tBufQ9LvsS9Sa_0xjaJATbBpwqosWslvVA,193
22
22
  dv_flow/mgr/std/task_fileset.py,sha256=UzTYONvK0X9rgy3rP9LiX4giBU8SyCCJav0LSNUJ1Qg,3140
23
23
  dv_flow/mgr/std/task_null.py,sha256=UEJ3fIoIMYWVsagiQC7GHD23UES7WoH4wtq94b4tcs4,265
24
- dv_flow_mgr-0.0.1.12932354274a1.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
25
- dv_flow_mgr-0.0.1.12932354274a1.dist-info/METADATA,sha256=xH_NHN7r8gQWETTOMtWk_qz8bx--4rQMhQgAMPpgcmU,13276
26
- dv_flow_mgr-0.0.1.12932354274a1.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
27
- dv_flow_mgr-0.0.1.12932354274a1.dist-info/entry_points.txt,sha256=1roy8wAFM48LabOvr6jiOw0MUs-qE8X3Vf8YykPazxk,50
28
- dv_flow_mgr-0.0.1.12932354274a1.dist-info/top_level.txt,sha256=amfVTkggzYPtWwLqNmRukfz1Buu0pGS2SrYBBLhXm04,8
29
- dv_flow_mgr-0.0.1.12932354274a1.dist-info/RECORD,,
24
+ dv_flow_mgr-0.0.1.12941329363a1.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
25
+ dv_flow_mgr-0.0.1.12941329363a1.dist-info/METADATA,sha256=xuwb28g214WYwODgXHPicVVFvDj2Ct4TczlbOeDIuG8,13276
26
+ dv_flow_mgr-0.0.1.12941329363a1.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
27
+ dv_flow_mgr-0.0.1.12941329363a1.dist-info/entry_points.txt,sha256=1roy8wAFM48LabOvr6jiOw0MUs-qE8X3Vf8YykPazxk,50
28
+ dv_flow_mgr-0.0.1.12941329363a1.dist-info/top_level.txt,sha256=amfVTkggzYPtWwLqNmRukfz1Buu0pGS2SrYBBLhXm04,8
29
+ dv_flow_mgr-0.0.1.12941329363a1.dist-info/RECORD,,