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

Uploaded Source

Built Distribution

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

Uploaded Python 3

File details

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

File metadata

  • Download URL: aio-openapi-0.8.4.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.26.0 CPython/3.6.6

File hashes

Hashes for aio-openapi-0.8.4.tar.gz
Algorithm Hash digest
SHA256 1aff99e87776559e7e60f29eb2570cc2a45dbfb603031014db24513ff7dfa4a8
MD5 5d764c393feb34308f7bdd5d5be05e80
BLAKE2b-256 ce692161756a32330dcaa5469a3309ad5a4dd3f3150e638f4f1ae7ea9ba75b9f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: aio_openapi-0.8.4-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.4-py3-none-any.whl
Algorithm Hash digest
SHA256 ddd39c324687b324509a5a524ae5918e570a1dd72724d349a7cf44f77cb8c82a
MD5 01bc249ab784b50c52979fdebfe9a7c7
BLAKE2b-256 904bfb19bb4f38d2935971c6371d4397954a57be1e4af6f4da9617a621c90d84

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