Skip to content

Commit 55bfed8

Browse files
authored
Merge pull request #11 from antmendoza/type_hydration
fields hydration
2 parents 3588b61 + 6e45877 commit 55bfed8

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

63 files changed

+1253
-1257
lines changed

serverlessworkflow/sdk/action.py

Lines changed: 29 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,57 +1,60 @@
1-
from typing import Union
1+
from __future__ import annotations
2+
3+
import copy
24

35
from serverlessworkflow.sdk.action_data_filter import ActionDataFilter
46
from serverlessworkflow.sdk.event_ref import EventRef
57
from serverlessworkflow.sdk.function_ref import FunctionRef
8+
from serverlessworkflow.sdk.hydration import ComplexTypeOf, UnionTypeOf, SimpleTypeOf, HydratableParameter, \
9+
Fields
610
from serverlessworkflow.sdk.sleep import Sleep
711
from serverlessworkflow.sdk.sub_flow_ref import SubFlowRef
812

913

1014
class Action:
1115
id: str = None
1216
name: str = None
13-
functionRef: Union[str, FunctionRef] = None
17+
functionRef: (str | FunctionRef) = None
1418
eventRef: EventRef = None
15-
subFlowRef: Union[str, SubFlowRef] = None
19+
subFlowRef: (str | SubFlowRef) = None
1620
sleep: Sleep = None
1721
retryRef: str = None
1822
nonRetryableErrors: [str] = None
1923
retryableErrors: [str] = None
2024
actionDataFilter: ActionDataFilter = None
2125
condition: str = None
26+
jespin: str = None
2227

2328
def __init__(self,
2429
id: str = None,
2530
name: str = None,
26-
functionRef: Union[str, FunctionRef] = None,
31+
functionRef: (str | FunctionRef) = None,
2732
eventRef: EventRef = None,
28-
subFlowRef: Union[str, SubFlowRef] = None,
33+
subFlowRef: (str | SubFlowRef) = None,
2934
sleep: Sleep = None,
3035
retryRef: str = None,
3136
nonRetryableErrors: [str] = None,
3237
retryableErrors: [str] = None,
3338
actionDataFilter: ActionDataFilter = None,
3439
condition: str = None,
40+
eslavida: str = None,
3541
**kwargs):
3642

37-
# duplicated
38-
for local in list(locals()):
39-
if local in ["self", "kwargs"]:
40-
continue
41-
value = locals().get(local)
42-
if not value:
43-
continue
44-
if value == "true":
45-
value = True
46-
# duplicated
47-
48-
self.__setattr__(local.replace("_", ""), value)
49-
50-
# duplicated
51-
for k in kwargs.keys():
52-
value = kwargs[k]
53-
if value == "true":
54-
value = True
55-
56-
self.__setattr__(k.replace("_", ""), value)
57-
# duplicated
43+
Fields(locals(), kwargs, Action.f_hydration).set_to_object(self)
44+
45+
@staticmethod
46+
def f_hydration(p_key, p_value):
47+
48+
parameter = HydratableParameter(value=p_value)
49+
if p_key == 'functionRef':
50+
return parameter.hydrateAs(UnionTypeOf([SimpleTypeOf(str), ComplexTypeOf(FunctionRef)]))
51+
if p_key == 'eventRef':
52+
return parameter.hydrateAs(ComplexTypeOf(EventRef))
53+
if p_key == 'subFlowRef':
54+
return parameter.hydrateAs(UnionTypeOf([SimpleTypeOf(str), ComplexTypeOf(SubFlowRef)]))
55+
if p_key == 'sleep':
56+
return parameter.hydrateAs(ComplexTypeOf(Sleep))
57+
if p_key == 'actionDataFilter':
58+
return parameter.hydrateAs(ComplexTypeOf(ActionDataFilter))
59+
60+
return copy.deepcopy(p_value)
Lines changed: 4 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
from serverlessworkflow.sdk.hydration import Fields
2+
3+
14
class ActionDataFilter:
25
fromStateData: str = None
36
useResults: bool = None
@@ -10,25 +13,4 @@ def __init__(self,
1013
results: str = None,
1114
toStateData: str = None,
1215
**kwargs):
13-
14-
# duplicated
15-
for local in list(locals()):
16-
if local in ["self", "kwargs"]:
17-
continue
18-
value = locals().get(local)
19-
if not value:
20-
continue
21-
if value == "true":
22-
value = True
23-
# duplicated
24-
25-
self.__setattr__(local.replace("_", ""), value)
26-
27-
# duplicated
28-
for k in kwargs.keys():
29-
value = kwargs[k]
30-
if value == "true":
31-
value = True
32-
33-
self.__setattr__(k.replace("_", ""), value)
34-
# duplicated
16+
Fields(locals(), kwargs, Fields.default_hydration).set_to_object(self)

serverlessworkflow/sdk/auth_def.py

Lines changed: 23 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,36 @@
1-
from enum import Enum
2-
from typing import Union
1+
from __future__ import annotations
2+
3+
import copy
34

45
from serverlessworkflow.sdk.basic_props_def import BasicPropsDef
56
from serverlessworkflow.sdk.bearer_props_def import BearerPropsDef
7+
from serverlessworkflow.sdk.hydration import Fields
68
from serverlessworkflow.sdk.oauth2props_def import Oauth2PropsDef
79

810

9-
class Scheme(Enum):
10-
BASIC = "basic"
11-
BEARER = "bearer"
12-
OAUTH2 = "oauth2"
13-
14-
1511
class AuthDef:
1612
name: str = None
17-
scheme: Scheme = None
18-
properties: Union[str, Union[BasicPropsDef, BearerPropsDef, Oauth2PropsDef]] = None
13+
scheme: str = None
14+
properties: (str | (BasicPropsDef | BearerPropsDef | Oauth2PropsDef)) = None
1915

