dv-flow-mgr 0.0.1.13551739897a1__py3-none-any.whl → 0.0.1.13577785562a1__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/eval_jq.py CHANGED
@@ -8,8 +8,9 @@ def eval_jq(input, args):
8
8
  filt = jq.compile(args[0])
9
9
 
10
10
  if type(input) == str:
11
- ret = filt.input_text(input).all()
11
+ ret = filt.input_text(input).text()
12
12
  else:
13
- ret = filt.input_value(input).all()
13
+ ret = filt.input_value(input).text()
14
+
14
15
 
15
16
  return ret
dv_flow/mgr/expr_eval.py CHANGED
@@ -19,8 +19,11 @@ class ExprEval(ExprVisitor):
19
19
  return val
20
20
 
21
21
  def _toString(self, val):
22
- obj = self._toObject(val)
23
- return json.dumps(obj)
22
+ rval = val
23
+ if type(val) != str:
24
+ obj = self._toObject(val)
25
+ rval = json.dumps(obj)
26
+ return rval
24
27
  # if isinstance(val, list):
25
28
  # val = '[' + ",".join(self._toString(v) for v in val) + ']'
26
29
  # elif hasattr(val, "model_dump_json"):
dv_flow/mgr/param.py ADDED
@@ -0,0 +1,20 @@
1
+
2
+ from pydantic import BaseModel
3
+ import pydantic.dataclasses as pdc
4
+ from typing import Any, List, Union
5
+
6
+ class ParamMeta(type):
7
+ def __getitem__(self, T):
8
+ ret = Union[T, Param]
9
+ return ret
10
+
11
+ class ParamT(metaclass=ParamMeta):
12
+ pass
13
+
14
+ class Param(BaseModel):
15
+ append : Union[Any,List] = pdc.Field(default=None)
16
+ prepend : Union[Any,List] = pdc.Field(default=None)
17
+ append_path : Union[Any,List] = pdc.Field(default=None, alias="append-path")
18
+ prepend_path : Union[Any,List] = pdc.Field(default=None, alias="prepend-path")
19
+
20
+
@@ -26,12 +26,9 @@ class ParamRefEval(object):
26
26
  raise Exception("unterminated variable ref")
27
27
 
28
28
  ref = val[idx+3:eidx].strip()
29
- print("ref: %s" % ref)
30
29
 
31
30
  expr_ast = self.parser.parse(ref)
32
- print("expr_ast: %s" % str(expr_ast))
33
31
  exp_val = self.expr_eval.eval(expr_ast)
34
- print("exp_val: %s" % str(exp_val))
35
32
 
36
33
  # Replacing [idx..eidx+2] with len(exp_val)
37
34
  val = val[:idx] + exp_val + val[eidx+2:]
dv_flow/mgr/task_node.py CHANGED
@@ -6,6 +6,7 @@ from typing import Any, Callable, ClassVar, Dict, List
6
6
  from .task_data import TaskDataInput, TaskDataOutput, TaskDataResult
7
7
  from .task_params_ctor import TaskParamsCtor
8
8
  from .param_ref_eval import ParamRefEval
9
+ from .param import Param
9
10
 
10
11
  @dc.dataclass
11
12
  class TaskNode(object):
@@ -45,16 +46,19 @@ class TaskNode(object):
45
46
 
46
47
  eval.setVar("in", in_params)
47
48
 
48
- # for attr in dir(self.params):
49
- # if not attr.startswith("_"):
50
- # print("Attr: %s" % attr)
51
49
  for name,field in self.params.model_fields.items():
52
50
  value = getattr(self.params, name)
53
- print("Field: %s %s" % (name, str(value)))
54
- if value.find("${{") != -1:
55
- new_val = eval.eval(value)
56
- setattr(self.params, name, new_val)
57
- pass
51
+ if type(value) == str:
52
+ if value.find("${{") != -1:
53
+ new_val = eval.eval(value)
54
+ setattr(self.params, name, new_val)
55
+ elif isinstance(value, list):
56
+ for i,elem in enumerate(value):
57
+ if elem.find("${{") != -1:
58
+ new_val = eval.eval(elem)
59
+ value[i] = new_val
60
+ else:
61
+ raise Exception("Unhandled param type: %s" % str(value))
58
62
 
