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": {
...
}
}
```

PP
[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.3.tar.gz (44.0 kB view details)

Uploaded Source

Built Distribution

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

Uploaded Python 3

File details

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

File metadata

  • Download URL: aio-openapi-0.8.3.tar.gz
  • Upload date:
  • Size: 44.0 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.25.0 CPython/3.6.6

File hashes

Hashes for aio-openapi-0.8.3.tar.gz
Algorithm Hash digest
SHA256 fb17efb53671ae3f96b0faddca72a2a016e65f80e62ae06177a44b3e4c315e85
MD5 fa3c682ad6f1cbcd5bb16847479a4050
BLAKE2b-256 b9ba2b56a5911503a59b0a112119c6d9348407d32a1150f46d8f935de22a5553

See more details on using hashes here.

File details

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

File metadata

  • Download URL: aio_openapi-0.8.3-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.25.0 CPython/3.6.6

File hashes

Hashes for aio_openapi-0.8.3-py3-none-any.whl
Algorithm Hash digest
SHA256 67c12ab23dbf3b53d2604377b6f5db2d8792b07fed78f4fd9bd253cf041f8277
MD5 8f366f584bb28511645c43b3bb6c9b2c
BLAKE2b-256 a2eeb34f45ff0ca458530f39ae864b893cf7a3bf1ab21ef8b7ea594356494a7e

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