You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
feat: Python server adapter for FastAPI and Django #379
The Python adapter is live at https://github.com/fells-code/seamless-auth-python. It ships as one distribution, seamless-auth, installed as seamless-auth[fastapi] or seamless-auth[django], and supports Python 3.11+ and Django 5.2+.
Unit tests on Python 3.11, 3.12, 3.13 and 3.14 (137 tests against a fake auth API). 3.11 runs Django 5.2 LTS and the others run Django 6.1.
Conformance: the FastAPI and Django reference apps in conformance/ each pass the seamless-cli adapter suite, 25 of 25. Locally each also passed three runs in a row.
Published to PyPI: release-please has opened the v0.1.0 release PR, and merging it publishes through PyPI trusted publishing
The design follows the Rust adapter, including its two hardenings: request bodies must be JSON (415 otherwise), and the guard runs the cross-site check for cookie sessions. A security review before publishing found two medium Python-specific issues, and both are fixed with regression tests:
httpx2 logged full upstream URLs, which can carry magic-link tokens and OAuth codes, at INFO. The adapter now redacts the path and query for its own calls.
An async deliver callback could deadlock under Django on ASGI. It now runs through asgiref.
The first automated publish stopped before building. release-please bumped pyproject.toml but not the package's own version in uv.lock, so uv sync --locked failed. fells-code/seamless-auth-python#3 now has each release PR bump uv.lock too, and adds a workflow_dispatch path that publishes an existing tag, which is how 0.1.0 went out.
Activity
Bccorb commentedon Oct 8, 2026
The Python adapter is live at https://github.com/fells-code/seamless-auth-python. It ships as one distribution,
seamless-auth, installed asseamless-auth[fastapi]orseamless-auth[django], and supports Python 3.11+ and Django 5.2+.CI on
1f3fab7is green: https://github.com/fells-code/seamless-auth-python/actionsconformance/each pass the seamless-cli adapter suite, 25 of 25. Locally each also passed three runs in a row.Checklist:
auth_router(adapter)and aRequireUserdependencyinclude("seamless_auth.django"), arequire_authdecorator for sync and async views, and settings-driven configurationThe design follows the Rust adapter, including its two hardenings: request bodies must be JSON (415 otherwise), and the guard runs the cross-site check for cookie sessions. A security review before publishing found two medium Python-specific issues, and both are fixed with regression tests:
delivercallback could deadlock under Django on ASGI. It now runs through asgiref.Bccorb commentedon Oct 8, 2026
Published to PyPI as
seamless-auth0.1.0: https://pypi.org/project/seamless-auth/0.1.0/ (tagv0.1.0, through trusted publishing). That completes the last checklist item.The first automated publish stopped before building. release-please bumped
pyproject.tomlbut not the package's own version inuv.lock, souv sync --lockedfailed. fells-code/seamless-auth-python#3 now has each release PR bumpuv.locktoo, and adds aworkflow_dispatchpath that publishes an existing tag, which is how 0.1.0 went out.