A python workflows library that supports writing Processes with a well defined set of inputs and outputs that can be strung together.
RabbitMQ is used to queue up, control and monitor running processes via the kiwipy library.
Features:
- Processes can be remotely controlled by sending messages over RabbitMQ all from a simple interface
- Progress can be saved between steps and continued later
- Optional explicit specification of inputs and outputs including their types, validation functions, help strings, etc.
pip install plumpy
or
conda install -c conda-forge plumpy
This package utilises tox for unit test automation, and pre-commit for code style formatting and test automation.
To install these development dependencies:
pip install tox pre-commit
To run the unit tests:
tox
For the rmq
tests you will require a running instance of RabbitMQ.
One way to achieve this is using Docker and launching test/rmq/docker-compose.yml
.
To run the pre-commit tests:
pre-commit run --all
To build the documentation:
tox -e docs-clean
Changes should be submitted as Pull Requests (PRs) to the develop
branch.
- Create a release PR/commit to the
develop
branch, updatingplumpy/version.py
andCHANGELOG.md
. - Fast-forward merge
develop
into themaster
branch - Create a release on GitHub (https://github.com/aiidateam/plumpy/releases/new), pointing to the release commit on
master
, namedv.X.Y.Z
(identical to version inplumpy/version.py
) - This will trigger the
continuous-deployment
GitHub workflow which, if all tests pass, will publish the package to PyPi. Check this has successfully completed in the GitHub Actions tab (https://github.com/aiidateam/plumpy/actions).
(if the release fails, delete the release and tag)