## plumpy
<img src="https://github.com/aiidateam/plumpy/blob/master/docs/source/_static/logo.svg" width="64px" height="auto">
[![Build status][github-ci]][github-link]
[![Docs status][rtd-badge]][rtd-link]
[![Latest Version][pypi-badge]][pypi-link]
[![PyVersions][pyversions-badge]][pyversions-link]
[![License][license-badge]][license-link]
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](https://pypi.org/project/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.
## Installation
```bash
pip install plumpy
```
or
```bash
conda install -c conda-forge plumpy
```
## Development
This package utilises [tox](https://tox.readthedocs.io) for unit test automation, and [pre-commit](https://pre-commit.com/) for code style formatting and test automation.
To install these development dependencies:
```bash
pip install tox pre-commit
```
To run the unit tests:
```bash
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`](test/rmq/docker-compose.yml).
To run the pre-commit tests:
```bash
pre-commit run --all
```
To build the documentation:
```bash
tox -e docs-clean
```
Changes should be submitted as Pull Requests (PRs) to the `develop` branch.
## Publishing Releases
1. Create a release PR/commit to the `develop` branch, updating `plumpy/version.py` and `CHANGELOG.md`.
2. Fast-forward merge `develop` into the `master` branch
3. Create a release on GitHub (<https://github.com/aiidateam/plumpy/releases/new>), pointing to the release commit on `master`, named `v.X.Y.Z` (identical to version in `plumpy/version.py`)
4. 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)
[github-ci]: https://github.com/aiidateam/plumpy/workflows/continuous-integration/badge.svg?branch=develop&event=push
[github-link]: https://github.com/aiidateam/plumpy/actions
[rtd-badge]: https://readthedocs.org/projects/plumpy/badge
[rtd-link]: http://plumpy.readthedocs.io/
[pypi-badge]: https://img.shields.io/pypi/v/plumpy.svg
[pypi-link]: https://pypi.python.org/pypi/plumpy/
[pyversions-badge]: https://img.shields.io/pypi/pyversions/plumpy.svg
[pyversions-link]: https://pypi.python.org/pypi/plumpy/
[license-badge]: https://img.shields.io/pypi/l/plumpy.svg
[license-link]: https://pypi.python.org/pypi/plumpy/
Raw data
{
"_id": null,
"home_page": null,
"name": "plumpy",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.9",
"maintainer_email": null,
"keywords": "workflow, multithreaded, rabbitmq",
"author": "Sebastiaan Huber, Jason Yu, Leopold Talirz, Dominik Gresch",
"author_email": "Martin Uhrin <martin.uhrin@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/48/7d/c8070abc7d982b7c0b3cbf195f20922c2fc40cb69e44052867f09a9fd356/plumpy-0.25.1.tar.gz",
"platform": null,
"description": "## plumpy\n\n<img src=\"https://github.com/aiidateam/plumpy/blob/master/docs/source/_static/logo.svg\" width=\"64px\" height=\"auto\">\n\n[![Build status][github-ci]][github-link]\n[![Docs status][rtd-badge]][rtd-link]\n[![Latest Version][pypi-badge]][pypi-link]\n[![PyVersions][pyversions-badge]][pyversions-link]\n[![License][license-badge]][license-link]\n\nA python workflows library that supports writing Processes with a well defined set of inputs and outputs that can be\nstrung together.\n\nRabbitMQ is used to queue up, control and monitor running processes via the\n[kiwipy](https://pypi.org/project/kiwipy/) library.\n\nFeatures:\n\n* Processes can be remotely controlled by sending messages over RabbitMQ all from a simple interface\n* Progress can be saved between steps and continued later\n* Optional explicit specification of inputs and outputs including their types, validation functions, help strings, etc.\n\n## Installation\n\n```bash\npip install plumpy\n```\n\nor\n\n```bash\nconda install -c conda-forge plumpy\n```\n\n## Development\n\nThis package utilises [tox](https://tox.readthedocs.io) for unit test automation, and [pre-commit](https://pre-commit.com/) for code style formatting and test automation.\n\nTo install these development dependencies:\n\n```bash\npip install tox pre-commit\n```\n\nTo run the unit tests:\n\n```bash\ntox\n```\n\nFor the `rmq` tests you will require a running instance of RabbitMQ.\nOne way to achieve this is using Docker and launching [`test/rmq/docker-compose.yml`](test/rmq/docker-compose.yml).\n\nTo run the pre-commit tests:\n\n```bash\npre-commit run --all\n```\n\nTo build the documentation:\n\n```bash\ntox -e docs-clean\n```\n\nChanges should be submitted as Pull Requests (PRs) to the `develop` branch.\n\n## Publishing Releases\n\n1. Create a release PR/commit to the `develop` branch, updating `plumpy/version.py` and `CHANGELOG.md`.\n2. Fast-forward merge `develop` into the `master` branch\n3. Create a release on GitHub (<https://github.com/aiidateam/plumpy/releases/new>), pointing to the release commit on `master`, named `v.X.Y.Z` (identical to version in `plumpy/version.py`)\n4. 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>).\n\n(if the release fails, delete the release and tag)\n\n[github-ci]: https://github.com/aiidateam/plumpy/workflows/continuous-integration/badge.svg?branch=develop&event=push\n[github-link]: https://github.com/aiidateam/plumpy/actions\n[rtd-badge]: https://readthedocs.org/projects/plumpy/badge\n[rtd-link]: http://plumpy.readthedocs.io/\n[pypi-badge]: https://img.shields.io/pypi/v/plumpy.svg\n[pypi-link]: https://pypi.python.org/pypi/plumpy/\n[pyversions-badge]: https://img.shields.io/pypi/pyversions/plumpy.svg\n[pyversions-link]: https://pypi.python.org/pypi/plumpy/\n[license-badge]: https://img.shields.io/pypi/l/plumpy.svg\n[license-link]: https://pypi.python.org/pypi/plumpy/\n",
"bugtrack_url": null,
"license": null,
"summary": "A Python workflow library.",
"version": "0.25.1",
"project_urls": {
"Documentation": "https://plumpy.readthedocs.io",
"Home": "https://github.com/aiidateam/plumpy",
"Source": "https://github.com/aiidateam/plumpy"
},
"split_keywords": [
"workflow",
" multithreaded",
" rabbitmq"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "400cda0466ba48d90cc019dc1eff70e334bf26cedc9b6e98912a446ab2026fa9",
"md5": "2a15547be00f827a68bc2c350e5c7de6",
"sha256": "ed87af123ad68a5e235c894011df1b3a15e1aaa6eb59a2d71941210224e16d43"
},
"downloads": -1,
"filename": "plumpy-0.25.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "2a15547be00f827a68bc2c350e5c7de6",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.9",
"size": 75207,
"upload_time": "2025-10-22T11:30:30",
"upload_time_iso_8601": "2025-10-22T11:30:30.952115Z",
"url": "https://files.pythonhosted.org/packages/40/0c/da0466ba48d90cc019dc1eff70e334bf26cedc9b6e98912a446ab2026fa9/plumpy-0.25.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "487dc8070abc7d982b7c0b3cbf195f20922c2fc40cb69e44052867f09a9fd356",
"md5": "6abb09954b1689b9f926771292e4360a",
"sha256": "395435ce20eb11be55edca1ee5d07cfe29b4cf25c6a1a5a0964b6de4c7628fd9"
},
"downloads": -1,
"filename": "plumpy-0.25.1.tar.gz",
"has_sig": false,
"md5_digest": "6abb09954b1689b9f926771292e4360a",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9",
"size": 209073,
"upload_time": "2025-10-22T11:30:32",
"upload_time_iso_8601": "2025-10-22T11:30:32.473094Z",
"url": "https://files.pythonhosted.org/packages/48/7d/c8070abc7d982b7c0b3cbf195f20922c2fc40cb69e44052867f09a9fd356/plumpy-0.25.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-10-22 11:30:32",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "aiidateam",
"github_project": "plumpy",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "plumpy"
}