Skip to content

Status map and transitions validation made easy

License

Notifications You must be signed in to change notification settings

lamenezes/status-map

Repository files navigation

status-map

version-badge pyversion-badge license-badge CI-badge cov-badge

Handle status maps and status transitions easily.

How to use

Install

status-map is available on PyPI:

$ pip install status-map

Basic Usage

Define your status map by creating a dict containing all the status and its possible transitions.

E.g. we can define a task workflow as follows:

from status_map import StatusMap

status_map = StatusMap({
    'todo': ['doing'],
    'doing': ['todo', 'done'],
    'done': [],  # assuming a task once finished can't go back to other status
})

We can validate if a status transition is valid:

>> status_map.validate_transition(from_status='todo', to_status='done')
Traceback (most recent call last):
...
status_map.exceptions.TransitionNotFoundError: transition from todo to done not found

Passing an inexistent status raises an exception:

>> status_map.validate_transition('todo', 'foo')
Traceback (most recent call last):
...
status_map.exceptions.StatusNotFoundError: to status foo not found

The validation raises a different exception if the to_status has already appeared before:

>> status_map.validate_transition('done', 'todo')
Traceback (most recent call last):
...
status_map.exceptions.PastTransitionError: transition from done to todo should have happened in the past

Setting up for local development

We use poetry to manage dependencies, so make sure you have it installed.

Roll up your virtual enviroment using your favorite tool and install development dependencies:

$ poetry install

Install pre-commit hooks:

$ pre-commit install

Run tests by evoking pytest:

$ pytest

That's it! You're ready from development.

About

Status map and transitions validation made easy

Resources

License

Stars

Watchers

Forks

Packages

No packages published