dv-flow-mgr 1.8.14931268525rc0__py3-none-any.whl → 1.8.14950048134rc0__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.8.0"
35
- SUFFIX="14931268525rc0"
35
+ SUFFIX="14950048134rc0"
36
36
  __version__="%s%s" % (VERSION, SUFFIX)
37
37
 
@@ -22,6 +22,7 @@
22
22
  import asyncio
23
23
  import os
24
24
  import logging
25
+ import sys
25
26
  from typing import ClassVar
26
27
  from ..util import loadProjPkgDef
27
28
  from ..task_data import SeverityE
@@ -48,7 +49,7 @@ class CmdRun(object):
48
49
 
49
50
  if listener.has_severity[SeverityE.Error] > 0:
50
51
  print("Error(s) encountered while loading package definition")
51
- return 1
52
+ sys.exit(1)
52
53
 
53
54
  if pkg is None:
54
55
  raise Exception("Failed to find a 'flow.dv' file that defines a package in %s or its parent directories" % os.getcwd())
@@ -448,25 +448,27 @@ class PackageLoader(object):
448
448
  imp_path = os.path.join(base, leaf)
449
449
  self._log.debug("Found: %s" % imp_path)
450
450
  elif os.path.isdir(os.path.join(base, leaf)):
451
- path = os.path.join(base, leaf)
452
-
453
- while path is not None and os.path.isdir(path) and not os.path.isfile(os.path.join(path, "flow.dv")):
454
- # Look one directory down
455
- next_dir = None
456
- for dir in os.listdir(path):
457
- if os.path.isdir(os.path.join(path, dir)):
458
- if next_dir is None:
459
- next_dir = dir
460
- else:
461
- path = None
462
- break
463
- if path is not None:
464
- path = next_dir
465
- if path is not None and os.path.isfile(os.path.join(path, "flow.dv")):
466
- imp_path = os.path.join(path, "flow.dv")
467
- self._log.debug("Found: %s" % imp_path)
451
+ if os.path.isfile(os.path.join(base, leaf, "flow.dv")):
452
+ imp_path = os.path.join(base, leaf, "flow.dv")
453
+ self._log.debug("Found: %s" % imp_path)
454
+ else:
455
+ imp_path = self._findFlowDvSubdir(os.path.join(base, leaf))
468
456
  self._log.debug("<-- _findFlowDvInDir %s" % imp_path)
469
457
  return imp_path
458
+
459
+ def _findFlowDvSubdir(self, dir):
460
+ ret = None
461
+ # Search deeper
462
+ ret = None
463
+ for subdir in os.listdir(dir):
464
+ if os.path.isfile(os.path.join(dir, subdir, "flow.dv")):
465
+ ret = os.path.join(dir, subdir, "flow.dv")
466
+ self._log.debug("Found: %s" % ret)
467
+ elif os.path.isdir(os.path.join(dir, subdir)):
468
+ ret = self._findFlowDvSubdir(os.path.join(dir, subdir))
469
+ if ret is not None:
470
+ break
471
+ return ret
470
472
 
471
473
  def _loadFragments(self, pkg, fragments, basedir, taskdefs, typedefs):
472
474
  for spec in fragments:
@@ -548,6 +550,10 @@ class PackageLoader(object):
548
550
  def getTask(self, name) -> Task:
549
551
  task = self._findTask(name)
550
552
  return task
553
+
554
+ def getType(self, name) -> Type:
555
+ type = self._findType(name)
556
+ return type
551
557
 
552
558
  def _loadTasks(self, pkg, taskdefs : List[TaskDef], basedir : str):
553
559
  self._log.debug("--> _loadTasks %s" % pkg.name)
@@ -747,10 +753,12 @@ class PackageLoader(object):
747
753
  return self._loader_scope.findType(name)
748
754
 
749
755
  def _findTask(self, name):
756
+ ret = None
750
757
  if len(self._pkg_s):
751
- return self._pkg_s[-1].findTask(name)
758
+ ret = self._pkg_s[-1].findTask(name)
752
759
  else:
753
- return self._loader_scope.findTask(name)
760
+ ret = self._loader_scope.findTask(name)
761
+ return ret
754
762
 
755
763
  def _findTaskOrType(self, name):
756
764
  self._log.debug("--> _findTaskOrType %s" % name)
dv_flow/mgr/std/flow.dv CHANGED
@@ -120,22 +120,12 @@ package:
120
120
  Optional timestamp file to determine if running
121
121
  the command changed the output
122
122
 
