dv-flow-mgr 1.0.0.14504336776a1__py3-none-any.whl → 1.0.0.14693328771a1__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/package.py CHANGED
@@ -68,4 +68,59 @@ class Package(object):
68
68
 
69
69
  def __hash__(self):
70
70
  return id(self)
71
+
72
+ def to_json(self, markers=None) -> dict:
73
+ """Convert package data to a JSON-compatible dictionary format.
74
+
75
+ Args:
76
+ markers: Optional list of marker objects, each with 'msg' and 'severity' attributes
77
+
78
+ Returns:
79
+ dict: Dictionary containing required package data and markers
80
+ """
81
+ # Collect all imported packages recursively
82
+ imports = set()
83
+ def collect_imports(pkg):
84
+ for name, p in pkg.pkg_m.items():
85
+ if name not in imports:
86
+ imports.add(name)
87
+ collect_imports(p)
88
+ collect_imports(self)
89
+
90
+ # Get files from fragments
91
+ files = []
92
+ for frag in self.fragment_def_l:
93
+ if frag.srcinfo and frag.srcinfo.file:
94
+ files.append(frag.srcinfo.file)
71
95
 
96
+ def format_srcinfo(srcinfo):
97
+ if srcinfo:
98
+ ret = srcinfo.file
99
+ if srcinfo.lineno != -1:
100
+ ret += ":" + str(srcinfo.lineno)
101
+ if srcinfo.linepos != -1:
102
+ ret += ":" + str(srcinfo.linepos)
103
+ return ret
104
+ return None
105
+ result = {
106
+ "name": self.name,
107
+ "file": self.srcinfo.file if self.srcinfo else None,
108
+ "imports": sorted(list(imports)),
109
+ "files": files,
110
+ "markers": [],
111
+ "tasks": [
112
+ {
113
+ "name": name,
114
+ "srcinfo": format_srcinfo(task.srcinfo)
115
+ }
116
+ for name, task in self.task_m.items()
117
+ ]
118
+ }
119
+
120
+ if markers:
121
+ result["markers"] = [
122
+ {"msg": marker.msg, "severity": marker.severity}
123
+ for marker in markers
124
+ ]
125
+
126
+ return result
@@ -231,15 +231,21 @@ class PackageLoader(object):
231
231
  # t.fullname = pkg.name + "." + t.name
232
232
 
233
233
  except pydantic.ValidationError as e:
234
- print("Errors: %s" % root)
234
+ # print("Errors: %s" % root)
235
235
  error_paths = []
236
236
  loc = None
237
+ loc_s = ""
237
238
  for ee in e.errors():
238
239
  # print(" Error: %s" % str(ee))
239
240
  obj = doc["package"]
240
241
  loc = None
242
+ print("Errors: %s" % str(ee))
241
243
  for el in ee['loc']:
242
- print("el: %s" % str(el))
244
+ # print("el: %s" % str(el))
245
+ if loc_s != "":
246
+ loc_s += "." + str(el)
247
+ else:
248
+ loc_s = str(el)
243
249
  obj = obj[el]
244
250
  if type(obj) == dict and 'srcinfo' in obj.keys():
245
251
  loc = obj['srcinfo']
@@ -255,7 +261,11 @@ class PackageLoader(object):
255
261
  severity=SeverityE.Error,
256
262
  loc=marker_loc)
257
263
  else:
258
- marker = TaskMarker(msg=ee['msg'])
264
+ marker_loc = TaskMarkerLoc(path=root)
265
+ marker = TaskMarker(
266
+ msg=("%s (at '%s')" % (ee['msg'], loc_s)),
267
+ severity=SeverityE.Error,
268
+ loc=marker_loc)
259
269
  self.marker(marker)
260
270
 
261
271
  if pkg_def is not None:
dv_flow/mgr/std/flow.dv CHANGED
@@ -82,6 +82,12 @@ package:
82
82
  type: str
83
83
  content:
84
84
  type: str
85
+ - name: IncDirs
86
+ shell: pytask
87
+ run: dv_flow.mgr.std.incdirs.IncDirs
88
+ doc: |
89
+ Creates a list of include directories from a set of
90
+ input files.
85
91
  - name: Exec
86
92
  shell: pytask
87
93
  run: dv_flow.mgr.std.exec.Exec
@@ -0,0 +1,18 @@
1
+ from dv_flow.mgr import TaskDataResult, TaskDataInput, TaskRunCtxt, FileSet
2
+
3
+ async def IncDirs(ctxt : TaskRunCtxt, input : TaskDataInput) -> TaskDataResult:
4
+ """
5
+ IncDirs - create a list of include directories
6
+ """
7
+ outputs = []
8
+
9
+ for inp in input.inputs:
10
+ if hasattr(inp, "basedir") and hasattr(inp, "filetype"):
11
+ outputs.append(FileSet(
12
+ filetype=inp.filetype,
13
+ basedir=inp.basedir,
14
+ incdirs=[inp.basedir]))
15
+ return TaskDataResult(
16
+ status=0,
17
+ changed=input.changed,
18
+ output=outputs)
@@ -1,6 +1,7 @@
1
1
  import argparse
