Skip to content

Releases: encode/starlette

Version 0.20.2

07 Jun 20:14
4519fba
Compare
Choose a tag to compare

Fixed

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

Version 0.20.1

28 May 07:58
d81545c
Compare
Choose a tag to compare

Fixed

  • Improve detection of async callables #1444.
  • Send 400 (Bad Request) when boundary is missing #1617.
  • Send 400 (Bad Request) when missing "name" field on Content-Disposition header #1643.
  • Do not send empty data to StreamingResponse on BaseHTTPMiddleware #1609.
  • Add __bool__ dunder for Secret #1625.

Version 0.20.0

03 May 05:33
830f348
Compare
Choose a tag to compare

Removed

Version 0.19.1

22 Apr 05:27
702fe81
Compare
Choose a tag to compare

Fixed

  • Fix inference of Route.name when created from methods #1553.
  • Avoid TypeError on websocket.disconnect when code is None #1574.

Deprecated

  • Deprecate WS_1004_NO_STATUS_RCVD and WS_1005_ABNORMAL_CLOSURE in favor of WS_1005_NO_STATUS_RCVD and WS_1006_ABNORMAL_CLOSURE, as the previous constants didn't match the WebSockets specs #1580.

Version 0.19.0

09 Mar 18:44
e086fc2
Compare
Choose a tag to compare

Added

  • Error handler will always run, even if the error happens on a background task #761.
  • Add headers parameter to HTTPException #1435.
  • Internal responses with 405 status code insert an Allow header, as described by RFC 7231 #1436.
  • The content argument in JSONResponse is now required #1431.
  • Add custom URL convertor register #1437.
  • Add content disposition type parameter to FileResponse #1266.
  • Add next query param with original request URL in requires decorator #920.
  • Add raw_path to TestClient scope #1445.
  • Add union operators to MutableHeaders #1240.
  • Display missing route details on debug page #1363.
  • Change anyio required version range to >=3.4.0,<5.0 #1421 and #1460.
  • Add typing-extensions>=3.10 requirement - used only on lower versions than Python 3.10 #1475.

Fixed

  • Prevent BaseHTTPMiddleware from hiding errors of StreamingResponse and mounted applications #1459.
  • SessionMiddleware uses an explicit path=..., instead of defaulting to the ASGI 'root_path' #1512.
  • Request.client is now compliant with the ASGI specifications #1462.
  • Raise KeyError at early stage for missing boundary #1349.

Deprecated

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

Version 0.18.0

23 Jan 11:11
832bc85
Compare
Choose a tag to compare

Added

  • Change default chunk size from 4Kb to 64Kb on FileResponse #1345.
  • Add support for functools.partial in WebSocketRoute #1356.
  • Add StaticFiles packages with directory #1350.
  • Allow environment options in Jinja2Templates #1401.
  • Allow HEAD method on HttpEndpoint #1346.
  • Accept additional headers on websocket.accept message #1361 and #1422.
  • Add reason to WebSocket close ASGI event #1417.
  • Add headers attribute to UploadFile #1382.
  • Don't omit Content-Length header for Content-Length: 0 cases #1395.
  • Don't set headers for responses with 1xx, 204 and 304 status code #1397.
  • SessionMiddleware.max_age now accepts None, so cookie can last as long as the browser session #1387.

Fixed

  • Tweak hashlib.md5() function on FileResponses ETag generation. The parameter usedforsecurity flag is set to False, if the flag is available on the system. This fixes an error raised on systems with FIPS enabled #1366 and #1410.
  • Fix path_params type on url_path_for() method i.e. turn str into Any #1341.
  • Host now ignores port on routing #1322.

Version 0.17.1

17 Nov 16:10
881af38
Compare
Choose a tag to compare

Fixed

  • Fix IndexError in authentication requires when wrapped function arguments are distributed between *args and **kwargs #1335.

Version 0.17.0

04 Nov 09:50
2b3f5e6
Compare
Choose a tag to compare

Added

  • Response.delete_cookie now accepts the same parameters as Response.set_cookie #1228.
  • Update the Jinja2Templates constructor to allow PathLike #1292.

Fixed

  • Fix BadSignature exception handling in SessionMiddleware #1264.
  • Change HTTPConnection.__getitem__ return type from str to typing.Any #1118.
  • Change ImmutableMultiDict.getlist return type from typing.List[str] to typing.List[typing.Any] #1235.
  • Handle OSError exceptions on StaticFiles #1220.
  • Fix StaticFiles 404.html in HTML mode #1314.
  • Prevent anyio.ExceptionGroup in error views under a BaseHTTPMiddleware #1262.

Removed

  • Remove GraphQL support #1198.

Version 0.16.0

19 Jul 07:08
e45c579
Compare
Choose a tag to compare

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 method starlette.templates.Jinja2Templates.get_env was removed
    #1218
  • The ClassVar starlette.testclient.TestClient.async_backend was removed,
    the backend is now configured using constructor kwargs
    #1211
  • Passing an Async Generator Function or a Generator Function to starlette.router.Router(lifespan_context=) is deprecated. You should wrap your lifespan in @contextlib.asynccontextmanager.
    #1227
    #1110

Version 0.15.0

23 Jun 08:34
119c427
Compare
Choose a tag to compare

0.15.0

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

Added

  • Starlette now supports Trio 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 in GZipMiddleware is now adjustable - #1128.

Fixed

  • Several fixes to CORSMiddleware. See #1111, #1112, #1113, #1199.
  • Improved exception messages in the case of duplicated path parameter names - #1177.
  • RedirectResponse now uses quote instead of quote_plus encoding for the Location 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 of BaseHTTPMiddleware when handling large responses - #1012 fixed via #1157

Deprecated/removed

  • Built-in GraphQL support via the GraphQLApp class has been deprecated and will be removed in a future release. Please see #619. GraphQL is not supported on Python 3.10.
  • The executor parameter to GraphQLApp was removed. Use executor_class instead.
  • The workers parameter to WSGIMiddleware was removed. This hasn't had any effect since Starlette v0.6.3.