dv-flow-mgr 0.0.1.13689116055a1__py3-none-any.whl → 0.0.1.13703952342a1__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.
@@ -135,6 +135,7 @@ class PackageDef(BaseModel):
135
135
  base_params : BaseModel = None
136
136
  callable = None
137
137
  passthrough = task.passthrough
138
+ consumes = task.consumes
138
139
  needs = [] if task.needs is None else task.needs.copy()
139
140
 
140
141
  if task.uses is not None:
@@ -180,6 +181,7 @@ class PackageDef(BaseModel):
180
181
  srcdir=srcdir,
181
182
  paramT=paramT, # TODO: need to determine the parameter type
182
183
  passthrough=passthrough,
184
+ consumes=consumes,
183
185
  needs=needs, # TODO: need to determine the needs
184
186
  task=callable)
185
187
  elif base_ctor_t is not None:
@@ -189,6 +191,7 @@ class PackageDef(BaseModel):
189
191
  srcdir=srcdir,
190
192
  paramT=paramT, # TODO: need to determine the parameter type
191
193
  passthrough=passthrough,
194
+ consumes=consumes,
192
195
  needs=needs,
193
196
  uses=base_ctor_t)
194
197
  else:
@@ -198,6 +201,7 @@ class PackageDef(BaseModel):
198
201
  srcdir=srcdir,
199
202
  paramT=paramT,
200
203
  passthrough=passthrough,
204
+ consumes=consumes,
201
205
  needs=needs,
202
206
  task=TaskNull)
203
207
 
dv_flow/mgr/task_def.py CHANGED
@@ -42,6 +42,8 @@ class TaskDef(BaseModel):
42
42
  needs : List[Union[str,TaskSpec]] = dc.Field(default_factory=list, alias="needs")
43
43
  params: Dict[str,Union[str,ParamDef]] = dc.Field(default_factory=dict, alias="with")
44
44
  passthrough: bool = dc.Field(default=False)
45
+ consumes : List[Any] = dc.Field(default_factory=list)
46
+
45
47
  # out: List[TaskOutput] = dc.Field(default_factory=list)
46
48
 
47
49
  def copy(self) -> 'TaskDef':
dv_flow/mgr/task_node.py CHANGED
@@ -24,6 +24,7 @@ class TaskNode(object):
24
24
  # Runtime fields -- these get populated during execution
25
25
  changed : bool = False
26
26
  passthrough : bool = False
27
+ consumes : List[Any] = dc.field(default_factory=list)
27
28
  needs : List['TaskNode'] = dc.field(default_factory=list)
28
29
  rundir : str = dc.field(default=None)
29
30
  output : TaskDataOutput = dc.field(default=None)
@@ -119,8 +120,31 @@ class TaskNode(object):
119
120
  # Add an entry for ourselves
120
121
  dep_m[self.name] = list(need.name for need in self.needs)
121
122
 
122
- for need in self.needs:
123
- output.extend(need.output.output)
123
+ if self.consumes is None and len(self.consumes):
124
+ self._log.debug("Propagating all input parameters to output")
125
+ for need in self.needs:
126
+ output.extend(need.output.output)
127
+ else:
128
+ # Filter out parameter sets that were consumed
129
+ self._log.debug("Propagating non-consumed input parameters to output")
130
+ for need in self.needs:
131
+ for out in need.output.output:
132
+ consumed = False
133
+ for c in self.consumes:
134
+ match = False
135
+ for k,v in c.items():
136
+ if hasattr(out, k) and getattr(out, k) == v:
137
+ match = True
138
+ break
139
+ if match:
140
+ consumed = True
141
+ break
142
+
143
+ if not consumed:
144
+ self._log.debug("Propagating type %s from %s" % (
145
+ getattr(out, "type", "<unknown>"),
146
+ getattr(out, "src", "<unknown>")))
147
+ output.append(out)
124
148
  else:
125
149
  # empty dependency map