2
2
  import logging
3
3
  from .cmds.cmd_schema import CmdSchema
4
+ from .cmds.cmd_workspace import CmdWorkspace
4
5
 
5
6
  def get_parser():
6
7
  parser = argparse.ArgumentParser(description="dv-flow-mgr.util")
@@ -16,6 +17,10 @@ def get_parser():
16
17
  default="-")
17
18
  schema.set_defaults(f=CmdSchema())
18
19
 
20
+ workspace = subparsers.add_parser('workspace',
21
+ help='Dumps the workspace structure in JSON')
22
+ workspace.set_defaults(f=CmdWorkspace())
23
+
19
24
  return parser
20
25
 
21
26
 
@@ -0,0 +1,34 @@
1
+ import json
2
+ import os
3
+ from ...package import Package
4
+ from ...util.util import loadProjPkgDef
5
+
6
+ class CmdWorkspace(object):
7
+
8
+ def __call__(self, args):
9
+
10
+ pkg : Package = None
11
+ markers = None
12
+
13
+ if os.path.isfile(os.path.join(os.getcwd(), "flow.dv")):
14
+ markers = []
15
+ def marker(m):
16
+ nonlocal markers
17
+ print("marker: %s" % str(m))
18
+ markers.append(m)
19
+ pkg = loadProjPkgDef(os.getcwd(), marker)
20
+
21
+
22
+ if pkg is None and markers is None:
23
+ print("{abc}")
24
+ elif pkg is not None:
25
+ print(json.dumps(pkg.to_json(markers)))
26
+ else:
27
+ result = {}
28
+ result["markers"] = [
29
+ {"msg": marker.msg, "severity": str(marker.severity)}
30
+ for marker in markers
31
+ ]
32
+ print(json.dumps(result))
33
+
34
+ pass
dv_flow/mgr/util/util.py CHANGED
@@ -33,7 +33,7 @@ def loadProjPkgDef(path, listener=None):
33
33
  with open(os.path.join(dir, "flow.dv")) as f:
34
34
  data = yaml.load(f, Loader=yaml.FullLoader)
35
35
  if "package" in data.keys():
36
- listeners = [listener] if listener is None else []
36
+ listeners = [listener] if listener is not None else []
37
37
  ret = PackageLoader(marker_listeners=listeners).load(os.path.join(dir, "flow.dv"))
38
38
  break
39
39
  dir = os.path.dirname(dir)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dv-flow-mgr
3
- Version: 1.0.0.14504336776a1
3
+ Version: 1.0.0.14693328771a1
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
@@ -15,10 +15,10 @@ dv_flow/mgr/listener_list.py,sha256=BfqvEO2AyJvyc4ClU-hPgDPqWSlqvSdG-yaFEHvUrMc,
15
15
  dv_flow/mgr/need_def.py,sha256=X52FJnhukwFsGCkIM-W6apZEdxqS5Gmm-rRO-TS83aU,173
16
16
  dv_flow/mgr/null_callable.py,sha256=x6hlJ9EL6xFLSGFgd14eXbxSWxsUGF56jpbLhERjPtg,243
17
17
  dv_flow/mgr/out,sha256=d8GGBi3J43fhdLBlnsUbzBfRe0TD0QTP3nOTz54l2bI,200
18
- dv_flow/mgr/package.py,sha256=Fq4jCVqEzOhI3lLU9nIi5v9xLzsYbjxDLa7o_Oy9X4w,2394
18
+ dv_flow/mgr/package.py,sha256=11R-bkr9q8eKXET9t7MstCo4s_fKLROp3lzCka08vzg,4252
19
19
  dv_flow/mgr/package_def.py,sha256=-UyeFb_0Sj16RtS2vxtIxTfl-oW7adJjM1I3ZSjcRpc,5729
20
20
  dv_flow/mgr/package_import_spec.py,sha256=aZMpnS9a5NFY76_pYXEuO3-Mkc_xFzy73fdrUe_54Dc,1760
21
- dv_flow/mgr/package_loader.py,sha256=MG_lAh-hUqXNIhuse6gksARHvJY0vw_e53peFYN7rZo,25884
21
+ dv_flow/mgr/package_loader.py,sha256=7k85_5Q6fvj0Q6dIiEuXWJPrg6Cs55qtzvvDjIO5lHA,26348
22
22
  dv_flow/mgr/param.py,sha256=kkxMRGf6mPjSZJsjgLKH2vJL62Sn0ZESvjBLkEYOp20,1386
23
23
  dv_flow/mgr/param_def.py,sha256=hOBBRLiXJ5DakXkhrLCBAQ9GPlgq-QS52r0aflmIgbg,1832
24
24
  dv_flow/mgr/param_ref_eval.py,sha256=5yH37oIX6f2qmk7GfRgNT5qZx0jm3CJFgB9lLDZZ1yQ,1981
