## 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.8",
"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/d9/0c/0bb568982e461f5e428606ccbdfe6d43c11dab0e3f5a8090298feb321172/plumpy-0.24.0.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.24.0",
"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": "99d368c83d4774f7a4f8e8dd4e30ce34e46071706a4b4dc40d3a1ad77de793fc",
"md5": "df3d6da9b234f5b3f089aec626245ac4",
"sha256": "09efafe97c88c8928e73f1dc08cf02a2c4737fa767920bff23dfa26226252cc6"
},
"downloads": -1,
"filename": "plumpy-0.24.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "df3d6da9b234f5b3f089aec626245ac4",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 74955,
"upload_time": "2025-01-09T12:01:54",
"upload_time_iso_8601": "2025-01-09T12:01:54.482038Z",
"url": "https://files.pythonhosted.org/packages/99/d3/68c83d4774f7a4f8e8dd4e30ce34e46071706a4b4dc40d3a1ad77de793fc/plumpy-0.24.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "d90c0bb568982e461f5e428606ccbdfe6d43c11dab0e3f5a8090298feb321172",
"md5": "7dd5a2fd6fcc596e29865eb8ed8f3055",
"sha256": "c17c8efbd124d7f5ec2f27cb1f2c3de7901143e61551ce81f3ee22bf7e2ed42d"
},
"downloads": -1,
"filename": "plumpy-0.24.0.tar.gz",
"has_sig": false,
"md5_digest": "7dd5a2fd6fcc596e29865eb8ed8f3055",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 75634,
"upload_time": "2025-01-09T12:01:57",
"upload_time_iso_8601": "2025-01-09T12:01:57.712743Z",
"url": "https://files.pythonhosted.org/packages/d9/0c/0bb568982e461f5e428606ccbdfe6d43c11dab0e3f5a8090298feb321172/plumpy-0.24.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-01-09 12:01:57",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "aiidateam",
"github_project": "plumpy",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "plumpy"
}