126
150
  dep_m = {
@@ -156,6 +180,7 @@ class TaskNodeCtor(object):
156
180
  srcdir : str
157
181
  paramT : Any
158
182
  passthrough : bool
183
+ consumes : List[Any]
159
184
 
160
185
  def __call__(self,
161
186
  name=None,
@@ -163,6 +188,7 @@ class TaskNodeCtor(object):
163
188
  params=None,
164
189
  needs=None,
165
190
  passthrough=None,
191
+ consumes=None,
166
192
  **kwargs):
167
193
  """Convenience method for direct creation of tasks"""
168
194
  if params is None:
@@ -177,6 +203,16 @@ class TaskNodeCtor(object):
177
203
  node.passthrough = passthrough
178
204
  else:
179
205
  node.passthrough = self.passthrough
206
+ if consumes is not None:
207
+ if node.consumes is None:
208
+ node.consumes = consumes
209
+ else:
210
+ node.consumes.extend(consumes)
211
+ else:
212
+ if node.consumes is None:
213
+ node.consumes = self.consumes
214
+ else:
215
+ node.consumes.extend(consumes)
180
216
 
181
217
  return node
182
218
 
@@ -240,6 +276,7 @@ class TaskNodeCtorProxy(TaskNodeCtorDefBase):
240
276
  srcdir = self.srcdir
241
277
  node = self.uses.mkTaskNode(params=params, srcdir=srcdir, name=name, needs=needs)
242
278
  node.passthrough = self.passthrough
279
+ node.consumes = self.consumes
243
280
  return node
244
281
 
245
282
  @dc.dataclass
@@ -252,6 +289,7 @@ class TaskNodeCtorTask(TaskNodeCtorDefBase):
252
289
 
253
290
  node = TaskNode(name, srcdir, params, self.task, needs=needs)
254
291
  node.passthrough = self.passthrough
292
+ node.consumes = self.consumes
255
293
  node.task = self.task
256
294
 
257
295
  return node
@@ -265,6 +303,7 @@ class TaskNodeCtorWrapper(TaskNodeCtor):
265
303
  def mkTaskNode(self, params, srcdir=None, name=None, needs=None) -> TaskNode:
266
304
  node = TaskNode(name, srcdir, params, self.T, needs=needs)
267
305
  node.passthrough = self.passthrough
306
+ node.consumes = self.consumes
268
307
  return node
269
308
 
270
309
  def mkTaskParams(self, params : Dict = None) -> Any:
@@ -294,7 +333,7 @@ class TaskNodeCtorWrapper(TaskNodeCtor):
294
333
  setattr(obj, key, value)
295
334
  return obj
296
335
 
297
- def task(paramT,passthrough=False):
336
+ def task(paramT,passthrough=False,consumes=None):
298
337
  """Decorator to wrap a task method as a TaskNodeCtor"""
299
338
  def wrapper(T):
300
339
  task_mname = T.__module__
@@ -304,6 +343,7 @@ def task(paramT,passthrough=False):
304
343
  srcdir=os.path.dirname(os.path.abspath(task_module.__file__)),
305
344
  paramT=paramT,
306
345
  passthrough=passthrough,
346
+ consumes=consumes,
307
347
  T=T)
308
348
  return ctor
309
349
  return wrapper
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: dv-flow-mgr
3
- Version: 0.0.1.13689116055a1
3
+ Version: 0.0.1.13703952342a1
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
@@ -206,7 +206,9 @@ License: Apache License
206
206
  limitations under the License.
207
207
 
208
208
  License-File: LICENSE
209
+ Requires-Dist: jq
209
210
  Requires-Dist: pydantic
210
211
  Requires-Dist: pyyaml
212
+ Requires-Dist: rich
211
213
  Requires-Dist: toposort
212
214
  Requires-Dist: svdep
@@ -7,7 +7,7 @@ dv_flow/mgr/fileset.py,sha256=ewyjKLzuOecZg0vtabN_UkbzNEnk1sXgrH8uDyeKB60,1184
7
7
  dv_flow/mgr/fragment_def.py,sha256=cyzp1XeWtNOaagScmeS-BPsoXj9j2LTBbKq5ZUioz8I,1641
8
8
  dv_flow/mgr/out,sha256=d8GGBi3J43fhdLBlnsUbzBfRe0TD0QTP3nOTz54l2bI,200
9
9
  dv_flow/mgr/package.py,sha256=878twhPD-E1pFlDNUtuyeFEgJ_Y89b560og4St-Iwrs,1679
10
- dv_flow/mgr/package_def.py,sha256=EaDPLljg6iewOuZwUgAF4lTkLH9fYAgigD2klXaKBRE,14779
10
+ dv_flow/mgr/package_def.py,sha256=q8lT8MlDF7nDYTBqtPVQSXdGeN06kceZ3qBH7WhP0Bs,14917
11
11
  dv_flow/mgr/package_import_spec.py,sha256=ah3r15v5Jdub2poc3sgi6Uar1L3oGoYsCPPNiOHV-a4,1760
12
12
  dv_flow/mgr/param.py,sha256=3BY-ucig6JRw73FhjyJQL-vpd57qhAzixgZ8I5FoUpw,553
13
13
  dv_flow/mgr/param_def.py,sha256=gLua-EQiY8V2CFX-2svLRIlrs8PEeGh4-EPtn4a2Mng,712
@@ -17,7 +17,7 @@ dv_flow/mgr/pkg_rgy.py,sha256=2R_EaeBDJn5qUq9DzSnLc37wUP36MWSv-p0LgUjJRAg,4471
17
17
  dv_flow/mgr/task.py,sha256=kLQSvnVwj9ROIDtxq8lLu-4mJizTxOqvUeogmgN6QAA,5976
18
18
  dv_flow/mgr/task_ctor.py,sha256=hlfl-UVvyjzLFN6D0Oel9eBs0xUQPqCX7gQ0uEHoL7o,1382
19
19
  dv_flow/mgr/task_data.py,sha256=F0X-e0IHTh06Z0F67TWIUPKuJYf6JPzZyMPrDzOJvK0,11409
