Releases: Kludex/starlette
Version 1.2.1
What's Changed
- Use
httpx2for type checking in thetestclientmodule by @leifwar in #3304 - Add assert error for requires() when request param is not Request type by @KeeganOP in #3298
New Contributors
- @leifwar made their first contribution in #3304
- @diskeu made their first contribution in #3243
- @KeeganOP made their first contribution in #3298
Full Changelog: 1.2.0...1.2.1
Version 1.2.0
Version 1.1.0
What's Changed
- Use
"application/octet-stream"as theFileResponsemedia type fallback by @ATOM00blue in #3283 - Only dispatch standard HTTP verbs in
HTTPEndpointby @Kludex in #3286 - Reject absolute paths in
StaticFiles.lookup_pathby @Kludex in #3287
New Contributors
- @ATOM00blue made their first contribution in #3283
Full Changelog: 1.0.1...1.1.0
Version 1.0.1
What's Changed
Full Changelog: 1.0.0...1.0.1
Version 1.0.0
Starlette 1.0 is here! π
After nearly eight years since its creation, Starlette has reached its first stable release.
A special thank you to @lovelydinosaur, the creator of Starlette, Uvicorn, HTTPX and MkDocs, whose work helped to lay the foundation for the modern async Python ecosystem. π
Thank you to @adriangb, @graingert, @agronholm, @florimondmanca, @aminalaee, @tiangolo, @alex-oleshkevich, @abersheeran, and @uSpike for helping make Starlette what it is today. And to all my sponsors - especially @tiangolo, @huggingface, and @elevenlabs - thank you for your support!
Thank you to all 290+ contributors who have shaped Starlette over the years! β€οΈ
Read more on the blog post.
Check out the full release notes at https://www.starlette.io/release-notes/#100-march-22-2026
Full Changelog: 1.0.0rc1...1.0.0
Version 1.0.0rc1
We're ready! π
The first release candidate for Starlette 1.0 is here! After years on ZeroVer, we're finally making the jump.
This release removes all deprecated features marked for 1.0.0, along with some last-minute bug fixes.
A special thank you to @lovelydinosaur, the creator of Starlette, Uvicorn, HTTPX and MkDocs, whose work helped to lay the foundation for the modern async Python ecosystem. π
Thank you to @adriangb, @graingert, @agronholm, @florimondmanca, @aminalaee, @tiangolo, @alex-oleshkevich, and @abersheeran for helping make Starlette what it is today. And to all my sponsors - especially @tiangolo, @huggingface, and @elevenlabs - thank you for your support!
Thank you to all 290+ contributors who have shaped Starlette over the years!
Check out the full release notes at https://www.starlette.io/release-notes/#100rc1-february-23-2026
Full Changelog: 0.52.1...1.0.0rc1
Version 0.52.1
Version 0.52.0
In this release, State can be accessed using dictionary-style syntax for improved type safety (#3036).
from collections.abc import AsyncIterator
from contextlib import asynccontextmanager
from typing import TypedDict
import httpx
from starlette.applications import Starlette
from starlette.requests import Request
class State(TypedDict):
http_client: httpx.AsyncClient
@asynccontextmanager
async def lifespan(app: Starlette) -> AsyncIterator[State]:
async with httpx.AsyncClient() as client:
yield {"http_client": client}
async def homepage(request: Request[State]):
client = request.state["http_client"]
# If you run the below line with mypy or pyright, it will reveal the correct type.
reveal_type(client) # Revealed type is 'httpx.AsyncClient'See Accessing State for more details.
Full Changelog: 0.51.0...0.52.0
Version 0.51.0
Added
- Add
allow_private_networkinCORSMiddleware#3065.
Changed
- Increase warning stacklevel on
DeprecationWarningfor wsgi module #3082.
New Contributors
- @santibreo made their first contribution in #3082
- @iddqd888 made their first contribution in #3083
Full Changelog: 0.50.0...0.51.0