Skip to content

added-default-values #16

New issue

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

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

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Mar 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
6 changes: 5 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,10 @@ With the SDK you can:
* Parse workflow JSON and YAML definitions
* Validate workflow definitions

### Status

Current sdk version conforms to the [Serverless Workflow specification v0.8](https://github.com/serverlessworkflow/specification/tree/0.8.x).


## Install dependencies and run test

Expand All @@ -26,7 +30,7 @@ python setup.py pytest

```
workflow = Workflow(
id_="greeting",
id="greeting",
name="Greeting Workflow",
description="Greet Someone",
version='1.0',
Expand Down
8 changes: 3 additions & 5 deletions serverlessworkflow/sdk/action.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,12 @@
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
from serverlessworkflow.sdk.swf_base import ComplexTypeOf, UnionTypeOf, SimpleTypeOf, HydratableParameter, SwfBase


class Action:
class Action(SwfBase):
id: str = None
name: str = None
functionRef: (str | FunctionRef) = None
Expand Down Expand Up @@ -39,11 +38,10 @@ def __init__(self,
eslavida: str = None,
**kwargs):

Fields(locals(), kwargs, Action.f_hydration).set_to_object(self)
SwfBase.__init__(self, locals(), kwargs, Action.f_hydration)

@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)]))
Expand Down
6 changes: 3 additions & 3 deletions serverlessworkflow/sdk/action_data_filter.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from serverlessworkflow.sdk.hydration import Fields
from serverlessworkflow.sdk.swf_base import SwfBase


class ActionDataFilter:
class ActionDataFilter(SwfBase):
fromStateData: str = None
useResults: bool = None
results: str = None
Expand All @@ -13,4 +13,4 @@ def __init__(self,
results: str = None,
toStateData: str = None,
**kwargs):
Fields(locals(), kwargs, Fields.default_hydration).set_to_object(self)
SwfBase.__init__(self, locals(), kwargs, SwfBase.default_hydration)
15 changes: 8 additions & 7 deletions serverlessworkflow/sdk/auth_def.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@

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
from serverlessworkflow.sdk.swf_base import SwfBase


class AuthDef:
class AuthDef(SwfBase):
name: str = None
scheme: str = None
properties: (str | (BasicPropsDef | BearerPropsDef | Oauth2PropsDef)) = None
Expand All @@ -18,19 +18,20 @@ def __init__(self,
scheme: str = None,
properties: (str | (BasicPropsDef | BearerPropsDef | Oauth2PropsDef)) = None,
**kwargs):
Fields(locals(), kwargs, Fields.f_hydration).set_to_object(self)

_default_values = {'scheme': 'basic'}
SwfBase.__init__(self, locals(), kwargs, SwfBase.default_hydration, _default_values)

@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);
return BasicPropsDef(p_value)
if p_value["token"]:
return BearerPropsDef(p_value);
return BearerPropsDef(p_value)
if p_value["grantType"]:
return Oauth2PropsDef(p_value);
return Oauth2PropsDef(p_value)

return result
6 changes: 3 additions & 3 deletions serverlessworkflow/sdk/basic_props_def.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
from serverlessworkflow.sdk.hydration import Fields
from serverlessworkflow.sdk.metadata import Metadata
from serverlessworkflow.sdk.swf_base import SwfBase


class BasicPropsDef:
class BasicPropsDef(SwfBase):
username: str = None
password: str = None
metadata: Metadata = None
Expand All @@ -12,4 +12,4 @@ def __init__(self,
password: str = None,
metadata: Metadata = None,
**kwargs):
Fields(locals(), kwargs, Fields.default_hydration).set_to_object(self)
SwfBase.__init__(self, locals(), kwargs, SwfBase.default_hydration)
6 changes: 3 additions & 3 deletions serverlessworkflow/sdk/bearer_props_def.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
from serverlessworkflow.sdk.hydration import Fields
from serverlessworkflow.sdk.metadata import Metadata
from serverlessworkflow.sdk.swf_base import SwfBase


class BearerPropsDef:
class BearerPropsDef(SwfBase):
token: str = None
metadata: Metadata = None

def __init__(self,
token: str = None,
metadata: Metadata = None,
**kwargs):
Fields(locals(), kwargs, Fields.default_hydration).set_to_object(self)
SwfBase.__init__(self, locals(), kwargs, SwfBase.default_hydration)
7 changes: 4 additions & 3 deletions serverlessworkflow/sdk/branch.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@

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


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

SwfBase.__init__(self, locals(), kwargs, Branch.f_hydration)

@staticmethod
def f_hydration(p_key, p_value):
Expand Down
6 changes: 3 additions & 3 deletions serverlessworkflow/sdk/branch_timeout.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
from serverlessworkflow.sdk.hydration import Fields
from serverlessworkflow.sdk.swf_base import SwfBase


class BranchTimeOut:
class BranchTimeOut(SwfBase):
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)
SwfBase.__init__(self, locals(), kwargs, SwfBase.default_hydration)
10 changes: 5 additions & 5 deletions serverlessworkflow/sdk/callback_state.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,15 @@
from serverlessworkflow.sdk.end import End
from serverlessworkflow.sdk.error import Error
from serverlessworkflow.sdk.event_data_filter import EventDataFilter
from serverlessworkflow.sdk.hydration import ComplexTypeOf, ArrayTypeOf, HydratableParameter, SimpleTypeOf, \
UnionTypeOf, Fields
from serverlessworkflow.sdk.metadata import Metadata
from serverlessworkflow.sdk.state import State
from serverlessworkflow.sdk.state_data_filter import StateDataFilter
from serverlessworkflow.sdk.swf_base import ComplexTypeOf, ArrayTypeOf, HydratableParameter, SimpleTypeOf, \
UnionTypeOf, SwfBase
from serverlessworkflow.sdk.transition import Transition


class CallbackState(State):
class CallbackState(State, SwfBase):
id: str = None
name: str = None
type: str = None
Expand Down Expand Up @@ -48,11 +48,11 @@ def __init__(self,
metadata: Metadata = None,
**kwargs):

Fields(locals(), kwargs, Fields.f_hydration).set_to_object(self)
_default_values = {'type': 'callback', 'usedForCompensation': False, }
SwfBase.__init__(self, locals(), kwargs, SwfBase.default_hydration, _default_values)

@staticmethod
def f_hydration(p_key, p_value):

if p_key == 'action':
return HydratableParameter(value=p_value).hydrateAs(ComplexTypeOf(Action))

Expand Down
6 changes: 3 additions & 3 deletions serverlessworkflow/sdk/callback_state_timeout.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import copy

from serverlessworkflow.sdk.hydration import HydratableParameter, ComplexTypeOf, Fields
from serverlessworkflow.sdk.state_exec_timeout import StateExecTimeOut
from serverlessworkflow.sdk.swf_base import HydratableParameter, ComplexTypeOf, SwfBase


class CallbackStateTimeOut:
class CallbackStateTimeOut(SwfBase):
stateExecTimeOut: StateExecTimeOut = None
actionExecTimeOut: str = None # ActionExecTimeOut
eventTimeOut: str = None # EventTimeOut
Expand All @@ -14,7 +14,7 @@ def __init__(self,
actionExecTimeOut: str = None,
eventTimeOut: str = None,
**kwargs):
Fields(locals(), kwargs, CallbackStateTimeOut.f_hydration).set_to_object(self)
SwfBase.__init__(self, locals(), kwargs, CallbackStateTimeOut.f_hydration)

@staticmethod
def f_hydration(p_key, p_value):
Expand Down
8 changes: 3 additions & 5 deletions serverlessworkflow/sdk/continue_as_def.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,11 @@

import copy

from serverlessworkflow.sdk.hydration import ComplexTypeOf, SimpleTypeOf, UnionTypeOf, HydratableParameter, \
Fields
from serverlessworkflow.sdk.swf_base import ComplexTypeOf, SimpleTypeOf, UnionTypeOf, HydratableParameter, SwfBase
from serverlessworkflow.sdk.workflow_exec_timeout import WorkflowExecTimeOut


class ContinueAsDef:
class ContinueAsDef(SwfBase):
workflowId: str = None
version: str = None
data: (str | dict) = None
Expand All @@ -20,11 +19,10 @@ def __init__(self,
workflowExecTimeOut: WorkflowExecTimeOut = None,
**kwargs):

Fields(locals(), kwargs, ContinueAsDef.f_hydration).set_to_object(self)
SwfBase.__init__(self, locals(), kwargs, ContinueAsDef.f_hydration)

@staticmethod
def f_hydration(p_key, p_value):

if p_key == 'data':
return HydratableParameter(value=p_value).hydrateAs(UnionTypeOf([SimpleTypeOf(str), ComplexTypeOf(dict)]))

Expand Down
6 changes: 3 additions & 3 deletions serverlessworkflow/sdk/correlation_def.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
from serverlessworkflow.sdk.hydration import Fields
from serverlessworkflow.sdk.swf_base import SwfBase


class CorrelationDef:
class CorrelationDef(SwfBase):
contextAttributeName: str = None
contextAttributeValue: str = None

def __init__(self,
contextAttributeName: str = None,
contextAttributeValue: str = None,
**kwargs):
Fields(locals(), kwargs, Fields.default_hydration).set_to_object(self)
SwfBase.__init__(self, locals(), kwargs, SwfBase.default_hydration)
6 changes: 3 additions & 3 deletions serverlessworkflow/sdk/cron_def.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
from serverlessworkflow.sdk.hydration import Fields
from serverlessworkflow.sdk.swf_base import SwfBase


class CronDef:
class CronDef(SwfBase):
expression: str = None
validUntil: str = None

def __init__(self,
expression: str = None,
validUntil: str = None,
**kwargs):
Fields(locals(), kwargs, Fields.default_hydration).set_to_object(self)
SwfBase.__init__(self, locals(), kwargs, SwfBase.default_hydration)
19 changes: 9 additions & 10 deletions serverlessworkflow/sdk/databased_switch_state.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,21 +6,20 @@
from serverlessworkflow.sdk.default_condition_def import DefaultConditionDef
from serverlessworkflow.sdk.end_data_condition import EndDataCondition
from serverlessworkflow.sdk.error import Error
from serverlessworkflow.sdk.hydration import HydratableParameter, ComplexTypeOf, ArrayTypeOf, \
Fields
from serverlessworkflow.sdk.metadata import Metadata
from serverlessworkflow.sdk.state import State
from serverlessworkflow.sdk.state_data_filter import StateDataFilter
from serverlessworkflow.sdk.swf_base import HydratableParameter, ComplexTypeOf, ArrayTypeOf, SwfBase
from serverlessworkflow.sdk.transition_data_condition import TransitionDataCondition


class DataBasedSwitchState(State):
class DataBasedSwitchState(State, SwfBase):
id: str = None
name: str = None
type: str = None
stateDataFilter: StateDataFilter = None
timeouts: DataBasedSwitchStateTime0ut = None
dataConditions: ( [TransitionDataCondition] | [EndDataCondition]) = None
dataConditions: ([TransitionDataCondition] | [EndDataCondition]) = None
onErrors: [Error] = None
defaultCondition: DefaultConditionDef = None
compensatedBy: str = None
Expand All @@ -33,18 +32,20 @@ def __init__(self,
type: str = None,
stateDataFilter: StateDataFilter = None,
timeouts: DataBasedSwitchStateTime0ut = None,
dataConditions: ( [TransitionDataCondition] | [EndDataCondition]) = None,
dataConditions: ([TransitionDataCondition] | [EndDataCondition]) = None,
onErrors: [Error] = None,
defaultCondition: DefaultConditionDef = None,
compensatedBy: str = None,
usedForCompensation: bool = None,
metadata: Metadata = None,
**kwargs):
Fields(locals(), kwargs, DataBasedSwitchState.f_hydration).set_to_object(self)

_default_values = {'type': 'switch', 'usedForCompensation': False}
SwfBase.__init__(self, locals(), kwargs, DataBasedSwitchState.f_hydration,
_default_values)

@staticmethod
def f_hydration(p_key, p_value):

if p_key == 'stateDataFilter':
return HydratableParameter(value=p_value).hydrateAs(ComplexTypeOf(StateDataFilter))

Expand All @@ -63,13 +64,11 @@ def f_hydration(p_key, p_value):

return copy.deepcopy(p_value)


@staticmethod
def hydrate_state(v):

state = State(**v)
if hasattr(state, "transition"):
return TransitionDataCondition(**v)
if hasattr(state, "end"):
return EndDataCondition(**v)
raise Exception(f"Unexpected DataBasedSwitchState value: {v}")
raise Exception(f"Unexpected DataBasedSwitchState value: {v}")
6 changes: 3 additions & 3 deletions serverlessworkflow/sdk/databased_switch_state_timeout.py
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
import copy

from serverlessworkflow.sdk.hydration import ComplexTypeOf, HydratableParameter, Fields
from serverlessworkflow.sdk.state_exec_timeout import StateExecTimeOut
from serverlessworkflow.sdk.swf_base import ComplexTypeOf, HydratableParameter, SwfBase


class DataBasedSwitchStateTime0ut:
class DataBasedSwitchStateTime0ut(SwfBase):
stateExecTimeOut: StateExecTimeOut = None

def __init__(self,
stateExecTimeOut: StateExecTimeOut = None,
**kwargs):
Fields(locals(), kwargs, DataBasedSwitchStateTime0ut.f_hydration).set_to_object(self)
SwfBase.__init__(self, locals(), kwargs, DataBasedSwitchStateTime0ut.f_hydration)

@staticmethod
def f_hydration(p_key, p_value):
Expand Down
Loading