seddy

Multi-workflow SWF decider and workflow management service.

Classes:

ChildPolicy(*values)

Policy for child executions on parent termination.

DAGBuilder(workflow, task)

SWF decision builder from DAG-type workflow specification.

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

Dag-type SWF workflow specification.

DecisionsBuilder(workflow, task)

SWF decision builder.

Registration([active, task_timeout, ...])

Workflow registration configuration.

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

SWF workflow specification.

Functions:

load_workflows(workflows_file)

Load workflows specifications file.

class seddy.ChildPolicy(*values)[source]

Bases: Enum

Policy for child executions on parent termination.

Attributes:

ABANDON = 'ABANDON'
REQUEST_CANCEL = 'REQUEST_CANCEL'
TERMINATE = 'TERMINATE'
class seddy.DAGBuilder(workflow: DAGWorkflow, task)[source]

Bases: 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[Task], description=None)[source]

Bases: Workflow

Dag-type SWF workflow specification.

Parameters:
  • name – workflow name

  • version – workflow version

  • task_specs – DAG task specifications

Classes:

Attributes:

Methods:

setup()

Set up workflow specification.

decisions_builder

alias of DAGBuilder

dependants: Dict[None | str, List[str]]
setup()[source]

Set up workflow specification.

Useful for pre-calculation or other initialisation.

spec_type = 'dag'
class seddy.DecisionsBuilder(workflow: 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.

abstractmethod build_decisions()[source]

Build decisions from workflow history.

class seddy.Registration(active: bool = True, task_timeout: int | str = None, execution_timeout: int = None, task_list: str = None, task_priority: int = None, child_policy: 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:

Methods:

from_spec(spec)

Construct registration configuration from specification.

active: bool = True
child_policy: 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: int | str = None
class seddy.Workflow(name: str, version: str, description: str = None, registration: Registration = None)[source]

Bases: object

SWF workflow specification.

Parameters:
  • name – workflow name

  • version – workflow version

  • registration – workflow registration configuration

Attributes:

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: Type[DecisionsBuilder]
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: str
seddy.load_workflows(workflows_file: Path) List[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