59
63
  input = TaskDataInput(
60
64
  changed=changed,
@@ -83,12 +87,6 @@ class TaskNode(object):
83
87
  def __hash__(self):
84
88
  return id(self)
85
89
 
86
- @staticmethod
87
- def task(paramT):
88
- def wrapper(T):
89
- ctor = TaskNodeCtorWrapper(T.__name__, T, paramT)
90
- return ctor
91
- return wrapper
92
90
 
93
91
  @dc.dataclass
94
92
  class TaskNodeCtor(object):
@@ -99,7 +97,6 @@ class TaskNodeCtor(object):
99
97
  """
100
98
  name : str
101
99
 
102
-
103
100
  def mkTaskNode(self, srcdir, params, name=None) -> TaskNode:
104
101
  raise NotImplementedError("mkTaskNode in type %s" % str(type(self)))
105
102
 
@@ -140,5 +137,25 @@ class TaskNodeCtorWrapper(TaskNodeCtor):
140
137
  str(type(obj)),
141
138
  key))
142
139
  else:
143
- setattr(obj, key, value)
140
+ if isinstance(value, Param):
141
+ if value.append is not None:
142
+ ex_value = getattr(obj, key, [])
143
+ ex_value.extend(value.append)
144
+ setattr(obj, key, ex_value)
145
+ elif value.prepend is not None:
146
+ ex_value = getattr(obj, key, [])
147
+ value = value.copy()
148
+ value.extend(ex_value)
149
+ setattr(obj, key, value)
150
+ pass
151
+ else:
152
+ raise Exception("Unhandled value spec: %s" % str(value))
153
+ else:
154
+ setattr(obj, key, value)
144
155
  return obj
156
+
157
+ def task(paramT):
158
+ def wrapper(T):
159
+ ctor = TaskNodeCtorWrapper(T.__name__, T, paramT)
160
+ return ctor
161
+ return wrapper
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: dv-flow-mgr
3
- Version: 0.0.1.13551739897a1
3
+ Version: 0.0.1.13577785562a1
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,7 +1,7 @@
1
1
  dv_flow/mgr/__init__.py,sha256=IZA7I1u7RH34DrJXSkETxWFpK5Jn_A2zXfnCAzJ8XxA,289
2
2
  dv_flow/mgr/__main__.py,sha256=uik6gDAvtZNG0yyDKYc4FTl6R1QHAR543jNG2lCAa6E,1771
3
- dv_flow/mgr/eval_jq.py,sha256=S3WIfBNWE4uoJb7agJ-lm0v1mwYQ7VkdLcyDEC1VRtw,291
4
- dv_flow/mgr/expr_eval.py,sha256=nd4MUBQ_NyvBM4E3e8TKWPVhLseYmBDbvFDt1s_qQJ8,2200
3
+ dv_flow/mgr/eval_jq.py,sha256=Ue-qkyNW6uOu2Wy8u6nrTbPPY7ujaHd0-4iki0eV3Ec,294
4
+ dv_flow/mgr/expr_eval.py,sha256=Mp0TvrV6gZWcj1uYwLfPNI-ARwwdAfwntE5byLBfBuY,2276
5
5
  dv_flow/mgr/expr_parser.py,sha256=aR8n6hgk5xmFknIaSVC02K-So-eU4pkkFtwb7zWsSPs,5474
6
6
  dv_flow/mgr/fileset.py,sha256=FNvC5sU2ArxJ0OO3v8dXTv8zX-bZ5t0a0ljne0fQQ1o,1150
7
7
  dv_flow/mgr/fragment_def.py,sha256=cyzp1XeWtNOaagScmeS-BPsoXj9j2LTBbKq5ZUioz8I,1641
@@ -9,8 +9,9 @@ dv_flow/mgr/out,sha256=d8GGBi3J43fhdLBlnsUbzBfRe0TD0QTP3nOTz54l2bI,200
9
9
  dv_flow/mgr/package.py,sha256=878twhPD-E1pFlDNUtuyeFEgJ_Y89b560og4St-Iwrs,1679
10
10
  dv_flow/mgr/package_def.py,sha256=dwvs-7kGEp7wFrBK2Fybysb-vSKwtWOtxTrg1VIaL14,14975
11
11
  dv_flow/mgr/package_import_spec.py,sha256=ah3r15v5Jdub2poc3sgi6Uar1L3oGoYsCPPNiOHV-a4,1760
12
+ dv_flow/mgr/param.py,sha256=3BY-ucig6JRw73FhjyJQL-vpd57qhAzixgZ8I5FoUpw,553
12
13
  dv_flow/mgr/param_def.py,sha256=e2WvRCMArbgcsKC4TKQqZTscZmCdo3WvVR6w3LN0VK8,727
13
- dv_flow/mgr/param_ref_eval.py,sha256=oc4Eg0v3zp-hvDjE5JofPczUFY5bYGXkwiWFvkAvKOA,1235
14
+ dv_flow/mgr/param_ref_eval.py,sha256=dpV6IPdTtZHLy8maTsN61Ce1Cc5M5dLQW5sauNujEMU,1090
14
15
  dv_flow/mgr/parsetab.py,sha256=enSOnMQ-woIsMEzHyeYiefvhAl8enxfX9Ct_o8-jkqs,3780
15
16
  dv_flow/mgr/pkg_rgy.py,sha256=2R_EaeBDJn5qUq9DzSnLc37wUP36MWSv-p0LgUjJRAg,4471
16
17
  dv_flow/mgr/task.py,sha256=kLQSvnVwj9ROIDtxq8lLu-4mJizTxOqvUeogmgN6QAA,5976
@@ -23,7 +24,7 @@ dv_flow/mgr/task_graph_runner.py,sha256=jUGI49QvxUCfQoKQDDk2psbeapIcCg72qNOW1Jip
23
24
  dv_flow/mgr/task_graph_runner_local.py,sha256=OrydPwtQ8E7hYWvSXx0h7lI3nfUNFyklULhsyMwz9dA,4687
24
25
  dv_flow/mgr/task_impl_data.py,sha256=bFPijoKrh9x7fZN2DsvRJp0UHo-gGM0VjtDQISyfhFk,321
25
26
  dv_flow/mgr/task_memento.py,sha256=C7VTQpBhDEoYuDmE6YTM-6TLMLnqHp6Y0Vat1aTgtCs,1096
26
- dv_flow/mgr/task_node.py,sha256=UD3p8tpluQM1k57VeJblp_0S_4-ncPdRiNKxTwkp-7E,4277
27
+ dv_flow/mgr/task_node.py,sha256=uCsyNT9IQu0cok27qTEi4iTB6FqobXbx7hbVAmjELKc,5130
27
28
  dv_flow/mgr/task_output.py,sha256=l-W-FvVo6YDah1RQS-I9N0KUtB3vp-kl7lxIdmNz0l4,178
28
29
  dv_flow/mgr/task_params_ctor.py,sha256=aXgB8o9xFPjaEjGW_xYkEC0N0apzGzGUPDj7g2ZLvus,1112
29
30
  dv_flow/mgr/task_runner.py,sha256=JmerE6CyXiJJK7-n6P65OzwW9UTYFQqV8Cck7eHe0B8,3882
@@ -36,9 +37,9 @@ dv_flow/mgr/std/fileset.py,sha256=uP7bGntRq-Tn5_GEFnt0_J_OAmfvep3GlCwCuE8by4o,27
36
37
  dv_flow/mgr/std/flow.dv,sha256=j9wLrF3Ghh1ZLbJxmk7WiNiRYUYEer-8CCUA5hsgtfk,1409
37
38
  dv_flow/mgr/std/message.py,sha256=BPTHnEMD4tBufQ9LvsS9Sa_0xjaJATbBpwqosWslvVA,193
38
39
  dv_flow/mgr/std/task_null.py,sha256=KObmjG_4D08GJ1k6neqKIQrFY72Sj0jLnwXxEkq5HA0,321
39
- dv_flow_mgr-0.0.1.13551739897a1.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
40
- dv_flow_mgr-0.0.1.13551739897a1.dist-info/METADATA,sha256=VtNYWj6_n4aAJfxdzGybKBE-WZlCuoPWNA8X3FXzRTM,13276
41
- dv_flow_mgr-0.0.1.13551739897a1.dist-info/WHEEL,sha256=nn6H5-ilmfVryoAQl3ZQ2l8SH5imPWFpm1A5FgEuFV4,91
42
- dv_flow_mgr-0.0.1.13551739897a1.dist-info/entry_points.txt,sha256=1roy8wAFM48LabOvr6jiOw0MUs-qE8X3Vf8YykPazxk,50
43
- dv_flow_mgr-0.0.1.13551739897a1.dist-info/top_level.txt,sha256=amfVTkggzYPtWwLqNmRukfz1Buu0pGS2SrYBBLhXm04,8
44
- dv_flow_mgr-0.0.1.13551739897a1.dist-info/RECORD,,
40
+ dv_flow_mgr-0.0.1.13577785562a1.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
41
+ dv_flow_mgr-0.0.1.13577785562a1.dist-info/METADATA,sha256=UeJMpl2RnCOQX98UgtpVXI3qjSPhe4Zs_Gcg4-Cv4hE,13276
42
+ dv_flow_mgr-0.0.1.13577785562a1.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
43
+ dv_flow_mgr-0.0.1.13577785562a1.dist-info/entry_points.txt,sha256=1roy8wAFM48LabOvr6jiOw0MUs-qE8X3Vf8YykPazxk,50
44
+ dv_flow_mgr-0.0.1.13577785562a1.dist-info/top_level.txt,sha256=amfVTkggzYPtWwLqNmRukfz1Buu0pGS2SrYBBLhXm04,8
45
+ dv_flow_mgr-0.0.1.13577785562a1.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.8.1)
2
+ Generator: setuptools (75.8.2)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5