123
- - name: DataItem
124
- shell: pytask
125
- run: dv_flow.mgr.std.data_item.DataItem
126
- doc: |
127
- Creates and outputs a data item
128
- with:
129
- type:
130
- type: str
131
- value: ""
132
- with:
133
- type: map
134
123
  types:
135
124
  - name: DataItem
136
125
  with:
137
126
  type:
138
127
  type: str
128
+
139
129
  - name: FileSet
140
130
  uses: std.DataItem
141
131
  with:
@@ -306,41 +306,76 @@ class TaskGraphBuilder(object):
306
306
 
307
307
  def mkTaskNode(self, task_t, name=None, srcdir=None, needs=None, **kwargs):
308
308
  self._log.debug("--> mkTaskNode: %s" % task_t)
309
+ ret = None
309
310
 
311
+ task = None
310
312
  if task_t in self._task_m.keys():
311
313
  task = self._task_m[task_t]
312
- # Get the package for this task
313
- self.push_name_resolution_context(task.package)
314
314
  elif self.loader is not None:
315
315
  task = self.loader.getTask(task_t)
316
+
316
317
  if task is None:
317
- raise Exception("task_t (%s) not present" % str(task_t))
318
- self.push_name_resolution_context(task.package)
319
- else:
320
- raise Exception("task_t (%s) not present" % str(task_t))
318
+ if task_t in self._type_m.keys():
319
+ type = self._type_m[task_t]
320
+
321
+ if type is None:
322
+ type = self.loader.getType(task_t)
323
+
324
+ if type is not None:
325
+ if srcdir is None:
326
+ srcdir = os.path.dirname(type.srcinfo.file)
327
+ ret = TaskNodeLeaf(
328
+ name=name,
329
+ srcdir=srcdir,
330
+ params=type.paramT(),
331
+ ctxt=self._ctxt,
332
+ task=DataCallable(type.paramT))
333
+ self._task_node_m[name] = ret
334
+ else:
335
+ raise Exception("task_t (%s) is neither a task nor type" % str(task_t))
321
336
 
322
- try:
323
- ret = self._mkTaskNode(
324
- task,
325
- name=name,
337
+ elif task_t in self._type_m.keys():
338
+ # Create a task around the type
339
+ type = self._type_m[task_t]
340
+ if srcdir is None:
341
+ srcdir = os.path.dirname(type.srcinfo.file)
342
+ ret = TaskNodeLeaf(
343
+ name=name,
326
344
  srcdir=srcdir,
327
- eval=self._eval)
345
+ params=type.paramT(),
346
+ ctxt=self._ctxt,
347
+ task=DataCallable(type.paramT)
348
+ )
349
+ self._task_node_m[name] = ret
328
350
 
329
- if needs is not None:
330
- for need in needs:
331
- ret.needs.append((need, False))
351
+ if ret is None:
352
+ if task is None:
353
+ raise Exception("task_t (%s) not present" % str(task_t))
332
354
 
333
- for k,v in kwargs.items():
334
- if hasattr(ret.params, k):
335
- setattr(ret.params, k, v)
336
- else:
337
- raise Exception("Task %s parameters do not include %s" % (task.name, k))
355
+ self.push_name_resolution_context(task.package)
338
356
 
339
- self._log.debug("<-- mkTaskNode: %s (%d needs)" % (task_t, len(ret.needs)))
340
- return ret
341
- finally:
342
- # Clean up package context if we created one
343
- self.pop_name_resolution_context()
357
+ try:
358
+ ret = self._mkTaskNode(
359
+ task,
360
+ name=name,
361
+ srcdir=srcdir,
362
+ eval=self._eval)
363
+
364
+ if needs is not None:
365
+ for need in needs:
366
+ ret.needs.append((need, False))
367
+
368
+ for k,v in kwargs.items():
369
+ if hasattr(ret.params, k):
370
+ setattr(ret.params, k, v)
371
+ else:
372
+ raise Exception("Task %s parameters do not include %s" % (task.name, k))
373
+ finally:
374
+ # Clean up package context if we created one
375
+ self.pop_name_resolution_context()
376
+
377
+ self._log.debug("<-- mkTaskNode: %s" % task_t)
378
+ return ret
344
379
 
345
380
  def mkDataItem(self, name, **kwargs):
346
381
  self._log.debug("--> mkDataItem: %s" % name)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dv-flow-mgr
