Install & Compatibility
Where this runs
tested against v2.1.4 · pip install
no network on importno background threads
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
py 3.9
✕ build_error
✕ build_error
25MB installed
● package 25MB
Code
Verified usage
Verified import paths — ran on the pinned version, not inferred.
App
✓ from asgi_tools import App
✗ from asgi_tools.app import App
App is re-exported from asgi_tools package; importing from submodule may break if internal structure changes.
Router
✓ from asgi_tools import Router
✗ from asgi_tools.routes import Router
Router is re-exported; submodule paths are not part of public API.
Minimal ASGI app with routing.
from asgi_tools import App, Request, Response
app = App()
@app.route('/')
async def home(request: Request):
return Response.text('Hello, world!')
# Run with: uvicorn module:app
Errors
Common errors & fixes
ImportError: cannot import name 'App' from 'asgi_tools'
Package not installed or wrong version (pre-2.0 had App in asgi_tools.app submodule).
fixEnsure asgi-tools>=2.0 is installed and use 'from asgi_tools import App'
RuntimeError: 'Router' object has no attribute 'route'
Using Router without App; Router is only used inside App.
fixUse app.route() or Router().route() but the typical pattern is App with .route() decorator.
Upgrade
Version history
2.1.4latest on PyPI · released May 15, 2026
Audit
Dependencies
No dependency data recorded yet.