Skip to content

Latest commit

 

History

History
112 lines (64 loc) · 2.73 KB

README.rst

File metadata and controls

112 lines (64 loc) · 2.73 KB

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.