Metadata-Version: 2.4
Name: aio-fluid
Version: 2.1.1
Summary: Tools for backend python services
Project-URL: Documentation, https://fluid.quantmind.com/
Project-URL: Repository, https://github.com/quantmind/aio-fluid
Project-URL: Issues, https://github.com/quantmind/aio-fluid/issues
Author-email: Luca Sbardella <luca@quantmind.com>
License-Expression: BSD-3-Clause
License-File: LICENSE
Keywords: async,asyncio,task-queue,task-scheduler,workers
Classifier: Development Status :: 5 - Production/Stable
Classifier: Framework :: AsyncIO
Classifier: Intended Audience :: Developers
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Requires-Python: <4.0,>=3.11
Requires-Dist: fastapi>=0.135.2
Requires-Dist: inflection>=0.5.1
Requires-Dist: pydantic>=2.12.5
Requires-Dist: redis[hiredis]>=7.4.0
Requires-Dist: typing-extensions>=4.12.2
Requires-Dist: uvicorn>=0.42.0
Requires-Dist: yarl>=1.23.0
Provides-Extra: cli
Requires-Dist: click>=8.1.7; extra == 'cli'
Requires-Dist: pydanclick>=0.5.0; extra == 'cli'
Requires-Dist: rich>=13.7.1; extra == 'cli'
Provides-Extra: console
Requires-Dist: aioconsole>=0.8.2; extra == 'console'
Provides-Extra: db
Requires-Dist: alembic>=1.18.4; extra == 'db'
Requires-Dist: asyncpg>=0.30.0; extra == 'db'
Requires-Dist: click>=8.1.7; extra == 'db'
Requires-Dist: psycopg2-binary>=2.9.9; extra == 'db'
Requires-Dist: python-dateutil>=2.9.0; extra == 'db'
Requires-Dist: sqlalchemy-utils>=0.41.2; extra == 'db'
Requires-Dist: sqlalchemy>=2.0.23; extra == 'db'
Provides-Extra: dev
Requires-Dist: black>=26.1.0; extra == 'dev'
Requires-Dist: ipython>=9.10.0; extra == 'dev'
Requires-Dist: isort>=8.0.1; extra == 'dev'
Requires-Dist: mypy>=1.20.0; extra == 'dev'
Requires-Dist: pytest-asyncio>=1.3.0; extra == 'dev'
Requires-Dist: pytest-cov>=7.0.0; extra == 'dev'
Requires-Dist: pytest>=9.0.2; extra == 'dev'
Requires-Dist: python-dotenv>=1.0.1; extra == 'dev'
Requires-Dist: ruff>=0.15.4; extra == 'dev'
Requires-Dist: types-python-dateutil>=2.9.0.20240316; extra == 'dev'
Requires-Dist: types-redis>=4.6.0.3; extra == 'dev'
Provides-Extra: docs
Requires-Dist: griffe-pydantic>=1.1.0; extra == 'docs'
Requires-Dist: griffe-typingdoc>=0.3.1; extra == 'docs'
Requires-Dist: mkdocs-macros-plugin>=1.3.7; extra == 'docs'
Requires-Dist: mkdocs-material>=9.7.0; extra == 'docs'
Requires-Dist: mkdocs-redirects>=1.2.1; extra == 'docs'
Requires-Dist: mkdocstrings[python]>=1.0.3; extra == 'docs'
Provides-Extra: http
Requires-Dist: aiohttp>=3.10.10; extra == 'http'
Requires-Dist: httpx>=0.28.1; extra == 'http'
Requires-Dist: prometheus-client>=0.21.0; extra == 'http'
Requires-Dist: python-slugify>=8.0.4; extra == 'http'
Provides-Extra: k8s
Requires-Dist: kubernetes-asyncio>=32.0.0; extra == 'k8s'
Requires-Dist: kubernetes>=32.0.0; extra == 'k8s'
Requires-Dist: python-slugify>=8.0.4; extra == 'k8s'
Provides-Extra: log
Requires-Dist: python-json-logger>=3.2.1; extra == 'log'
Description-Content-Type: text/markdown

Aio Fluid

Async utilities for backend python services developed by [Quantmind](https://quantmind.com).

[![PyPI version](https://badge.fury.io/py/aio-fluid.svg)](https://badge.fury.io/py/aio-fluid)
[![Python versions](https://img.shields.io/pypi/pyversions/aio-fluid.svg)](https://pypi.org/project/aio-fluid)
[![Python downloads](https://img.shields.io/pypi/dm/aio-fluid.svg)](https://pypi.org/project/aio-fluid)
[![build](https://github.com/quantmind/fluid/workflows/build/badge.svg)](https://github.com/quantmind/aio-fluid/actions?query=workflow%3Abuild)
[![codecov](https://codecov.io/gh/quantmind/aio-fluid/graph/badge.svg?token=81oWUoyEVp)](https://codecov.io/gh/quantmind/aio-fluid)

**Documentation**: [fluid.quantmind.com](https://fluid.quantmind.com/)

**Source Code**: [github.com/quantmind/aio-fluid](https://github.com/quantmind/aio-fluid)


## Features

- **Async workers**: workers with start/stop capabilities.
- **Async tasks scheduler and consumer**: A task scheduler and consumer for async and CPU bound tasks.
- **Async CRUD database operations**: An async CRUD interface for postgres databases.

## Installation

This is a python package you can install via pip:

```
pip install aio-fluid
```

To install all the dependencies:

```
pip install aio-fluid[cli, db, http, log, k8s]
```
this includes the following extra dependencies:

- `cli` for the command line interface using [click](https://click.palletsprojects.com/) and [rich](https://github.com/Textualize/rich)
- `db` for database support with [asyncpg](https://github.com/MagicStack/asyncpg) and [sqlalchemy](https://www.sqlalchemy.org/)
- `http` for http client support with [httpx](https://www.python-httpx.org/) and [aiohttp](https://docs.aiohttp.org/en/stable/)
- `log` for JSON logging support with [python-json-logger](https://github.com/madzak/python-json-logger)
- `k8s` for Kubernetes support for CPU bound tasks

## Development

You can run the examples via

```
uv run python -m examples
```

We use [uv](https://uv.run/) as a development tool to run the examples and tests, but you can also use python directly if that's your preference.

## License

This project is licensed under the BSD License - see the [LICENSE](https://github.com/quantmind/aio-fluid/blob/main/LICENSE) file for details.