3
- Version: 1.8.14931268525rc0
3
+ Version: 1.8.14950048134rc0
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=oKr6XoYlfmr7HcnXVV6xho2mkUJB4ROiJB-2tfirtYA,1315
1
+ dv_flow/mgr/__init__.py,sha256=RAohHzmrdRRIKaqwH7AMnO2sTmlt1FtW-4kx-j9KvOw,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
@@ -20,7 +20,7 @@ dv_flow/mgr/out,sha256=d8GGBi3J43fhdLBlnsUbzBfRe0TD0QTP3nOTz54l2bI,200
20
20
  dv_flow/mgr/package.py,sha256=L1ba5xguOZWuyg9s4MfafKgSoIka3SgAQzYAmcV7XgQ,4430
21
21
  dv_flow/mgr/package_def.py,sha256=1O1SBJATnw-zeYKRNENgw-RWxZK0hxNQhnncfE_NR-U,5674
22
22
  dv_flow/mgr/package_import_spec.py,sha256=aZMpnS9a5NFY76_pYXEuO3-Mkc_xFzy73fdrUe_54Dc,1760
23
- dv_flow/mgr/package_loader.py,sha256=sAl4tg4-etXffzoE51ruMoRm3wf8eRMuhMtnEjWfTRs,33563
23
+ dv_flow/mgr/package_loader.py,sha256=7kI7UFALnnOhz128iiH_Fid9vfNSYAIzhMeQPuA4DJg,33704
24
24
  dv_flow/mgr/package_node.py,sha256=CccD2ECiIXy9JBkRR3c7qDxeBiLiPbRT9CqR-Al_niI,214
25
25
  dv_flow/mgr/param.py,sha256=kkxMRGf6mPjSZJsjgLKH2vJL62Sn0ZESvjBLkEYOp20,1386
26
26
  dv_flow/mgr/param_def.py,sha256=9uO-7UI4OotYixQBo8Nwb2o8FQRFxxJylYCZm9rjt48,1917
@@ -34,7 +34,7 @@ dv_flow/mgr/srcinfo.py,sha256=xrfp-relVr7hYNbxOjY5jqX4H0nNMm9HK5AAM6_Piyk,366
34
34
  dv_flow/mgr/task.py,sha256=n3v9A9HvgMWNeQhXVB_L2qRjgjounXMs9-bbxtyEau8,2088
35
35
  dv_flow/mgr/task_data.py,sha256=lN7Iq8YTitEMGG4rZqYQi6Ri2HuPgBQ5oGQbW-63T8c,12436
36
36
  dv_flow/mgr/task_def.py,sha256=8NPwtTROfWDkMqcO9mKXV4dw0sC4mCMmnsNuv8uTdTY,5094
37
- dv_flow/mgr/task_graph_builder.py,sha256=q7BS7OLYkS6uZwQLvo6P_CtJkhIvPal_tXLZHgUuLpU,28172
37
+ dv_flow/mgr/task_graph_builder.py,sha256=2u5iOa4vMZaAxbImVknMLQLV6TEVbxXzEfsE7d3YXKI,29380
38
38
  dv_flow/mgr/task_graph_dot_writer.py,sha256=qK4Imy9o2_F1aKoU1tJ-qoBHslq2BhSMbdjAUPfpN7I,6009
39
39
  dv_flow/mgr/task_listener_log.py,sha256=Ai-6X5BOoGsaNTgnlXEW0-czrjJm7__ShNK501CUmko,4337
40
40
  dv_flow/mgr/task_listener_trace.py,sha256=7B-V2YK8uXd_QSGBq_7USmbe5CleVvwumU0CpsmxZvg,6224
@@ -57,14 +57,14 @@ dv_flow/mgr/type.py,sha256=hoJTatlPC0yOazKSWduK-5CfY38RPkc6qXFzOCcVSdM,723
57
57
  dv_flow/mgr/type_def.py,sha256=4sge3PibO1jDnS0cXdX0PiurcKbDA3kT6rb4DGIKwEM,1176
58
58
  dv_flow/mgr/yaml_srcinfo_loader.py,sha256=29BNRiB8Hj1FepkrLtdjHSv5U_85Q432gBeeK80nKEA,1606
59
59
  dv_flow/mgr/cmds/cmd_graph.py,sha256=yg5KbNrGvm3dySiI0Qei_pMWZkOE9GtEyaQ4IdNVmoE,2852
60
- dv_flow/mgr/cmds/cmd_run.py,sha256=SsCZXwutJW1XT5iXtJqvdeg6p6HEa86V5hELNKuaWgA,4082
60
+ dv_flow/mgr/cmds/cmd_run.py,sha256=-0jfBihKTNLsHbILvul-quicUYFJ0yMcr5iZK4HFWrI,4096
61
61
  dv_flow/mgr/cmds/cmd_show.py,sha256=JOIFaVXt8YCf9bKXfq6qzV5wQdxdLHqE-yCj0ecGREs,3755
