Skip to main content

Minimal OpenAPI asynchronous server application

Project description

Home-page: https://github.com/lendingblock/aio-openapi
Maintainer-email: admin@lendingblock.com
License: BSD
Project-URL: CI: circleci, https://circleci.com/gh/lendingblock/aio-openapi
Project-URL: Coverage: codecov, https://codecov.io/gh/lendingblock/aio-openapi
Project-URL: GitHub: issues, https://github.com/lendingblock/aio-openapi/issues
Project-URL: GitHub: repo, https://github.com/lendingblock/aio-openapi
Description: # aio-openapi

[![PyPI version](https://badge.fury.io/py/aio-openapi.svg)](https://badge.fury.io/py/aio-openapi)

[![CircleCI](https://circleci.com/gh/lendingblock/aio-openapi.svg?style=svg)](https://circleci.com/gh/lendingblock/aio-openapi)

[![codecov](https://codecov.io/gh/lendingblock/aio-openapi/branch/master/graph/badge.svg)](https://codecov.io/gh/lendingblock/aio-openapi)

Asynchronous web middleware for Rest APIs with PostgreSql Database.

## Installation
```
pip install aio-openapi
```

## Development

Clone the repository and create a virtual environment `venv`.

Install dependencies by running the install script
```
./dev/install.sh
```
To run tests
```
pytest --cov
```

## Features

* Asynchronous web routes with [aiohttp][]
* Data validation, serialization and unserialization with python [dataclasses][]
* [OpenApi](https://www.openapis.org/) v 3 auto documentation
* [SqlAlchemy](https://www.sqlalchemy.org/) expression language
* Asynchronous DB interaction with [asyncpg][]
* Migrations with [alembic][]
* SqlAlchemy tables as python [dataclasses][]

## Websockets

This library provides a simple distributed websocket utility for creating
websocket remote procedure calls (RPC) and pub/sub.
```python
from aiohttp import web

from openapi.ws import Sockets

app = web.Application()
...
app['web_sockets'] = Sockets(app)
```
### RPC protocol

The RPC protocol has the following structure for incoming messages
```
{
"id": "abc",
"method": "rpc_method_name":
"payload": {
...
}
}
```
The ``id`` is used by clients to link the request with the corresponding response.
The response for an RPC call is eitrher a success
```
{
"id": "abc",
"method": "rpc_method_name":
"result": {
...
}
}
```
or error
```
{
"id": "abc",
"method": "rpc_method_name":
"error": {
...
}
}
```
### Publish/Subscribe

To subscribe to messages, one need to use the ``Subscribe`` mixin with the subscribe RPC handler.
Messages take the form:
```
{
"channel": "channel_name",
"event": "event_name":
"data": {
...
}
}
```

[aiohttp]: https://aiohttp.readthedocs.io/en/stable/
[asyncpg]: https://github.com/MagicStack/asyncpg
[dataclasses]: https://docs.python.org/3/library/dataclasses.html
[alembic]: http://alembic.zzzcomputing.com/en/latest/

Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Web Environment
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: BSD License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Topic :: Utilities
Requires-Python: >=3.6.0
Description-Content-Type: text/markdown

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

aio-openapi-0.8.5.tar.gz (43.9 kB view details)

Uploaded Source

Built Distribution

aio_openapi-0.8.5-py3-none-any.whl (40.8 kB view details)

Uploaded Python 3

File details

Details for the file aio-openapi-0.8.5.tar.gz.

File metadata

  • Download URL: aio-openapi-0.8.5.tar.gz
  • Upload date:
  • Size: 43.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/40.2.0 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/3.6.6

File hashes

Hashes for aio-openapi-0.8.5.tar.gz
Algorithm Hash digest
SHA256 537d00f1c38e6ae4fbb4eaa8f6e2e44f3fe2e0f3a10770be41633eb9c21f2a98
MD5 2dff527ba9b284a42388359547c6da89
BLAKE2b-256 e467d09af757379b1196d12b60c7ec3abeaa7925944187c9253865c6f548463e

See more details on using hashes here.

File details

Details for the file aio_openapi-0.8.5-py3-none-any.whl.

File metadata

  • Download URL: aio_openapi-0.8.5-py3-none-any.whl
  • Upload date:
  • Size: 40.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/40.2.0 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/3.6.6

File hashes

Hashes for aio_openapi-0.8.5-py3-none-any.whl
Algorithm Hash digest
SHA256 4b8d257133b0ec799d9b9eaa7a833c6c4bef74759bea44da3a56ffd81eace514
MD5 c174766971ea071b5e94c89d3a09e9ba
BLAKE2b-256 b6c7132ef9cc46937c530b6de214fc91fd43a57c7cdeaddfa1166428b7e850d2

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page