@@ -58,17 +58,19 @@ dv_flow/mgr/share/flow.json,sha256=lNmZex9NXkYbyb2aZseQfUOkV9CMyfH0iLODEI7EPBw,5
58
58
  dv_flow/mgr/std/create_file.py,sha256=TAUhpXlTmUDUYw4Dw0cI9FPuYI84yCVkoadnWZxi_8U,2888
59
59
  dv_flow/mgr/std/exec.py,sha256=UChqa_tAjvdB1NjqTsvlPgFomP8hMsX2rAOPyUonNpk,3896
60
60
  dv_flow/mgr/std/fileset.py,sha256=_9IUjZ2_doygc29Qg1hJPaFPzlaIaTdvHnYTai8mE3A,4183
61
- dv_flow/mgr/std/flow.dv,sha256=YXcbELBExqcQirSKQJ_yt6JlxyaOphP-EL09zXppaAs,4164
61
+ dv_flow/mgr/std/flow.dv,sha256=VI_Iwlm3BUcYigWifrqjCsg4T465yutM-r7hLDJ7_V0,4329
62
+ dv_flow/mgr/std/incdirs.py,sha256=F0wraOxkRJRkrhsyk9v2YvpquFtcK4ZsMO1G9sgmhmA,588
62
63
  dv_flow/mgr/std/message.py,sha256=0JHLErg8whqMLAasG1fumZ2O7R7WNWeNQ9ibJaLDpVY,1029
63
64
  dv_flow/mgr/std/task_null.py,sha256=dw6LXBXVwth6gLPeduDvlz5znAhcVpDH8r1DticD-0w,1041
64
65
  dv_flow/mgr/util/__init__.py,sha256=6uuA6z5cKS2hcjJw6YyEM2M79g6OpXb6tZF_Gku-AGU,22
65
- dv_flow/mgr/util/__main__.py,sha256=F0LXpCDpYTPalSo0dc1h_qZkip5v1AZYYh-vcYbh5s0,983
66
- dv_flow/mgr/util/util.py,sha256=cBNt3JJ0PGLlUQFTtBLi12i2j_9gNgSBtKdwS3VfF5Y,1566
66
+ dv_flow/mgr/util/__main__.py,sha256=ioXQ-IMZctzYysJM4RswuPWNSRxtPxzEcG5hutp3Cd4,1210
67
+ dv_flow/mgr/util/util.py,sha256=moHKw_je5pU2ZCfSuFVyiBznFL5q2etTLf70cgCDJ0o,1570
67
68
  dv_flow/mgr/util/cmds/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
68
69
  dv_flow/mgr/util/cmds/cmd_schema.py,sha256=IJzZdxCSEgIQ79LpYiM7UqJ9RJ-7yraqmBN2XVgAgXA,1752
69
- dv_flow_mgr-1.0.0.14504336776a1.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
70
- dv_flow_mgr-1.0.0.14504336776a1.dist-info/METADATA,sha256=AOnJoFZGkPuich1lLYwO610kIK_frdXdhEJ25XskPng,13336
71
- dv_flow_mgr-1.0.0.14504336776a1.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
72
- dv_flow_mgr-1.0.0.14504336776a1.dist-info/entry_points.txt,sha256=1roy8wAFM48LabOvr6jiOw0MUs-qE8X3Vf8YykPazxk,50
73
- dv_flow_mgr-1.0.0.14504336776a1.dist-info/top_level.txt,sha256=amfVTkggzYPtWwLqNmRukfz1Buu0pGS2SrYBBLhXm04,8
74
- dv_flow_mgr-1.0.0.14504336776a1.dist-info/RECORD,,
70
+ dv_flow/mgr/util/cmds/cmd_workspace.py,sha256=egmaIXpe5L-TePwmcfisfrG6tdiTUWSjqa9Za5WChVs,890
71
+ dv_flow_mgr-1.0.0.14693328771a1.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
72
+ dv_flow_mgr-1.0.0.14693328771a1.dist-info/METADATA,sha256=iTHBuxVLjQ5ybYrnFh0SawX3Yj4CBACJUzPdqBuBmVA,13336
73
+ dv_flow_mgr-1.0.0.14693328771a1.dist-info/WHEEL,sha256=SmOxYU7pzNKBqASvQJ7DjX3XGUF92lrGhMb3R6_iiqI,91
74
+ dv_flow_mgr-1.0.0.14693328771a1.dist-info/entry_points.txt,sha256=1roy8wAFM48LabOvr6jiOw0MUs-qE8X3Vf8YykPazxk,50
75
+ dv_flow_mgr-1.0.0.14693328771a1.dist-info/top_level.txt,sha256=amfVTkggzYPtWwLqNmRukfz1Buu0pGS2SrYBBLhXm04,8
76
+ dv_flow_mgr-1.0.0.14693328771a1.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (78.1.0)
2
+ Generator: setuptools (79.0.1)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5