seddy

Multi-workflow SWF decider and workflow management service.

Classes:

ChildPolicy

Policy for child executions on parent termination.

Registration([active, task_timeout, …])

Workflow registration configuration.

DecisionsBuilder(workflow, task)

SWF decision builder.

Workflow(name, version[, description, …])

SWF workflow specification.

DAGBuilder(workflow, task)

SWF decision builder from DAG-type workflow specification.

DAGWorkflow(name, version, task_specs[, …])

Dag-type SWF workflow specification.

Functions:

load_workflows(workflows_file)

Load workflows specifications file.

class seddy.ChildPolicy[source]

Bases: enum.Enum

Policy for child executions on parent termination.

Attributes:

ABANDON

REQUEST_CANCEL

TERMINATE

ABANDON = 'ABANDON'
REQUEST_CANCEL = 'REQUEST_CANCEL'
TERMINATE = 'TERMINATE'
class seddy.Registration(active: bool = True, task_timeout: Union[int, str] = None, execution_timeout: int = None, task_list: str = None, task_priority: int = None, child_policy: seddy._specs._base.ChildPolicy = None, lambda_role: str = None)[source]

Bases: object

Workflow registration configuration.

Parameters
  • active – registration status, False for deprecated

  • task_timeout – default decision task time-out (seconds), or “NONE” for unlimited

  • execution_timeout – default workflow execution time-out (seconds)

  • task_list – default decision task-list

  • task_priority – default decision task priority

  • child_policy – default policy for child executions upon parent execution termination

  • lambda_role – default IAM role for Lambda access

Attributes:

active

child_policy

execution_timeout

lambda_role

task_list

task_priority

task_timeout

Methods:

from_spec(spec)

Construct registration configuration from specification.

active: bool = True
child_policy: seddy._specs._base.ChildPolicy = None
execution_timeout: int = None
classmethod from_spec(spec: Dict[str, Any])[source]

Construct registration configuration from specification.

Parameters

spec – workflow registration configuration specification

lambda_role: str = None
task_list: str = None
task_priority: int = None
task_timeout: Union[int, str] = None
class seddy.DecisionsBuilder(workflow: seddy._specs._base.Workflow, task: Dict[str, Any])[source]

Bases: object

SWF decision builder.

Parameters
  • workflow – workflow specification

  • task – decision task

Methods:

build_decisions()

Build decisions from workflow history.

abstract build_decisions()[source]

Build decisions from workflow history.

class seddy.Workflow(name: str, version: str, description: str = None, registration: seddy._specs._base.Registration = None)[source]

Bases: object

SWF workflow specification.

Parameters
  • name – workflow name

  • version – workflow version

  • registration – workflow registration configuration

Attributes:

decisions_builder

spec_type

Methods:

from_spec(spec)

Construct workflow type from specification.

make_decisions(task)

Build decisions from workflow history.

setup()

Set up workflow specification.

abstract property decisions_builder
classmethod from_spec(spec: Dict[str, Any])[source]

Construct workflow type from specification.

Parameters

spec – workflow specification

make_decisions(task: Dict[str, Any]) → List[Dict[str, Any]][source]

Build decisions from workflow history.

Parameters

task – decision task

Returns

workflow decisions

setup()[source]

Set up workflow specification.

Useful for pre-calculation or other initialisation.

abstract property spec_type
class seddy.DAGBuilder(workflow: seddy._specs._dag.DAGWorkflow, task)[source]

Bases: seddy._specs._base.DecisionsBuilder

SWF decision builder from DAG-type workflow specification.

Methods:

build_decisions()

Build decisions from workflow history.

build_decisions()[source]

Build decisions from workflow history.

class seddy.DAGWorkflow(name, version, task_specs: List[seddy._specs._dag.Task], description=None)[source]

Bases: seddy._specs._base.Workflow

Dag-type SWF workflow specification.

Parameters
  • name – workflow name

  • version – workflow version

  • task_specs – DAG task specifications

Classes:

decisions_builder

alias of DAGBuilder

Attributes:

seddy.DAGWorkflow.dependants

spec_type

Methods:

setup()

Set up workflow specification.

decisions_builder

alias of DAGBuilder Methods:

build_decisions()

Build decisions from workflow history.

dependants: t.Dict[t.Union[None, str], t.List[str]] = None
setup()[source]

Set up workflow specification.

Useful for pre-calculation or other initialisation.

spec_type = 'dag'
seddy.load_workflows(workflows_file: pathlib.Path) → List[seddy._specs._base.Workflow][source]

Load workflows specifications file.

Determines load method from the file suffix. Supported file types:

  • JSON

  • YAML

Parameters

workflows_file – workflows specifications file path

Returns

workflows specifications