Auto-discovering OpenAPI documentation for aiohttp.
Project description
aiohttp-autodocs
A zero-overhead, non-invasive OpenAPI 3.1.0 documentation generator for aiohttp.
It gives you the beautiful Swagger UI and Pydantic integration of modern frameworks (like FastAPI), but preserves the raw, unhindered speed and stability of bare aiohttp.
Design Philosophy
This package was built with a specific set of architectural goals in mind to ensure it remains safe and performant in production environments:
-
Absolute Zero Runtime Overhead Many OpenAPI solutions intercept every HTTP request at runtime to perform validation and dependency injection, adding CPU overhead to every API call.
aiohttp-autodocsoperates entirely at boot time. It builds the OpenAPI spec once, freezes it to raw bytes in memory, and steps out of the way. When a user hits an endpoint, the decorator does absolutely nothing. -
Native Pydantic v2 Support If your project uses modern
pydantic(orsqlmodel), you shouldn't have to rewrite your schemas into another validation library just to generate documentation. Our package natively understands Pydantic v2 (including nested$defs), while degrading gracefully to raw Python dictionaries if Pydantic isn't installed. -
Non-Invasive Architecture We don't force you to use Class-Based Views or wrap your handlers so heavily that you lose access to the raw
web.Requestobject. Your routes remain pureaiohttpasync functions. -
No YAML-in-Docstrings Older tools rely on writing OpenAPI YAML directly inside your Python function docstrings. This is error-prone, hard to format, and invisible to IDE type-checkers. We use a strongly typed Python decorator (
@docs()) so your IDE catches mistakes instantly.
Installation
# If you want Pydantic support
pip install aiohttp-autodocs[pydantic]
# If you only want raw dictionary schemas
pip install aiohttp-autodocs
Quick Start
1. Decorate your routes
The @docs decorator attaches metadata to your handler. It must be placed above the aiohttp route decorator.
from aiohttp import web
from aiohttp_autodocs import docs
from pydantic import BaseModel
class AlarmSchema(BaseModel):
id: int
message: str
alarm_routes = web.RouteTableDef()
@docs(
summary="List all alarms",
tags=["Alarms"],
response=AlarmSchema,
response_list=True,
security=["BearerAuth"]
)
@alarm_routes.get("/api/v1/alarms")
async def get_alarms(request: web.Request) -> web.Response:
return web.json_response([{"id": 1, "message": "High CPU"}])
2. Build the spec at startup
In your application factory (e.g., create_app()), call build_openapi after you've added all your routes.
from aiohttp_autodocs import build_openapi, OpenAPIConfig
app = web.Application()
app.add_routes(alarm_routes)
build_openapi(
app,
OpenAPIConfig(
title="My API",
version="1.0.0",
enabled=True,
security_schemes={
"BearerAuth": {
"type": "http",
"scheme": "bearer",
"bearerFormat": "JWT",
}
}
),
alarm_routes # Pass all your RouteTableDefs here
)
web.run_app(app)
3. View your docs
Start your server and visit:
- Interactive Swagger UI:
http://localhost:8080/docs - Raw OpenAPI JSON:
http://localhost:8080/openapi.json
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file aiohttp_autodocs-0.1.0.tar.gz.
File metadata
- Download URL: aiohttp_autodocs-0.1.0.tar.gz
- Upload date:
- Size: 10.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7671ec3b78aaa5d23251735b3b3c06bcb9d521bdaf1936e85cb3d2be527768da
|
|
| MD5 |
870508b3bfde4d98356dae0fe86b4444
|
|
| BLAKE2b-256 |
3b0d9e7d31c445559b2003ef93ced17c86a62d30460f35d921bbcfc28324eeed
|
File details
Details for the file aiohttp_autodocs-0.1.0-py3-none-any.whl.
File metadata
- Download URL: aiohttp_autodocs-0.1.0-py3-none-any.whl
- Upload date:
- Size: 13.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f97d76f9f150d10057fc09aeca3e676a761b04b339dac62ee11d137b3e7bf78c
|
|
| MD5 |
73d6cc1179f2911dac8af66c52f03967
|
|
| BLAKE2b-256 |
5c5c22d70baba0193febbf49d97f953679239b2e9afee437e5d75fb506333a76
|