Movatterモバイル変換


[0]ホーム

URL:


Skip to content
❤️ Support Starlette viasponsors! 📚 Do you like the new docs?Let us know!

Release notes

0.52.1 (January 18, 2026)

Fixed

0.52.0 (January 18, 2026)

In this release,State can be accessed using dictionary-style syntax for improved typesafety (#3036).

fromcollections.abcimportAsyncIteratorfromcontextlibimportasynccontextmanagerfromtypingimportTypedDictimporthttpxfromstarlette.applicationsimportStarlettefromstarlette.requestsimportRequestclassState(TypedDict):http_client:httpx.AsyncClient@asynccontextmanagerasyncdeflifespan(app:Starlette)->AsyncIterator[State]:asyncwithhttpx.AsyncClient()asclient:yield{"http_client":client}asyncdefhomepage(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'

SeeAccessing State for more details.

0.51.0 (January 10, 2026)

Added

  • Addallow_private_network inCORSMiddleware#3065.

Changed

  • Increase warning stacklevel onDeprecationWarning for wsgi module#3082.

0.50.0 (November 1, 2025)

Removed

  • Drop Python 3.9 support#3061.

0.49.3 (November 1, 2025)

This is the last release that supports Python 3.9, which will be dropped in the next minor release.

Fixed

  • Relax strictness onMiddleware type#3059.

0.49.2 (November 1, 2025)

Fixed

  • Ignoreif-modified-since header ifif-none-match is present inStaticFiles#3044.

0.49.1 (October 28, 2025)

This release fixes a security vulnerability in the parsing logic of theRange header inFileResponse.

You can view the full security advisory:GHSA-7f5h-v6xp-fcq8

Fixed

0.49.0 (October 28, 2025)

Added

  • Addencoding parameter toConfig class#2996.
  • Support multiple cookie headers inRequest.cookies#3029.
  • UseLiteral type forWebSocketEndpoint encoding values#3027.

Changed

  • Do not pollute exception context inMiddleware when usingBaseHTTPMiddleware#2976.

0.48.0 (September 13, 2025)

Added

  • Add official Python 3.14 support#3013.

Changed

0.47.3 (August 24, 2025)

Fixed

  • Useasyncio.iscoroutinefunction for Python 3.12 and older#2984.

0.47.2 (July 20, 2025)

Fixed

  • MakeUploadFile check for future rollover#2962.

0.47.1 (June 21, 2025)

Fixed

  • UseSelf inTestClient.__enter__#2951.
  • Allow async exception handlers to type-check#2949.

0.47.0 (May 29, 2025)

Added

  • Add support for ASGIpathsend extension#2671.
  • Addpartitioned attribute toResponse.set_cookie#2501.

Changed

  • Changemethods parameter type fromlist[str] toCollection[str]#2903.
  • Replaceimport typing byfrom typing import ... in the whole codebase#2867.

Fixed

  • MarkExceptionMiddleware.http_exception as async to prevent thread creation#2922.

0.46.2 (April 13, 2025)

Fixed

  • Prevents reraising of exception from BaseHttpMiddleware#2911.
  • Use correct index on backwards compatible logic inTemplateResponse#2909.

0.46.1 (March 8, 2025)

Fixed

  • Allow relative directory path whenfollow_symlinks=True#2896.

0.46.0 (February 22, 2025)

Added

  • GZipMiddleware: Make sureVary header is always added if a response can be compressed#2865.

Fixed

  • Raise exception from background task on BaseHTTPMiddleware#2812.
  • GZipMiddleware: Don't compress on server sent events#2871.

Changed

  • MultiPartParser: Renamemax_file_size tospool_max_size#2780.

Deprecated

  • Add deprecated warning toTestClient(timeout=...)#2840.

0.45.3 (January 24, 2025)

Fixed

  • Turn directory into string onlookup_path on commonpath comparison#2851.

0.45.2 (January 4, 2025)

Fixed

  • Makecreate_memory_object_stream compatible with old anyio versions once again, and bump anyio minimum version to 3.6.2#2833.

0.45.1 (December 30, 2024)

Fixed

  • CloseMemoryObjectReceiveStream left unclosed upon exception inBaseHTTPMiddleware children#2813.
  • Collect errors more reliably from the WebSocket logic on theTestClient#2814.

Refactor

  • Use a pair of memory object streams instead of two queues on theTestClient#2829.

0.45.0 (December 29, 2024)

Removed

  • Drop Python 3.8 support#2823.
  • RemoveExceptionMiddleware import proxy fromstarlette.exceptions module#2826.
  • Remove deprecatedWS_1004_NO_STATUS_RCVD andWS_1005_ABNORMAL_CLOSURE#2827.

0.44.0 (December 28, 2024)

Added

  • Addclient parameter toTestClient#2810.
  • Addmax_part_size parameter toRequest.form()#2815.

0.43.0 (December 25, 2024)

Removed

  • Remove deprecatedallow_redirects argument fromTestClient#2808.

Added

  • Make UUID path parameter conversion more flexible#2806.

0.42.0 (December 14, 2024)

Added

  • RaiseClientDisconnect onStreamingResponse#2732.

Fixed

  • Use ETag from headers when parsing If-Range in FileResponse#2761.
  • Follow directory symlinks inStaticFiles whenfollow_symlinks=True#2711.
  • Bump minimumpython-multipart version to0.0.180ba8395.
  • Bump minimumhttpx version to0.27.0#2773.

0.41.3 (November 18, 2024)

Fixed

  • Exclude the query parameters from thescope[raw_path] on theTestClient#2716.
  • Replacedict byMapping onHTTPException.headers#2749.
  • Correct middleware argument passing and improve factory pattern#2752.

0.41.2 (October 27, 2024)

Fixed

  • Revert bump onpython-multipart onstarlette[full] extras#2737.

0.41.1 (October 24, 2024)

Fixed

  • Bump minimumpython-multipart version to0.0.13#2734.
  • Changepython-multipart import topython_multipart#2733.

0.41.0 (October 15, 2024)

Added

  • Allow to raiseHTTPException beforewebsocket.accept()#2725.

0.40.0 (October 15, 2024)

This release fixes a Denial of service (DoS) viamultipart/form-data requests.

You can view the full security advisory:GHSA-f96h-pmfr-66vw

Fixed

  • Addmax_part_size toMultiPartParser to limit the size of parts inmultipart/form-data requestsfd038f3.

0.39.2 (September 29, 2024)

Fixed

  • Allow use ofrequest.url_for when only "app" scope is available#2672.
  • Fix internal type hints to supportpython-multipart==0.0.12#2708.

0.39.1 (September 25, 2024)

Fixed

  • Avoid regex re-compilation inresponses.py andschemas.py#2700.
  • Improve performance ofget_route_path by removing regular expression usage#2701.
  • ConsiderFileResponse.chunk_size when handling multiple ranges#2703.
  • Usetoken_hex for generating multipart boundary strings#2702.

0.39.0 (September 23, 2024)

Added

0.38.6 (September 22, 2024)

Fixed

  • Close unclosedMemoryObjectReceiveStream inTestClient#2693.

0.38.5 (September 7, 2024)

Fixed

  • ScheduleBackgroundTasks from withinBaseHTTPMiddleware#2688. This behavior was removed in 0.38.3, and is now restored.

0.38.4 (September 1, 2024)

Fixed

  • Ensure accurateroot_path removal inget_route_path function#2600.

0.38.3 (September 1, 2024)

Added

  • Support for Python 3.13#2662.

Fixed

  • Don't poll for disconnects inBaseHTTPMiddleware viaStreamingResponse#2620.

0.38.2 (July 27, 2024)

Fixed

  • Not assume all routines have__name__ onrouting.get_name()#2648.

0.38.1 (July 23, 2024)

Removed

  • Revert "Add support for ASGI pathsend extension"#2649.

0.38.0 (July 20, 2024)

Added

  • Allow use ofmemoryview inStreamingResponse andResponse#2576 and#2577.
  • Send 404 instead of 500 when filename requested is too long onStaticFiles#2583.

Changed

  • Fail fast on invalidJinja2Template instantiation parameters#2568.
  • Check endpoint handler is async only once#2536.

Fixed

  • Add proper synchronization toWebSocketTestSession#2597.

0.37.2 (March 5, 2024)

Added

  • Addbytes to_RequestData type#2510.

Fixed

  • Revert "Turnscope["client"] toNone onTestClient (#2377)"#2525.
  • Remove deprecatedapp argument passed tohttpx.Client on theTestClient#2526.

0.37.1 (February 9, 2024)

Fixed

  • Warn instead of raise for missing env file onConfig#2485.

0.37.0 (February 5, 2024)

Added

  • Support the WebSocket Denial Response ASGI extension#2041.

0.36.3 (February 4, 2024)

Fixed

  • Createanyio.Event on async context#2459.

0.36.2 (February 3, 2024)

Fixed

  • Upgradepython-multipart to0.0.713e5c26.
  • Avoid duplicate charset onContent-Type#2443.

0.36.1 (January 23, 2024)

Fixed

  • Check if "extensions" in scope before checking the extension#2438.

0.36.0 (January 22, 2024)

Added

  • Add support for ASGIpathsend extension#2435.
  • CancelWebSocketTestSession on close#2427.
  • RaiseWebSocketDisconnect whenWebSocket.send() exceptsIOError#2425.
  • RaiseFileNotFoundError when theenv_file parameter onConfig is not valid#2422.

0.35.1 (January 11, 2024)

Fixed

  • Stop using the deprecated "method" parameter inFileResponse inside ofStaticFiles#2406.
  • Maketyping-extensions optional again#2409.

0.35.0 (January 11, 2024)

Added

  • Add*args toMiddleware and improve its type hints#2381.

Fixed

  • UseIterable insteadIterator oniterate_in_threadpool#2362.

Changes

  • Handleroot_path to keep compatibility with mounted ASGI applications and WSGI#2400.
  • Turnscope["client"] toNone onTestClient#2377.

0.34.0 (December 16, 2023)

Added

  • UseParamSpec forrun_in_threadpool#2375.
  • AddUploadFile.__repr__#2360.

Fixed

  • Merge URLs properly onTestClient#2376.
  • Take weak ETags in consideration onStaticFiles#2334.

Deprecated

  • DeprecateFileResponse(method=...) parameter#2366.

0.33.0 (December 1, 2023)

Added

  • Addmiddleware perRoute/WebSocketRoute#2349.
  • Addmiddleware perRouter#2351.

Fixed

  • Do not overwrite"path" and"root_path" scope keys#2352.
  • Setensure_ascii=False onjson.dumps() forWebSocket.send_json()#2341.

0.32.0.post1 (November 5, 2023)

Fixed

  • Revert mkdocs-material from 9.1.17 to 9.4.7#2326.

0.32.0 (November 4, 2023)

Added

  • Sendreason onWebSocketDisconnect#2309.
  • Adddomain parameter toSessionMiddleware#2280.

Changed

  • Inherit fromHTMLResponse instead ofResponse on_TemplateResponse#2274.
  • Restore theResponse.render type annotation to its pre-0.31.0 state#2264.

0.31.1 (August 26, 2023)

Fixed

  • Fix import error whenexceptiongroup isn't available#2231.
  • Seturl_for global for custom Jinja environments#2230.

0.31.0 (July 24, 2023)

Added

  • Officially support Python 3.12#2214.
  • Support AnyIO 4.0#2211.
  • Strictly type annotate Starlette (strict mode on mypy)#2180.

Fixed

  • Don't group duplicated headers on a single string when using theTestClient#2219.

0.30.0 (July 13, 2023)

Removed

  • Drop Python 3.7 support#2178.

0.29.0 (July 13, 2023)

Added

  • Addfollow_redirects parameter toTestClient#2207.
  • Add__str__ toHTTPException andWebSocketException#2181.
  • Warn users when usinglifespan together withon_startup/on_shutdown#2193.
  • Collect routes fromHost to generate the OpenAPI schema#2183.
  • Addrequest argument toTemplateResponse#2191.

Fixed

  • Stopbody_stream in casemore_body=False onBaseHTTPMiddleware#2194.

0.28.0 (June 7, 2023)

Changed

  • ReuseRequest's body buffer for call_next inBaseHTTPMiddleware#1692.
  • Move exception handling logic toRoute#2026.

Added

  • Addenv parameter toJinja2Templates, and deprecate**env_options#2159.
  • Add clear error message whenhttpx is not installed#2177.

Fixed

  • Allow "name" argument ontemplates url_for()#2127.

0.27.0 (May 16, 2023)

This release fixes a path traversal vulnerability inStaticFiles. You can view the full security advisory:https://github.com/Kludex/starlette/security/advisories/GHSA-v5gw-mw7f-84px

Added

  • Minify JSON websocket data viasend_json https://github.com/Kludex/starlette/pull/2128

Fixed

  • Replacecommonprefix bycommonpath onStaticFiles1797de4.
  • Convert ImportErrors into ModuleNotFoundError#2135.
  • Correct the RuntimeError message content in websockets#2141.

0.26.1 (March 13, 2023)

Fixed

  • Fix typing of Lifespan to allow subclasses of Starlette#2077.

0.26.0.post1 (March 9, 2023)

Fixed

  • Replace reference from Events to Lifespan on the mkdocs.yml#2072.

0.26.0 (March 9, 2023)

Added

Changed

  • Changeurl_for signature to return aURL instance#1385.

Fixed

  • Allow "name" argument onurl_for() andurl_path_for()#2050.

Deprecated

  • Deprecateon_startup andon_shutdown events#2070.

0.25.0 (February 14, 2023)

Fix

  • Limit the number of fields and files when parsingmultipart/form-data on theMultipartParser8c74c2c and#2036.

0.24.0 (February 6, 2023)

Added

  • AllowStaticFiles to follow symlinks#1683.
  • AllowRequest.form() as a context manager#1903.
  • Addsize attribute toUploadFile#1405.
  • Addenv_prefix argument toConfig#1990.
  • Add template context processors#1904.
  • Supportstr anddatetime onexpires parameter on theResponse.set_cookie method#1908.

Changed

  • Lazily build the middleware stack#2017.
  • Make thefile argument required onUploadFile#1413.
  • Use debug extension instead of custom response template extension#1991.

Fixed

  • Fix url parsing of ipv6 urls onURL.replace#1965.

0.23.1 (December 9, 2022)

Fixed

  • Only stop receiving stream onbody_stream if body is empty on theBaseHTTPMiddleware#1940.

0.23.0 (December 5, 2022)

Added

  • Addheaders parameter to theTestClient#1966.

Deprecated

  • DeprecateStarlette andRouter decorators#1897.

Fixed

  • Fix bug onFloatConvertor regex#1973.

0.22.0 (November 17, 2022)

Changed

  • BypassGZipMiddleware when response includesContent-Encoding#1901.

Fixed

  • Remove unneededunquote() from query parameters on theTestClient#1953.
  • Make sureMutableHeaders._list is actually alist#1917.
  • Import compatibility with the next version ofAnyIO#1936.

0.21.0 (September 26, 2022)

This release replaces the underlying HTTP client used on theTestClient (requests➡httpx), and as those clientsdiffera bit on their API, your test suite will likely break. To make the migration smoother, you can use thebump-testclient tool.

Changed

  • Replacerequests withhttpx inTestClient#1376.

Added

  • AddWebSocketException and support for WebSocket exception handlers#1263.
  • Addmiddleware parameter toMount class#1649.
  • Officially support Python 3.11#1863.
  • Implement__repr__ for route classes#1864.

Fixed

  • Fix bug on whichBackgroundTasks were cancelled when usingBaseHTTPMiddleware and client disconnected#1715.

0.20.4 (June 28, 2022)

Fixed

  • Remove converter from path when generating OpenAPI schema#1648.

0.20.3 (June 10, 2022)

Fixed

  • Revert "AllowStaticFiles to follow symlinks"#1681.

0.20.2 (June 7, 2022)

Fixed

  • Fix regression on route paths with colons#1675.
  • AllowStaticFiles to follow symlinks#1337.

0.20.1 (May 28, 2022)

Fixed

  • Improve detection of async callables#1444.
  • Send 400 (Bad Request) whenboundary is missing#1617.
  • Send 400 (Bad Request) when missing "name" field onContent-Disposition header#1643.
  • Do not send empty data toStreamingResponse onBaseHTTPMiddleware#1609.
  • Add__bool__ dunder forSecret#1625.

0.20.0 (May 3, 2022)

Removed

0.19.1 (April 22, 2022)

Fixed

  • Fix inference ofRoute.name when created from methods#1553.
  • AvoidTypeError onwebsocket.disconnect when code isNone#1574.

Deprecated

  • DeprecateWS_1004_NO_STATUS_RCVD andWS_1005_ABNORMAL_CLOSURE in favor ofWS_1005_NO_STATUS_RCVD andWS_1006_ABNORMAL_CLOSURE, as the previous constants didn't match theWebSockets specs#1580.

0.19.0 (March 9, 2022)

Added

  • Error handler will always run, even if the error happens on a background task#761.
  • Addheaders parameter toHTTPException#1435.
  • Internal responses with405 status code insert anAllow header, as described byRFC 7231#1436.
  • Thecontent argument inJSONResponse is now required#1431.
  • Add custom URL convertor register#1437.
  • Add content disposition type parameter toFileResponse#1266.
  • Add next query param with original request URL in requires decorator#920.
  • Addraw_path toTestClient scope#1445.
  • Add union operators toMutableHeaders#1240.
  • Display missing route details on debug page#1363.
  • Changeanyio required version range to>=3.4.0,<5.0#1421 and#1460.
  • Addtyping-extensions>=3.10 requirement - used only on lower versions than Python 3.10#1475.

Fixed

  • PreventBaseHTTPMiddleware from hiding errors ofStreamingResponse and mounted applications#1459.
  • SessionMiddleware uses an explicitpath=..., instead of defaulting to the ASGI 'root_path'#1512.
  • Request.client is now compliant with the ASGI specifications#1462.
  • RaiseKeyError at early stage for missing boundary#1349.

Deprecated

  • Deprecate WSGIMiddleware in favor of a2wsgi#1504.
  • Deprecaterun_until_first_complete#1443.

0.18.0 (January 23, 2022)

Added

  • Change default chunk size from 4Kb to 64Kb onFileResponse#1345.
  • Add support forfunctools.partial inWebSocketRoute#1356.
  • AddStaticFiles packages with directory#1350.
  • Allow environment options inJinja2Templates#1401.
  • Allow HEAD method onHttpEndpoint#1346.
  • Accept additional headers onwebsocket.accept message#1361 and#1422.
  • Addreason toWebSocket close ASGI event#1417.
  • Add headers attribute toUploadFile#1382.
  • Don't omitContent-Length header forContent-Length: 0 cases#1395.
  • Don't set headers for responses with 1xx, 204 and 304 status code#1397.
  • SessionMiddleware.max_age now acceptsNone, so cookie can last as long as the browser session#1387.

Fixed

  • Tweakhashlib.md5() function onFileResponses ETag generation. The parameterusedforsecurity flag is set toFalse, if the flag is available on the system. This fixes an error raised on systems withFIPS enabled#1366 and#1410.
  • Fixpath_params type onurl_path_for() method i.e. turnstr intoAny#1341.
  • Host now ignoresport on routing#1322.

0.17.1 (November 17, 2021)

Fixed

  • FixIndexError in authenticationrequires when wrapped function arguments are distributed between*args and**kwargs#1335.

0.17.0 (November 4, 2021)

Added

  • Response.delete_cookie now accepts the same parameters asResponse.set_cookie#1228.
  • Update theJinja2Templates constructor to allowPathLike#1292.

Fixed

  • Fix BadSignature exception handling in SessionMiddleware#1264.
  • ChangeHTTPConnection.__getitem__ return type fromstr totyping.Any#1118.
  • ChangeImmutableMultiDict.getlist return type fromtyping.List[str] totyping.List[typing.Any]#1235.
  • HandleOSError exceptions onStaticFiles#1220.
  • FixStaticFiles 404.html in HTML mode#1314.
  • Prevent anyio.ExceptionGroup in error views under a BaseHTTPMiddleware#1262.

Removed

  • Remove GraphQL support#1198.

0.16.0 (July 19, 2021)

Added

Fixed

  • starlette.websockets.WebSocket instances are now hashable and compare by identity#1039
  • A number of fixes related to running task groups in lifespan#1213,#1227

Deprecated/removed

  • The methodstarlette.templates.Jinja2Templates.get_env was removed#1218
  • The ClassVarstarlette.testclient.TestClient.async_backend was removed, the backend is now configured using constructor kwargs#1211
  • Passing an Async Generator Function or a Generator Function tostarlette.routing.Router(lifespan=) is deprecated. You should wrap your lifespan in@contextlib.asynccontextmanager.#1227#1110

0.15.0 (June 23, 2021)

This release includes major changes to the low-level asynchronous parts of Starlette. As a result,Starlette now depends onAnyIO and some minor APIchanges have occurred. Another significant change with this release is thedeprecation of built-in GraphQL support.

Added

  • Starlette now supportsTrio as an async runtime via AnyIO -#1157.
  • TestClient.websocket_connect() now must be used as a context manager.
  • Initial support for Python 3.10 -#1201.
  • The compression level used inGZipMiddleware is now adjustable -#1128.

Fixed

  • Several fixes toCORSMiddleware. See#1111,#1112,#1113,#1199.
  • Improved exception messages in the case of duplicated path parameter names -#1177.
  • RedirectResponse now usesquote instead ofquote_plus encoding for theLocation header to better match the behaviour in other frameworks such as Django -#1164.
  • Exception causes are now preserved in more cases -#1158.
  • Session cookies now use the ASGI root path in the case of mounted applications -#1147.
  • Fixed a cache invalidation bug when static files were deleted in certain circumstances -#1023.
  • Improved memory usage ofBaseHTTPMiddleware when handling large responses -#1012 fixed via #1157

Deprecated/removed

  • Built-in GraphQL support via theGraphQLApp class has been deprecated and will be removed in a future release. Please see#619. GraphQL is not supported on Python 3.10.
  • Theexecutor parameter toGraphQLApp was removed. Useexecutor_class instead.
  • Theworkers parameter toWSGIMiddleware was removed. This hasn't had any effect since Starlette v0.6.3.

0.14.2 (February 2, 2021)

Fixed

  • FixedServerErrorMiddleware compatibility with Python 3.9.1/3.8.7 when debug mode is enabled -#1132.
  • Fixed unclosed socketResourceWarnings when using theTestClient with WebSocket endpoints - #1132.
  • Improved detection ofasync endpoints wrapped infunctools.partial on Python 3.8+ -#1106.

0.14.1 (November 9th, 2020)

Removed

  • UJSONResponse was removed (this change was intended to be included in 0.14.0). Please see thedocumentation for how to implement responses using custom JSON serialization -#1074.

0.14.0 (November 8th, 2020)

Added

  • Starlette now officially supports Python3.9.
  • InStreamingResponse, allow custom async iterator such as objects from classes implementing__aiter__.
  • Allow usage offunctools.partial async handlers in Python versions 3.6 and 3.7.
  • Add 418 I'm A Teapot status code.

Changed

  • Create tasks from handler coroutines before sending them toasyncio.wait.
  • Useformat_exception instead offormat_tb inServerErrorMiddleware'sdebug responses.
  • Be more lenient with handler arguments when using therequires decorator.

0.13.8

  • RevertQueue(maxsize=1) fix forBaseHTTPMiddleware middleware classes and streaming responses.

  • TheStaticFiles constructor now allowspathlib.Path in addition to strings for itsdirectory argument.

0.13.7

  • Fix high memory usage when usingBaseHTTPMiddleware middleware classes and streaming responses.

0.13.6

  • Fix 404 errors withStaticFiles.

0.13.5

  • Add support forStarlette(lifespan=...) functions.
  • More robust path-traversal check in StaticFiles app.
  • Fix WSGI PATH_INFO encoding.
  • RedirectResponse now accepts optional background parameter
  • Allow path routes to contain regex meta characters
  • Treat ASGI HTTP 'body' as an optional key.
  • Don't use thread pooling for writing to in-memory upload files.

0.13.0

  • Switch to promoting application configuration on init style everywhere. This means dropping the decorator style in favour of declarative routing tables and middleware definitions.

0.12.12

  • Fixrequest.url_for() for the Mount-within-a-Mount case.

0.12.11

  • Fixrequest.url_for() when an ASGIroot_path is being used.

0.12.1

  • AddURL.include_query_params(**kwargs)
  • AddURL.replace_query_params(**kwargs)
  • AddURL.remove_query_params(param_names)
  • request.state properly persisting across middleware.
  • Addedrequest.scope interface.

0.12.0

  • Switch to ASGI 3.0.
  • Fixes to CORS middleware.
  • AddStaticFiles(html=True) support.
  • Fix path quoting in redirect responses.

0.11.1

  • Addrequest.state interface, for storing arbitrary additional information.
  • Support disabling GraphiQL withGraphQLApp(..., graphiql=False).

0.11.0

  • DatabaseMiddleware is now dropped in favour ofdatabases
  • Templates are no longer configured on the application instance. Usetemplates = Jinja2Templates(directory=...) andreturn templates.TemplateResponse('index.html', {"request": request})
  • Schema generation is no longer attached to the application instance. Useschemas = SchemaGenerator(...) andreturn schemas.OpenAPIResponse(request=request)
  • LifespanMiddleware is dropped in favor of router-based lifespan handling.
  • Application instances now accept aroutes argument,Starlette(routes=[...])
  • Schema generation now includes mounted routes.

0.10.6

  • AddLifespan routing component.

0.10.5

  • Ensuretemplating does not strictly requirejinja2 to be installed.

0.10.4

  • Templates are now configured independently from the application instance.templates = Jinja2Templates(directory=...). Existing API remains in place, but is no longer documented,and will be deprecated in due course. See the template documentation for more details.

0.10.3

  • Move to independentdatabases package instead ofDatabaseMiddleware. Existing APIremains in place, but is no longer documented, and will be deprecated in due course.

0.10.2

  • Don't drop explicit port numbers on redirects fromHTTPSRedirectMiddleware.

0.10.1

  • Add MySQL database support.
  • Add host-based routing.

0.10.0

  • WebSockets now default to sending/receiving JSON over text data frames. Use.send_json(data, mode="binary") and.receive_json(mode="binary") for binary framing.
  • GraphQLApp now takes anexecutor_class argument, which should be used in preference to the existingexecutor argument. Resolves an issue with async executors being instantiated before the event loop was setup. Theexecutor argument is expected to be deprecated in the next median or major release.
  • Authentication and the@requires decorator now support WebSocket endpoints.
  • MultiDict andImmutableMultiDict classes are available inuvicorn.datastructures.
  • QueryParams is now instantiated with standard dict-style*args, **kwargs arguments.

0.9.11

  • Session cookies now include browser 'expires', in addition to the existing signed expiry.
  • request.form() now returns a multi-dict interface.
  • The query parameter multi-dict implementation now mirrorsdict more correctly for thebehavior of.keys(),.values(), and.items() when multiple same-key items occur.
  • Useurlsplit throughout in favor ofurlparse.

0.9.10

  • Support@requires(...) on class methods.
  • Apply URL escaping to form data.
  • SupportHEAD requests automatically.
  • Addawait request.is_disconnected().
  • Pass operationName to GraphQL executor.

0.9.9

  • AddTemplateResponse.
  • AddCommaSeparatedStrings datatype.
  • AddBackgroundTasks for multiple tasks.
  • Common subclass forRequest andWebSocket, to eg. sharesession functionality.
  • Expose remote address withrequest.client.

0.9.8

  • Addrequest.database.executemany.

0.9.7

  • Ensure thatAuthenticationMiddleware handles lifespan messages correctly.

0.9.6

  • AddAuthenticationMiddleware, and@requires() decorator.

0.9.5

  • Support eitherstr orSecret forSessionMiddleware(secret_key=...).

0.9.4

  • Addconfig.environ.
  • Adddatastructures.Secret.
  • Adddatastructures.DatabaseURL.

0.9.3

  • Addconfig.Config(".env")

0.9.2

  • Add optional database support.
  • Addrequest to GraphQL context.
  • Hide any password component inURL.__repr__.

0.9.1

  • Handle startup/shutdown errors properly.

0.9.0

  • TestClient can now be used as a context manager, instead ofLifespanContext.
  • Lifespan is now handled as middleware. Startup and Shutdown events arevisible throughout the middleware stack.

0.8.8

  • Better support for third-party API schema generators.

0.8.7

  • Support chunked requests with TestClient.
  • Cleanup asyncio tasks properly with WSGIMiddleware.
  • Support using TestClient within endpoints, for service mocking.

0.8.6

  • Session cookies are now set on the root path.

0.8.5

  • Support URL convertors.
  • Support HTTP 304 cache responses fromStaticFiles.
  • Resolve character escaping issue with form data.

0.8.4

  • Default to empty body on responses.

0.8.3

  • Add 'name' argument to@app.route().
  • Use 'Host' header for URL reconstruction.

0.8.2

StaticFiles

  • StaticFiles no longer reads the file for responses toHEAD requests.

0.8.1

Templating

  • Add a default templating configuration with Jinja2.

Allows the following:

app=Starlette(template_directory="templates")@app.route('/')asyncdefhomepage(request):# `url_for` is available inside the template.template=app.get_template('index.html')content=template.render(request=request)returnHTMLResponse(content)

0.8.0

Exceptions

  • Add support for@app.exception_handler(404).
  • Ensure handled exceptions are not seen as errors by the middleware stack.

SessionMiddleware

  • Addmax_age, and use timestamp-signed cookies. Defaults to two weeks.

Cookies

  • Ensure cookies are strictly HTTP correct.

StaticFiles

  • Check directory exists on instantiation.

0.7.4

Concurrency

  • Addstarlette.concurrency.run_in_threadpool. Now handlescontextvar support.

0.7.3

Routing

  • Addname= support toapp.mount(). This allows eg:app.mount('/static', StaticFiles(directory='static'), name='static').

0.7.2

Middleware

  • Add support for@app.middleware("http") decorator.

Routing

  • Add "endpoint" to ASGI scope.

0.7.1

Debug tracebacks

  • Improve debug traceback information & styling.

URL routing

  • Support mounted URL lookups with "path=", eg.url_for('static', path=...).
  • Support nested URL lookups, eg.url_for('admin:user', username=...).
  • Add redirect slashes support.
  • Add www redirect support.

Background tasks

  • Add background task support toFileResponse andStreamingResponse.

0.7.0

API Schema support

  • Addapp.schema_generator = SchemaGenerator(...).
  • Addapp.schema property.
  • AddOpenAPIResponse(...).

GraphQL routing

  • Dropapp.add_graphql_route("/", ...) in favor of more consistentapp.add_route("/", GraphQLApp(...)).

0.6.3

Routing API

  • Support routing to methods.
  • Ensureurl_path_for works with Mount('/{some_path_params}').
  • Fix Router(default=) argument.
  • Support repeated paths, like:@app.route("/", methods=["GET"]),@app.route("/", methods=["POST"])
  • Use the default ThreadPoolExecutor for all sync endpoints.

0.6.2

SessionMiddleware

Added support forrequest.session, withSessionMiddleware.

0.6.1

BaseHTTPMiddleware

Added support forBaseHTTPMiddleware, which provides a standardrequest/response interface over a regular ASGI middleware.

This means you can write ASGI middleware while still working ata request/response level, rather than handling ASGI messages directly.

fromstarlette.applicationsimportStarlettefromstarlette.middleware.baseimportBaseHTTPMiddlewareclassCustomMiddleware(BaseHTTPMiddleware):asyncdefdispatch(self,request,call_next):response=awaitcall_next(request)response.headers['Custom-Header']='Example'returnresponseapp=Starlette()app.add_middleware(CustomMiddleware)

0.6.0

request.path_params

The biggest change in 0.6 is that endpoint signatures are no longer:

asyncdeffunc(request:Request,**kwargs)->Response

Instead we just use:

asyncdeffunc(request:Request)->Response

The path parameters are available on the request asrequest.path_params.

This is different to most Python webframeworks, but I think it actually ends upbeing much more nicely consistent all the way through.

request.url_for()

Request and WebSocketSession now support URL reversing withrequest.url_for(name, **path_params).This method returns a fully qualifiedURL instance.The URL instance is a string-like object.

app.url_path_for()

Applications now support URL path reversing withapp.url_path_for(name, **path_params).This method returns aURL instance with the path and scheme set.The URL instance is a string-like object, and will return only the path if coerced to a string.

app.routes

Applications now support a.routes parameter, which returns a list of[Route|WebSocketRoute|Mount].

Route, WebSocketRoute, Mount

The low level components toRouter now match the@app.route(),@app.websocket_route(), andapp.mount() signatures.


[8]ページ先頭

©2009-2026 Movatter.jp