dv-flow-mgr 0.0.1.13798275241a1__py3-none-any.whl → 0.0.1.13824498694a1__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.
@@ -347,8 +347,27 @@ class PackageDef(BaseModel):
347
347
  if not os.path.isabs(imp_path):
348
348
  cls._log.debug("basedir: %s ; imp_path: %s" % (pkg.basedir, imp_path))
349
349
  imp_path = os.path.join(pkg.basedir, imp_path)
350
- if os.path.isdir(imp_path) and os.path.isfile(os.path.join(imp_path, "flow.dv")):
351
- imp_path = os.path.join(imp_path, "flow.dv")
350
+
351
+ # Search down the tree looking for a flow.dv file
352
+ if os.path.isdir(imp_path):
353
+ path = imp_path
354
+
355
+ while path is not None and os.path.isdir(path) and not os.path.isfile(os.path.join(path, "flow.dv")):
356
+ # Look one directory down
357
+ next_dir = None
358
+ for dir in os.listdir(path):
359
+ if os.path.isdir(os.path.join(path, dir)):
360
+ if next_dir is None:
361
+ next_dir = dir
362
+ else:
363
+ path = None
364
+ break
365
+ if path is not None:
366
+ path = next_dir
367
+
368
+ if path is not None and os.path.isfile(os.path.join(path, "flow.dv")):
369
+ imp_path = os.path.join(path, "flow.dv")
370
+
352
371
  if not os.path.isfile(imp_path):
353
372
  raise Exception("Import file %s not found" % imp_path)
354
373
 
dv_flow/mgr/task_data.py CHANGED
@@ -48,6 +48,7 @@ class TaskDataInput(BaseModel):
48
48
  srcdir : str
49
49
  rundir : str
50
50
  params : Any
51
+ inputs : List[Any]
51
52
  memento : Any
52
53
 
53
54
  class TaskDataResult(BaseModel):
dv_flow/mgr/task_node.py CHANGED
@@ -86,6 +86,13 @@ class TaskNode(object):
86
86
  self._log.debug("in_params[2]: %s" % ",".join(p.src for p in in_params))
87
87
  eval.setVar("in", in_params)
88
88
 
89
+ # Default inputs is the list of parameter sets that match 'consumes'
90
+ inputs = []
91
+ if self.consumes is not None and len(self.consumes):
92
+ for in_p in in_params:
93
+ if self._matches(in_p, self.consumes):
94
+ inputs.append(in_p)
95
+
89
96
  for name,field in self.params.model_fields.items():
90
97
  value = getattr(self.params, name)
91
98
  if type(value) == str:
@@ -107,6 +114,7 @@ class TaskNode(object):
107
114
  srcdir=self.srcdir,
108
115
  rundir=rundir,
109
116
  params=self.params,
117
+ inputs=inputs,
110
118
  memento=memento)
111
119
 
112
120
  self._log.debug("--> Call task method %s" % str(self.task))
@@ -134,26 +142,28 @@ class TaskNode(object):
134
142
  self._log.debug("consumes: %s" % str(self.consumes))
135
143
  for need in self.needs:
136
144
  for out in need.output.output:
137
- consumed = False
138
- for c in self.consumes:
139
- match = False
140
- for k,v in c.items():
141
- self._log.debug("k,v: %s,%s" % (k,v))
142
- if hasattr(out, k):
143
- self._log.debug("has attribute: %s" % str(getattr(out ,k)))
144
- if getattr(out, k) == v:
145
- self._log.debug("match")
146
- match = True
147
- break
148
- if match:
149
- consumed = True
150
- break
151
-
152
- if not consumed:
145
+ if not self._matches(out, self.consumes):
153
146
  self._log.debug("Propagating type %s from %s" % (
154
147
  getattr(out, "type", "<unknown>"),
155
148
  getattr(out, "src", "<unknown>")))
156
149
  output.append(out)
