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 plumpyor
conda install -c conda-forge plumpyThis 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-commitTo run the unit tests:
toxFor 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 --allTo build the documentation:
tox -e docs-cleanChanges should be submitted as Pull Requests (PRs) to the develop branch.
- Create a release PR/commit to the
developbranch, updatingplumpy/version.pyandCHANGELOG.md. - Fast-forward merge
developinto themasterbranch - 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-deploymentGitHub 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)