Skip to content

fields hydration #11

New issue

Have a question about this project? Sign up for a free account to open an issue and contact its maintainers and the community.

By clicking “Sign up for ”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on ? Sign in to your account

Merged
merged 1 commit into from
Feb 22, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
55 changes: 29 additions & 26 deletions serverlessworkflow/sdk/action.py
Original file line numberDiff line numberDiff line change
@@ -1,57 +1,60 @@
from typing import Union
from __future__ import annotations

import copy

from serverlessworkflow.sdk.action_data_filter import ActionDataFilter
from serverlessworkflow.sdk.event_ref import EventRef
from serverlessworkflow.sdk.function_ref import FunctionRef
from serverlessworkflow.sdk.hydration import ComplexTypeOf, UnionTypeOf, SimpleTypeOf, HydratableParameter, \
Fields
from serverlessworkflow.sdk.sleep import Sleep
from serverlessworkflow.sdk.sub_flow_ref import SubFlowRef


class Action:
id: str = None
name: str = None
functionRef: Union[str, FunctionRef] = None
functionRef: (str | FunctionRef) = None
eventRef: EventRef = None
subFlowRef: Union[str, SubFlowRef] = None
subFlowRef: (str | SubFlowRef) = None
sleep: Sleep = None
retryRef: str = None
nonRetryableErrors: [str] = None
retryableErrors: [str] = None
actionDataFilter: ActionDataFilter = None
condition: str = None
jespin: str = None

def __init__(self,
id: str = None,
name: str = None,
functionRef: Union[str, FunctionRef] = None,
functionRef: (str | FunctionRef) = None,
eventRef: EventRef = None,
subFlowRef: Union[str, SubFlowRef] = None,
subFlowRef: (str | SubFlowRef) = None,
sleep: Sleep = None,
retryRef: str = None,
nonRetryableErrors: [str] = None,
retryableErrors: [str] = None,
actionDataFilter: ActionDataFilter = None,
condition: str = None,
eslavida: str = None,
**kwargs):

# duplicated
for local in list(locals()):
if local in ["self", "kwargs"]:
continue
value = locals().get(local)
if not value:
continue
if value == "true":
value = True
# duplicated

self.__setattr__(local.replace("_", ""), value)

# duplicated
for k in kwargs.keys():
value = kwargs[k]
if value == "true":
value = True

self.__setattr__(k.replace("_", ""), value)
# duplicated
Fields(locals(), kwargs, Action.f_hydration).set_to_object(self)

@staticmethod
def f_hydration(p_key, p_value):

parameter = HydratableParameter(value=p_value)
if p_key == 'functionRef':
return parameter.hydrateAs(UnionTypeOf([SimpleTypeOf(str), ComplexTypeOf(FunctionRef)]))
if p_key == 'eventRef':
return parameter.hydrateAs(ComplexTypeOf(EventRef))
if p_key == 'subFlowRef':
return parameter.hydrateAs(UnionTypeOf([SimpleTypeOf(str), ComplexTypeOf(SubFlowRef)]))
if p_key == 'sleep':
return parameter.hydrateAs(ComplexTypeOf(Sleep))
if p_key == 'actionDataFilter':
return parameter.hydrateAs(ComplexTypeOf(ActionDataFilter))

return copy.deepcopy(p_value)
26 changes: 4 additions & 22 deletions serverlessworkflow/sdk/action_data_filter.py
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
from serverlessworkflow.sdk.hydration import Fields


class ActionDataFilter:
fromStateData: str = None
useResults: bool = None
Expand All@@ -10,25 +13,4 @@ def __init__(self,
results: str = None,
toStateData: str = None,
**kwargs):

# duplicated
for local in list(locals()):
if local in ["self", "kwargs"]:
continue
value = locals().get(local)
if not value:
continue
if value == "true":
value = True
# duplicated

self.__setattr__(local.replace("_", ""), value)

# duplicated
for k in kwargs.keys():
value = kwargs[k]
if value == "true":
value = True

self.__setattr__(k.replace("_", ""), value)
# duplicated
Fields(locals(), kwargs, Fields.default_hydration).set_to_object(self)
56 changes: 23 additions & 33 deletions serverlessworkflow/sdk/auth_def.py
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,36 @@
from enum import Enum
from typing import Union
from __future__ import annotations

import copy

from serverlessworkflow.sdk.basic_props_def import BasicPropsDef
from serverlessworkflow.sdk.bearer_props_def import BearerPropsDef
from serverlessworkflow.sdk.hydration import Fields
from serverlessworkflow.sdk.oauth2props_def import Oauth2PropsDef


class Scheme(Enum):
BASIC = "basic"
BEARER = "bearer"
OAUTH2 = "oauth2"