20
- dv_flow/mgr/task_def.py,sha256=T06dvQegPJunH8ekuN5aPxIVcaUWiv5qkfqbZnCacLk,1923
20
+ dv_flow/mgr/task_def.py,sha256=t5_oDTngtEPRdipQnuJ2ofJrpva1kTecHl4w4mI4GXE,1982
21
21
  dv_flow/mgr/task_exec_data.py,sha256=aT__kmVmNxqnS_GbTRS1vrYgKiv8cH-HUSmRb6YYKsI,640
22
22
  dv_flow/mgr/task_graph_builder.py,sha256=fEqJalmDDDzayJbuyDWAcmumDGK3XgnZmcScoBY8HGg,7887
23
23
  dv_flow/mgr/task_graph_runner.py,sha256=jUGI49QvxUCfQoKQDDk2psbeapIcCg72qNOW1JipHzM,2182
@@ -25,7 +25,7 @@ dv_flow/mgr/task_graph_runner_local.py,sha256=OrydPwtQ8E7hYWvSXx0h7lI3nfUNFyklUL
25
25
  dv_flow/mgr/task_impl_data.py,sha256=bFPijoKrh9x7fZN2DsvRJp0UHo-gGM0VjtDQISyfhFk,321
26
26
  dv_flow/mgr/task_listener_log.py,sha256=u7hm8Q8ZVCIY25mNQEI3DIgSMJ_zJ5nbvqukGMXyido,934
27
27
  dv_flow/mgr/task_memento.py,sha256=C7VTQpBhDEoYuDmE6YTM-6TLMLnqHp6Y0Vat1aTgtCs,1096
28
- dv_flow/mgr/task_node.py,sha256=5R51VLuHDFnY3c5E8kLccxFRoshJRB1bDKJXIJr9EKc,10394
28
+ dv_flow/mgr/task_node.py,sha256=leuQC3IPyZQsJKQwKBTQgvstXxH7Fk10eDINoaK7718,12212
29
29
  dv_flow/mgr/task_output.py,sha256=dkJhhNRFGFQSkVsw_bGirK0_0ghTxBYq1LjRMZCVWnA,245
30
30
  dv_flow/mgr/task_params_ctor.py,sha256=aXgB8o9xFPjaEjGW_xYkEC0N0apzGzGUPDj7g2ZLvus,1112
31
31
  dv_flow/mgr/task_runner.py,sha256=Ky10BWKy_NhvJp2nsbB0pyS8n1K0pKatBEmTdD1ZKOc,7071
@@ -39,9 +39,9 @@ dv_flow/mgr/std/fileset.py,sha256=abHgTxz25FD1ep5QXlCZKt4gCyfplJsjx6LyfQ11f_Q,26
39
39
  dv_flow/mgr/std/flow.dv,sha256=jlFOh3xVECOzHws7x6YvJ9eCIGHM5gsPeEnheiGOukY,1553
40
40
  dv_flow/mgr/std/message.py,sha256=T8Ye44784rD6CT2qIAP5SD7sKPdAlGMFimc4IaPCxxE,200
41
41
  dv_flow/mgr/std/task_null.py,sha256=UKwUnqwFPBY8BO44ZAPcgehQB59kHZFa1qyZc1TwUqE,196
42
- dv_flow_mgr-0.0.1.13689116055a1.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
43
- dv_flow_mgr-0.0.1.13689116055a1.dist-info/METADATA,sha256=fuUi6tX_RwxMXl0XsApdKkyUlKyKOgYaouavIevi0w4,13276
44
- dv_flow_mgr-0.0.1.13689116055a1.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
45
- dv_flow_mgr-0.0.1.13689116055a1.dist-info/entry_points.txt,sha256=1roy8wAFM48LabOvr6jiOw0MUs-qE8X3Vf8YykPazxk,50
46
- dv_flow_mgr-0.0.1.13689116055a1.dist-info/top_level.txt,sha256=amfVTkggzYPtWwLqNmRukfz1Buu0pGS2SrYBBLhXm04,8
47
- dv_flow_mgr-0.0.1.13689116055a1.dist-info/RECORD,,
42
+ dv_flow_mgr-0.0.1.13703952342a1.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
43
+ dv_flow_mgr-0.0.1.13703952342a1.dist-info/METADATA,sha256=N1CO707jpDo9FEXJ2Xujl7IGNo4Bt8LRW1NrpJnK47k,13314
44
+ dv_flow_mgr-0.0.1.13703952342a1.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
45
+ dv_flow_mgr-0.0.1.13703952342a1.dist-info/entry_points.txt,sha256=1roy8wAFM48LabOvr6jiOw0MUs-qE8X3Vf8YykPazxk,50
46
+ dv_flow_mgr-0.0.1.13703952342a1.dist-info/top_level.txt,sha256=amfVTkggzYPtWwLqNmRukfz1Buu0pGS2SrYBBLhXm04,8
47
+ dv_flow_mgr-0.0.1.13703952342a1.dist-info/RECORD,,