// the find
supabase/supabase-py
Python Client for Supabase. Query Postgres from Flask, Django, FastAPI. Python user authentication, security policies, edge functions, file storage, and realtime data streaming. Good first issue.
The official Python client for Supabase, structured as a monorepo of sub-packages covering auth, storage, realtime, PostgREST queries, and edge functions. It's the go-to choice if you're building a Python backend (Flask, FastAPI, Django) on top of Supabase and want a maintained SDK that tracks the platform's features. Not useful outside the Supabase ecosystem.
First-party maintenance by the Supabase team means it tracks platform changes quickly rather than lagging behind like community wrappers. The sync/async split is done properly — each sub-package ships both `_async` and `_sync` variants generated via unasync, so you're not forced into asyncio. The monorepo structure means each sub-client (postgrest, auth, storage, realtime) is independently versioned and testable against real Docker containers, not mocked HTTP. Typing is complete (`py.typed` markers throughout), so autocomplete actually works.
Realtime support is notably thinner than the JS client — the sync client is missing a push implementation entirely, and the test coverage for realtime is three files compared to dozens for auth. The unasync code-generation approach means bugs and API shape decisions get duplicated across both sync and async variants; a mistake in the async version silently exists in sync too until someone runs the generator again. Error messages from PostgREST errors are often raw API responses bubbled up without wrapping, which makes exception handling in application code awkward. Local dev setup requires Docker, supabase-cli, make, and uv all in the right versions — the Nix flake helps but is overkill for someone who just wants to run the test suite once.