150
+
151
+ # consumed = False
152
+ # for c in self.consumes:
153
+ # match = False
154
+ # for k,v in c.items():
155
+ # self._log.debug("k,v: %s,%s" % (k,v))
156
+ # if hasattr(out, k):
157
+ # self._log.debug("has attribute: %s" % str(getattr(out ,k)))
158
+ # if getattr(out, k) == v:
159
+ # self._log.debug("match")
160
+ # match = True
161
+ # break
162
+ # if match:
163
+ # consumed = True
164
+ # break
165
+
166
+ # if not consumed:
157
167
  else:
158
168
  self._log.debug("non-passthrough: %s (only local outputs propagated)" % self.name)
159
169
  # empty dependency map
@@ -342,6 +352,24 @@ class TaskNodeCtorWrapper(TaskNodeCtor):
342
352
  else:
343
353
  setattr(obj, key, value)
344
354
  return obj
355
+
356
+ def _matches(self, params, consumes):
357
+ """Determines if a parameter set matches a set of consumed parameters"""
358
+ consumed = False
359
+ for c in consumes:
360
+ # All matching attribute keys must have same value
361
+ match = False
362
+ for k,v in c.items():
363
+ if hasattr(params, k):
364
+ if getattr(params, k) != v:
365
+ match = True
366
+ else:
367
+ match = False
368
+ break
369
+ if match:
370
+ consumed = True
371
+ break
372
+ return consumed
345
373
 
346
374
  def task(paramT,passthrough=False,consumes=None):
347
375
  """Decorator to wrap a task method as a TaskNodeCtor"""
@@ -195,6 +195,7 @@ class SingleTaskRunner(TaskRunner):
195
195
  srcdir=task.srcdir,
196
196
  rundir=self.rundir,
197
197
  params=task.params,
198
+ inputs=[],
198
199
  memento=memento)
199
200
 
200
201
  # TODO: notify of task start
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: dv-flow-mgr
3
- Version: 0.0.1.13798275241a1
3
+ Version: 0.0.1.13824498694a1
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
@@ -7,7 +7,7 @@ dv_flow/mgr/fileset.py,sha256=_EhtqBVn0prylXJhR3dUV2p7ocGHzNAF_ZtYNgeKJhs,1240
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=xF7xiloNUh1JW1i4e3G7M8WLRD9TFyZ41fown-L-3Pg,16436
10
+ dv_flow/mgr/package_def.py,sha256=EChN0LwvAcrASBSlzQ3LaWqt_SyFaedfPEujG9FNj6Y,17188
11
11
  dv_flow/mgr/package_import_spec.py,sha256=K5bwbO82A7MB5WeR7kmzWk7wQmQbQVMG1BOtpSPKQRU,1755
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
@@ -16,7 +16,7 @@ dv_flow/mgr/parsetab.py,sha256=I-p3nC60t9jiNtPhKyl_sE92SiP96zJLnNdydcLy33g,3780
16
16
  dv_flow/mgr/pkg_rgy.py,sha256=46XMWint3JpP2nx-OYTpzpHZgOkrvTseUU4Y87KusC8,5147
17
17
  dv_flow/mgr/task.py,sha256=kLQSvnVwj9ROIDtxq8lLu-4mJizTxOqvUeogmgN6QAA,5976
18
18
  dv_flow/mgr/task_ctor.py,sha256=hlfl-UVvyjzLFN6D0Oel9eBs0xUQPqCX7gQ0uEHoL7o,1382
19
- dv_flow/mgr/task_data.py,sha256=F0X-e0IHTh06Z0F67TWIUPKuJYf6JPzZyMPrDzOJvK0,11409
19
+ dv_flow/mgr/task_data.py,sha256=m3W7k-xv09ZyhpP2gg33CLOhBLyQDJS2mlG35yOZjZQ,11432
20
20
  dv_flow/mgr/task_def.py,sha256=Wmh78mQLAiHXlpD2KCvFxTWtnjjwgct8fEm8gelCg1c,1987
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=AOltPyzd2Q9B67m0MyL59RPu3i2d5QrX3K-0gKWLoY8,9097
@@ -25,10 +25,10 @@ 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=d4GQcT3n_0Dq-XWQP-WNJIhuxvw948RbFPSiJ6X1_eI,2683
27
27
  dv_flow/mgr/task_memento.py,sha256=C7VTQpBhDEoYuDmE6YTM-6TLMLnqHp6Y0Vat1aTgtCs,1096
