Metadata-Version: 2.1
Name: uapi
Version: 22.1.0
Summary: A Python HTTP superframework
Author-email: Tin Tvrtkovic <tinchester@gmail.com>
Requires-Python: >=3.10
Description-Content-Type: text/markdown
Classifier: License :: OSI Approved :: Apache Software License
Requires-Dist: cattrs >= 22.2.0
Requires-Dist: incant >= 22.2.1
Requires-Dist: itsdangerous
Requires-Dist: black ; extra == "dev"
Requires-Dist: flake8 ; extra == "dev"
Requires-Dist: isort ; extra == "dev"
Requires-Dist: coverage ; extra == "dev"
Requires-Dist: pytest-asyncio ; extra == "dev"
Requires-Dist: httpx ; extra == "dev"
Requires-Dist: aiohttp ; extra == "dev"
Requires-Dist: flask ; extra == "dev"
Requires-Dist: quart ; extra == "dev"
Requires-Dist: starlette ; extra == "dev"
Requires-Dist: django ; extra == "dev"
Requires-Dist: hypercorn ; extra == "dev"
Requires-Dist: mypy==0.991 ; extra == "dev"
Requires-Dist: aioredis==1.3.1 ; extra == "dev"
Requires-Dist: uvicorn==0.20.0 ; extra == "dev"
Requires-Dist: orjson ; extra == "dev"
Requires-Dist: sphinx==5.2.3 ; extra == "dev"
Requires-Dist: furo==2022.9.29 ; extra == "dev"
Requires-Dist: myst_parser==0.18.1 ; extra == "dev"
Requires-Dist: sphinx_inline_tabs==2022.1.2b11 ; extra == "dev"
Provides-Extra: dev

# uapi

[![Build status](https://github.com/Tinche/uapi/workflows/CI/badge.svg)](https://github.com/Tinche/uapi/actions?workflow=CI)
[![codecov](https://codecov.io/gh/Tinche/uapi/branch/main/graph/badge.svg?token=XGKYSILAG4)](https://codecov.io/gh/Tinche/uapi)
[![Code style](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)

---

`uapi` is a high-level, extremely fast Python microframework for writing HTTP APIs, either synchronously or asynchronously.

```python3
from asyncio import run
from uapi.starlette import App

app = App()

@app.get("/")
async def index() -> str:
    return "Index"

run(app.run())
```

Documentation is available at https://uapi-docs.readthedocs.io/en/latest/.

`uapi` uses a lower-level HTTP framework to run. Currently supported frameworks are aiohttp, Flask, Quart, and Starlette.
An `uapi` app can be easily integrated into an existing project based on one of these frameworks, and a pure `uapi` project can be
easily switched between them when needed.

`uapi` supports OpenAPI out of the box.

```python3
from uapi.flask import App

app = App()

@app.get("/")
def index() -> str:
    return "Index"

app.serve_openapi()
app.serve_elements()

run(app.run())  # Now open http://localhost:8000/elements
```