2016
def __init__(self,
2117
name: str = None,
22-
scheme: Scheme = None,
23-
properties: Union[str, Union[BasicPropsDef, BearerPropsDef, Oauth2PropsDef]] = None,
18+
scheme: str = None,
19+
properties: (str | (BasicPropsDef | BearerPropsDef | Oauth2PropsDef)) = None,
2420
**kwargs):
21+
Fields(locals(), kwargs, Fields.f_hydration).set_to_object(self)
22+
23+
@staticmethod
24+
def f_hydration(p_key, p_value):
25+
26+
result = copy.deepcopy(p_value)
27+
28+
if p_key == 'properties':
29+
if p_value["username"] and p_value["password"]:
30+
return BasicPropsDef(p_value);
31+
if p_value["token"]:
32+
return BearerPropsDef(p_value);
33+
if p_value["grantType"]:
34+
return Oauth2PropsDef(p_value);
2535

26-
# duplicated
27-
for local in list(locals()):
28-
if local in ["self", "kwargs"]:
29-
continue
30-
value = locals().get(local)
31-
if not value:
32-
continue
33-
if value == "true":
34-
value = True
35-
# duplicated
36-
37-
self.__setattr__(local.replace("_", ""), value)
38-
39-
# duplicated
40-
for k in kwargs.keys():
41-
value = kwargs[k]
42-
if value == "true":
43-
value = True
44-
45-
self.__setattr__(k.replace("_", ""), value)
46-
# duplicated
36+
return result
Lines changed: 2 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
from serverlessworkflow.sdk.hydration import Fields
12
from serverlessworkflow.sdk.metadata import Metadata
23

34

@@ -11,25 +12,4 @@ def __init__(self,
1112
password: str = None,
1213
metadata: Metadata = None,
1314
**kwargs):
14-
15-
# duplicated
16-
for local in list(locals()):
17-
if local in ["self", "kwargs"]:
18-
continue
19-
value = locals().get(local)
20-
if not value:
21-
continue
22-
if value == "true":
23-
value = True
24-
# duplicated
25-
26-
self.__setattr__(local.replace("_", ""), value)
27-
28-
# duplicated
29-
for k in kwargs.keys():
30-
value = kwargs[k]
31-
if value == "true":
32-
value = True
33-
34-
self.__setattr__(k.replace("_", ""), value)
35-
# duplicated
15+
Fields(locals(), kwargs, Fields.default_hydration).set_to_object(self)
Lines changed: 2 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
from serverlessworkflow.sdk.hydration import Fields
12
from serverlessworkflow.sdk.metadata import Metadata
23

34

@@ -9,25 +10,4 @@ def __init__(self,
910
token: str = None,
1011
metadata: Metadata = None,
1112
**kwargs):
12-
13-
# duplicated
14-
for local in list(locals()):
15-
if local in ["self", "kwargs"]:
16-
continue
17-
value = locals().get(local)
18-
if not value:
19-
continue
20-
if value == "true":
21-
value = True
22-
# duplicated
23-
24-
self.__setattr__(local.replace("_", ""), value)
25-
26-
# duplicated
27-
for k in kwargs.keys():
28-
value = kwargs[k]
29-
if value == "true":
30-
value = True
31-
32-
self.__setattr__(k.replace("_", ""), value)
33-
# duplicated
13+
Fields(locals(), kwargs, Fields.default_hydration).set_to_object(self)

serverlessworkflow/sdk/branch.py

Lines changed: 14 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
1+
import copy
2+
13
from serverlessworkflow.sdk.action import Action
24
from serverlessworkflow.sdk.branch_timeout import BranchTimeOut
5+
from serverlessworkflow.sdk.hydration import ArrayTypeOf, ComplexTypeOf, HydratableParameter, Fields
36

47

58
class Branch:
@@ -12,25 +15,15 @@ def __init__(self,
1215
timeouts: BranchTimeOut = None,
1316
actions: [Action] = None,
1417
**kwargs):
18+
Fields(locals(), kwargs, Branch.f_hydration).set_to_object(self)
19+
20+
@staticmethod
21+
def f_hydration(p_key, p_value):
22+
23+
if p_key == 'timeouts':
24+
return HydratableParameter(value=p_value).hydrateAs(ComplexTypeOf(BranchTimeOut))
25+
26+
if p_key == 'actions':
27+
return HydratableParameter(value=p_value).hydrateAs(ArrayTypeOf(Action))
1528

16-
# duplicated
17-
for local in list(locals()):
18-
if local in ["self", "kwargs"]:
19-
continue
20-
value = locals().get(local)
21-
if not value:
22-
continue
23-
if value == "true":
24-
value = True
25-
# duplicated
26-
27-
self.__setattr__(local.replace("_", ""), value)
28-
29-
# duplicated
30-
for k in kwargs.keys():
31-
value = kwargs[k]
32-
if value == "true":
33-
value = True
34-
35-
self.__setattr__(k.replace("_", ""), value)
36-
# duplicated
29+
return copy.deepcopy(p_value)
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,12 @@
1+
from serverlessworkflow.sdk.hydration import Fields
2+
3+
14
class BranchTimeOut:
25
actionExecTimeOut: str = None # ActionExecTimeOut
36
branchExecTimeOut: str = None # BranchExecTimeOut
7+
8+
def __init__(self,
9+
actionExecTimeOut: str = None,
10+
branchExecTimeOut: str = None,
11+
**kwargs):
12+
Fields(locals(), kwargs, Fields.default_hydration).set_to_object(self)

0 commit comments

Comments
 (0)