28
- dv_flow/mgr/task_node.py,sha256=uuJGDgSySUyt2hz-I78w47fqpq4cIYtzrVj4RdKr_Cg,12765
28
+ dv_flow/mgr/task_node.py,sha256=oj9vZ9XxuqavBXY8uXKY_jE6y8jPoIhN1qC9b188SbY,13799
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
- dv_flow/mgr/task_runner.py,sha256=SHbhGfuOUmlbk-nZDDuk9FX7syWWcgmCuOZ2LwG5UFM,7799
31
+ dv_flow/mgr/task_runner.py,sha256=Z081AjdUQ6kK8bPgKU8m8rFRHbX8ce4lOI9kLQ5WF_w,7822
32
32
  dv_flow/mgr/type.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
33
33
  dv_flow/mgr/type_def.py,sha256=KdhuNlfw-NKU-4VZFCnMPyj775yEB7cpr5tz73a9yuQ,259
34
34
  dv_flow/mgr/util.py,sha256=06eVyURF4ga-s8C9Sd3ZSDebwO4QS0XXaB8xADVbWRc,1437
@@ -39,9 +39,9 @@ dv_flow/mgr/std/fileset.py,sha256=nW5Cg4IyCs-ccKKsIxA5W5aZvaluFk6LXDyFh9Jixcs,30
39
39
  dv_flow/mgr/std/flow.dv,sha256=DpDTrRBfbIt4cJKLHqk_l6_nPkeFDKLVa5Ic4FZodNM,1587
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.13798275241a1.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
43
- dv_flow_mgr-0.0.1.13798275241a1.dist-info/METADATA,sha256=8un_cpT3ntvbCh5NDOTztetyPS_vLYXzYwGij55ms2I,13314
44
- dv_flow_mgr-0.0.1.13798275241a1.dist-info/WHEEL,sha256=52BFRY2Up02UkjOa29eZOS2VxUrpPORXg1pkohGGUS8,91
45
- dv_flow_mgr-0.0.1.13798275241a1.dist-info/entry_points.txt,sha256=1roy8wAFM48LabOvr6jiOw0MUs-qE8X3Vf8YykPazxk,50
46
- dv_flow_mgr-0.0.1.13798275241a1.dist-info/top_level.txt,sha256=amfVTkggzYPtWwLqNmRukfz1Buu0pGS2SrYBBLhXm04,8
47
- dv_flow_mgr-0.0.1.13798275241a1.dist-info/RECORD,,
42
+ dv_flow_mgr-0.0.1.13824498694a1.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
43
+ dv_flow_mgr-0.0.1.13824498694a1.dist-info/METADATA,sha256=Q8cuFrb6MAt6RBEYlMrMk1VyTmJvFifOB4YaDmhxwEQ,13314
44
+ dv_flow_mgr-0.0.1.13824498694a1.dist-info/WHEEL,sha256=52BFRY2Up02UkjOa29eZOS2VxUrpPORXg1pkohGGUS8,91
45
+ dv_flow_mgr-0.0.1.13824498694a1.dist-info/entry_points.txt,sha256=1roy8wAFM48LabOvr6jiOw0MUs-qE8X3Vf8YykPazxk,50
46
+ dv_flow_mgr-0.0.1.13824498694a1.dist-info/top_level.txt,sha256=amfVTkggzYPtWwLqNmRukfz1Buu0pGS2SrYBBLhXm04,8
47
+ dv_flow_mgr-0.0.1.13824498694a1.dist-info/RECORD,,