class AuthDef:
name: str = None
scheme: Scheme = None
properties: Union[str, Union[BasicPropsDef, BearerPropsDef, Oauth2PropsDef]] = None
scheme: str = None
properties: (str | (BasicPropsDef | BearerPropsDef | Oauth2PropsDef)) = None

def __init__(self,
name: str = None,
scheme: Scheme = None,
properties: Union[str, Union[BasicPropsDef, BearerPropsDef, Oauth2PropsDef]] = None,
scheme: str = None,
properties: (str | (BasicPropsDef | BearerPropsDef | Oauth2PropsDef)) = None,
**kwargs):
Fields(locals(), kwargs, Fields.f_hydration).set_to_object(self)

@staticmethod
def f_hydration(p_key, p_value):

result = copy.deepcopy(p_value)

if p_key == 'properties':
if p_value["username"] and p_value["password"]:
return BasicPropsDef(p_value);
if p_value["token"]:
return BearerPropsDef(p_value);
if p_value["grantType"]:
return Oauth2PropsDef(p_value);

# duplicated
for local in list(locals()):
if local in ["self", "kwargs"]:
continue
value = locals().get(local)
if not value:
continue
if value == "true":
value = True
# duplicated

self.__setattr__(local.replace("_", ""), value)

# duplicated
for k in kwargs.keys():
value = kwargs[k]
if value == "true":
value = True

self.__setattr__(k.replace("_", ""), value)
# duplicated
return result
24 changes: 2 additions & 22 deletions serverlessworkflow/sdk/basic_props_def.py
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
from serverlessworkflow.sdk.hydration import Fields
from serverlessworkflow.sdk.metadata import Metadata


Expand All@@ -11,25 +12,4 @@ def __init__(self,
password: str = None,
metadata: Metadata = None,
**kwargs):

# duplicated
for local in list(locals()):
if local in ["self", "kwargs"]:
continue
value = locals().get(local)
if not value:
continue
if value == "true":
value = True
# duplicated

self.__setattr__(local.replace("_", ""), value)

# duplicated
for k in kwargs.keys():
value = kwargs[k]
if value == "true":
value = True

self.__setattr__(k.replace("_", ""), value)
# duplicated
Fields(locals(), kwargs, Fields.default_hydration).set_to_object(self)
24 changes: 2 additions & 22 deletions serverlessworkflow/sdk/bearer_props_def.py
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
from serverlessworkflow.sdk.hydration import Fields
from serverlessworkflow.sdk.metadata import Metadata


Expand All@@ -9,25 +10,4 @@ def __init__(self,
token: str = None,
metadata: Metadata = None,
**kwargs):

# duplicated
for local in list(locals()):
if local in ["self", "kwargs"]:
continue
value = locals().get(local)
if not value:
continue
if value == "true":
value = True
# duplicated

self.__setattr__(local.replace("_", ""), value)

# duplicated
for k in kwargs.keys():
value = kwargs[k]
if value == "true":
value = True

self.__setattr__(k.replace("_", ""), value)
# duplicated
Fields(locals(), kwargs, Fields.default_hydration).set_to_object(self)
35 changes: 14 additions & 21 deletions serverlessworkflow/sdk/branch.py
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
import copy

from serverlessworkflow.sdk.action import Action
from serverlessworkflow.sdk.branch_timeout import BranchTimeOut
from serverlessworkflow.sdk.hydration import ArrayTypeOf, ComplexTypeOf, HydratableParameter, Fields


class Branch:
Expand All@@ -12,25 +15,15 @@ def __init__(self,
timeouts: BranchTimeOut = None,
actions: [Action] = None,
**kwargs):
Fields(locals(), kwargs, Branch.f_hydration).set_to_object(self)

@staticmethod
def f_hydration(p_key, p_value):

if p_key == 'timeouts':
return HydratableParameter(value=p_value).hydrateAs(ComplexTypeOf(BranchTimeOut))

if p_key == 'actions':
return HydratableParameter(value=p_value).hydrateAs(ArrayTypeOf(Action))

# duplicated
for local in list(locals()):
if local in ["self", "kwargs"]:
continue
value = locals().get(local)
if not value:
continue
if value == "true":
value = True
# duplicated

self.__setattr__(local.replace("_", ""), value)

# duplicated
for k in kwargs.keys():
value = kwargs[k]
if value == "true":
value = True

self.__setattr__(k.replace("_", ""), value)
# duplicated
return copy.deepcopy(p_value)
9 changes: 9 additions & 0 deletions serverlessworkflow/sdk/branch_timeout.py
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,12 @@
from serverlessworkflow.sdk.hydration import Fields


class BranchTimeOut:
actionExecTimeOut: str = None # ActionExecTimeOut
branchExecTimeOut: str = None # BranchExecTimeOut

def __init__(self,
actionExecTimeOut: str = None,
branchExecTimeOut: str = None,
**kwargs):
Fields(locals(), kwargs, Fields.default_hydration).set_to_object(self)
Loading