semvec/pypi-packages huggingface dataset:
safetydance-test 0.2.0
A testing framework built upon the typesafe composition of steps.
License: MIT
Requires Python: >=3.7,<4.0

# safetydance_test

A [`safetydance`](https://cucumber.io/docs/bdd/) library of steps for testing in a [BDD](https://cucumber.io/docs/bdd/) style.

## Example

```python
@scripted_test
def test_something():
    Given.some_pre_condition()
    When.something_is_done()
    Then.some_post_condition_is_satisfied()
```
safetydance 0.3.2
A typesafe system for defining and composing steps.
License: MIT
Requires Python: >=3.7,<4.0

# safetydance

`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 `<https://cucumber.io>`_.


## Description

`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

```bash
poetry install
```