Skip to content

v8.3.0

Choose a tag to compare

@kennethreitz kennethreitz released this 05 Jul 09:39
· 33 commits to main since this release

[v8.3.0] - 2026-07-05

Added

  • Added api.test_client(...), a configurable form of api.requests for
    custom base_url values and Starlette TestClient options such as
    raise_server_exceptions=False, without relying on deprecated
    api.session().
  • Added v9 compatibility opt-ins: API(json_decimal="string") serializes
    Decimal values as precision-preserving strings, and
    api.graphql(..., partial_data_status=200) returns GraphQL partial-data
    responses with HTTP 200 per the GraphQL-over-HTTP spec. Apps can also pass
    API(implicit_static_fallback=False) to disable bare add_route() static
    fallbacks early, and port_precedence="explicit" to serve() / run() so
    an explicit port= wins over a conflicting PORT environment variable.
  • Added head() and options() shortcut decorators on API, RouteGroup,
    and standalone Router instances.

Changed

  • Declared the Starlette test-client dependencies explicitly (httpx and
    httpx2), raised the Uvicorn and Granian dependency floors to current
    compatible releases, and allowed Sphinx 9 for documentation builds.
  • Removed the PyPy classifier and remaining PyPy-specific test-extra guidance
    now that future CI runs target CPython only.