Skip to main content

Type-safe step composition. It's a safetydance!

Project description

safetydance is a Python framework for defining type-safe and flexibly composable application steps with a shared execution context for sharing variables between the steps. The design of safetydance is partially inspired by


safetydance defines a set of decorators that rewrite functions as steps and scripts.

A step should be a function with a name that reads easily, like a short phrase or sentence. Steps may take arguments and they may access variables defined for the “context scope”. Steps may call other steps, too.

A script is a function composing the execution of a series of steps. A script is a step that defines an execution context. Scripts may also call other scripts. The primary difference between a script and a step is the implicit definition of the execution context. TODO When a script calls another script the current execution context may be passed as a kwarg to the nested script; by default all scripts execute in their own execution context; that is, if a step is used by both an originating and a nested script the context variables it accesses are determined by the calling script’s execution context.

Context Scope Variables

A context scope variable is sort of like a global variable. The run of a script defines a context where context_data variables are stored for access by steps.

Think of a conversation between two friends. Much of the conversation will reference assumed shared knowledge, or context. For safetydance, the context scope provides a way for steps to share assumed context to make it possible to provide a more conversational style of programming

Future Work

  • Mypy extension to validate scripts. For example, prove that a script shouldn’t fail due to missing context_data for any step in the script.
  • Dry run execution of steps
  • DAG derivation for scripts
  • Parallel evaluation for independent up to a join for DAG legs of a script.
  • Diagram output for script DAGs.

Setup for Development

Run python develop. Preferably, use conda or another virtual environment.


This project has been set up using PyScaffold 3.2. For details and usage information on PyScaffold see

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

safetydance-0.2.1.tar.gz (25.1 kB view hashes)

Uploaded source

Built Distribution

safetydance-0.2.1-py2.py3-none-any.whl (6.7 kB view hashes)

Uploaded py2 py3

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Huawei Huawei PSF Sponsor Microsoft Microsoft PSF Sponsor NVIDIA NVIDIA PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page