62
62
  dv_flow/mgr/share/flow.json,sha256=lNmZex9NXkYbyb2aZseQfUOkV9CMyfH0iLODEI7EPBw,5096
63
63
  dv_flow/mgr/std/create_file.py,sha256=SEpKTQdiY32002C7b4kYfAiK9v_xajixOJU5WftW75I,2957
64
64
  dv_flow/mgr/std/data_item.py,sha256=olKtspEVFOvr92reUl4QaQV27UVyjSGIfIWpsy0Myvo,434
65
65
  dv_flow/mgr/std/exec.py,sha256=UChqa_tAjvdB1NjqTsvlPgFomP8hMsX2rAOPyUonNpk,3896
66
66
  dv_flow/mgr/std/fileset.py,sha256=_9IUjZ2_doygc29Qg1hJPaFPzlaIaTdvHnYTai8mE3A,4183
67
- dv_flow/mgr/std/flow.dv,sha256=vizP3u3yU5iyCmsAeVFeIKy2Ikvhol-_NjCYWOcJCOE,4003
67
+ dv_flow/mgr/std/flow.dv,sha256=qT3qlDjo6DMMcPXHLbW6Z0OJOouXupQK3cm_15JxSKI,3786
68
68
  dv_flow/mgr/std/incdirs.py,sha256=F0wraOxkRJRkrhsyk9v2YvpquFtcK4ZsMO1G9sgmhmA,588
69
69
  dv_flow/mgr/std/message.py,sha256=0JHLErg8whqMLAasG1fumZ2O7R7WNWeNQ9ibJaLDpVY,1029
70
70
  dv_flow/mgr/std/task_null.py,sha256=dw6LXBXVwth6gLPeduDvlz5znAhcVpDH8r1DticD-0w,1041
@@ -74,9 +74,9 @@ dv_flow/mgr/util/util.py,sha256=BO7iqP_c9ttmXkojq7nKDN-g8wl1_Pco9k-KnrXxjwE,1889
74
74
  dv_flow/mgr/util/cmds/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
75
75
  dv_flow/mgr/util/cmds/cmd_schema.py,sha256=IJzZdxCSEgIQ79LpYiM7UqJ9RJ-7yraqmBN2XVgAgXA,1752
76
76
  dv_flow/mgr/util/cmds/cmd_workspace.py,sha256=egmaIXpe5L-TePwmcfisfrG6tdiTUWSjqa9Za5WChVs,890
77
- dv_flow_mgr-1.8.14931268525rc0.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
78
- dv_flow_mgr-1.8.14931268525rc0.dist-info/METADATA,sha256=xtNJAHBujbtKSu7qN8OAoN_tAMUOtvUFzmd9eFKAwRU,13335
79
- dv_flow_mgr-1.8.14931268525rc0.dist-info/WHEEL,sha256=0CuiUZ_p9E4cD6NyLD6UG80LBXYyiSYZOKDm5lp32xk,91
80
- dv_flow_mgr-1.8.14931268525rc0.dist-info/entry_points.txt,sha256=1roy8wAFM48LabOvr6jiOw0MUs-qE8X3Vf8YykPazxk,50
81
- dv_flow_mgr-1.8.14931268525rc0.dist-info/top_level.txt,sha256=amfVTkggzYPtWwLqNmRukfz1Buu0pGS2SrYBBLhXm04,8
82
- dv_flow_mgr-1.8.14931268525rc0.dist-info/RECORD,,
77
+ dv_flow_mgr-1.8.14950048134rc0.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
78
+ dv_flow_mgr-1.8.14950048134rc0.dist-info/METADATA,sha256=zkhMnyZn6nXcEc_vPWK_jlt-k8gQzG4g3BaDYm6Oca8,13335
79
+ dv_flow_mgr-1.8.14950048134rc0.dist-info/WHEEL,sha256=DnLRTWE75wApRYVsjgc6wsVswC54sMSJhAEd4xhDpBk,91
80
+ dv_flow_mgr-1.8.14950048134rc0.dist-info/entry_points.txt,sha256=1roy8wAFM48LabOvr6jiOw0MUs-qE8X3Vf8YykPazxk,50
81
+ dv_flow_mgr-1.8.14950048134rc0.dist-info/top_level.txt,sha256=amfVTkggzYPtWwLqNmRukfz1Buu0pGS2SrYBBLhXm04,8
82
+ dv_flow_mgr-1.8.14950048134rc0.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (80.3.1)
2
+ Generator: setuptools (80.4.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5