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 +3 -2
- dv_flow/mgr/expr_eval.py +5 -2
- dv_flow/mgr/param.py +20 -0
- dv_flow/mgr/param_ref_eval.py +0 -3
- dv_flow/mgr/task_node.py +33 -16
- {dv_flow_mgr-0.0.1.13551739897a1.dist-info → dv_flow_mgr-0.0.1.13577785562a1.dist-info}/METADATA +1 -1
- {dv_flow_mgr-0.0.1.13551739897a1.dist-info → dv_flow_mgr-0.0.1.13577785562a1.dist-info}/RECORD +11 -10
- {dv_flow_mgr-0.0.1.13551739897a1.dist-info → dv_flow_mgr-0.0.1.13577785562a1.dist-info}/WHEEL +1 -1
- {dv_flow_mgr-0.0.1.13551739897a1.dist-info → dv_flow_mgr-0.0.1.13577785562a1.dist-info}/LICENSE +0 -0
- {dv_flow_mgr-0.0.1.13551739897a1.dist-info → dv_flow_mgr-0.0.1.13577785562a1.dist-info}/entry_points.txt +0 -0
- {dv_flow_mgr-0.0.1.13551739897a1.dist-info → dv_flow_mgr-0.0.1.13577785562a1.dist-info}/top_level.txt +0 -0
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).
|
11
|
+
ret = filt.input_text(input).text()
|
12
12
|
else:
|
13
|
-
ret = filt.input_value(input).
|
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
|
-
|
23
|
-
|
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
|
+
|
dv_flow/mgr/param_ref_eval.py
CHANGED
@@ -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
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
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
|
-
|
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
|
{dv_flow_mgr-0.0.1.13551739897a1.dist-info → dv_flow_mgr-0.0.1.13577785562a1.dist-info}/RECORD
RENAMED
@@ -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=
|
4
|
-
dv_flow/mgr/expr_eval.py,sha256=
|
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=
|
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=
|
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.
|
40
|
-
dv_flow_mgr-0.0.1.
|
41
|
-
dv_flow_mgr-0.0.1.
|
42
|
-
dv_flow_mgr-0.0.1.
|
43
|
-
dv_flow_mgr-0.0.1.
|
44
|
-
dv_flow_mgr-0.0.1.
|
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,,
|
{dv_flow_mgr-0.0.1.13551739897a1.dist-info → dv_flow_mgr-0.0.1.13577785562a1.dist-info}/LICENSE
RENAMED
File without changes
|
File without changes
|
File without changes
|