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 +55 -0
- dv_flow/mgr/package_loader.py +13 -3
- dv_flow/mgr/std/flow.dv +6 -0
- dv_flow/mgr/std/incdirs.py +18 -0
- dv_flow/mgr/util/__main__.py +5 -0
- dv_flow/mgr/util/cmds/cmd_workspace.py +34 -0
- dv_flow/mgr/util/util.py +1 -1
- {dv_flow_mgr-1.0.0.14504336776a1.dist-info → dv_flow_mgr-1.0.0.14693328771a1.dist-info}/METADATA +1 -1
- {dv_flow_mgr-1.0.0.14504336776a1.dist-info → dv_flow_mgr-1.0.0.14693328771a1.dist-info}/RECORD +13 -11
- {dv_flow_mgr-1.0.0.14504336776a1.dist-info → dv_flow_mgr-1.0.0.14693328771a1.dist-info}/WHEEL +1 -1
- {dv_flow_mgr-1.0.0.14504336776a1.dist-info → dv_flow_mgr-1.0.0.14693328771a1.dist-info}/entry_points.txt +0 -0
- {dv_flow_mgr-1.0.0.14504336776a1.dist-info → dv_flow_mgr-1.0.0.14693328771a1.dist-info}/licenses/LICENSE +0 -0
- {dv_flow_mgr-1.0.0.14504336776a1.dist-info → dv_flow_mgr-1.0.0.14693328771a1.dist-info}/top_level.txt +0 -0
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
|
dv_flow/mgr/package_loader.py
CHANGED
@@ -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
|
-
|
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)
|
dv_flow/mgr/util/__main__.py
CHANGED
@@ -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)
|
{dv_flow_mgr-1.0.0.14504336776a1.dist-info → dv_flow_mgr-1.0.0.14693328771a1.dist-info}/RECORD
RENAMED
@@ -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=
|
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=
|
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=
|
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=
|
66
|
-
dv_flow/mgr/util/util.py,sha256=
|
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
|
-
|
70
|
-
dv_flow_mgr-1.0.0.
|
71
|
-
dv_flow_mgr-1.0.0.
|
72
|
-
dv_flow_mgr-1.0.0.
|
73
|
-
dv_flow_mgr-1.0.0.
|
74
|
-
dv_flow_mgr-1.0.0.
|
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,,
|
File without changes
|
File without changes
|
File without changes
|