Metadata-Version: 2.1
Name: plumpy
Version: 0.21.0
Summary: A Python workflow library.
Keywords: workflow,multithreaded,rabbitmq
Author: Sebastiaan Huber, Jason Yu, Leopold Talirz, Dominik Gresch
Author-email: Martin Uhrin <martin.uhrin@gmail.com>
Requires-Python: >=3.7
Description-Content-Type: text/markdown
Classifier: Development Status :: 5 - Production/Stable
Classifier: License :: OSI Approved :: MIT License
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Requires-Dist: aio-pika~=6.6
Requires-Dist: kiwipy[rmq]~=0.7.4
Requires-Dist: nest_asyncio~=1.5
Requires-Dist: pyyaml~=5.4
Requires-Dist: ipython~=7.0 ; extra == "docs"
Requires-Dist: jinja2==2.11.3 ; extra == "docs"
Requires-Dist: markupsafe==2.0.1 ; extra == "docs"
Requires-Dist: myst-nb~=0.11.0 ; extra == "docs"
Requires-Dist: sphinx~=3.2.0 ; extra == "docs"
Requires-Dist: sphinx-book-theme~=0.0.39 ; extra == "docs"
Requires-Dist: mypy==0.790 ; extra == "pre-commit"
Requires-Dist: pre-commit~=2.2 ; extra == "pre-commit"
Requires-Dist: pylint==2.12.2 ; extra == "pre-commit"
Requires-Dist: ipykernel==6.12.1 ; extra == "tests"
Requires-Dist: pytest==6.2.5 ; extra == "tests"
Requires-Dist: pytest-asyncio==0.16.0 ; extra == "tests"
Requires-Dist: pytest-cov==3.0.0 ; extra == "tests"
Requires-Dist: pytest-notebook==0.7.0 ; extra == "tests"
Requires-Dist: shortuuid==1.0.8 ; extra == "tests"
Project-URL: Documentation, https://plumpy.readthedocs.io
Project-URL: Home, https://github.com/aiidateam/plumpy
Project-URL: Source, https://github.com/aiidateam/plumpy
Provides-Extra: docs
Provides-Extra: pre-commit
Provides-Extra: tests

# plumpy

[![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/

