Releases: Kludex/starlette
Releases ยท Kludex/starlette
Version 0.20.0
Version 0.19.1
Fixed
- Fix inference of
Route.namewhen created from methods #1553. - Avoid
TypeErroronwebsocket.disconnectwhen code isNone#1574.
Deprecated
- Deprecate
WS_1004_NO_STATUS_RCVDandWS_1005_ABNORMAL_CLOSUREin favor ofWS_1005_NO_STATUS_RCVDandWS_1006_ABNORMAL_CLOSURE, as the previous constants didn't match the WebSockets specs #1580.
Version 0.19.0
Added
- Error handler will always run, even if the error happens on a background task #761.
- Add
headersparameter toHTTPException#1435. - Internal responses with
405status code insert anAllowheader, as described by RFC 7231 #1436. - The
contentargument inJSONResponseis 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_pathtoTestClientscope #1445. - Add union operators to
MutableHeaders#1240. - Display missing route details on debug page #1363.
- Change
anyiorequired version range to>=3.4.0,<5.0#1421 and #1460. - Add
typing-extensions>=3.10requirement - used only on lower versions than Python 3.10 #1475.
Fixed
- Prevent
BaseHTTPMiddlewarefrom hiding errors ofStreamingResponseand mounted applications #1459. SessionMiddlewareuses an explicitpath=..., instead of defaulting to the ASGI 'root_path' #1512.Request.clientis now compliant with the ASGI specifications #1462.- Raise
KeyErrorat early stage for missing boundary #1349.
Deprecated
Version 0.18.0
Added
- Change default chunk size from 4Kb to 64Kb on
FileResponse#1345. - Add support for
functools.partialinWebSocketRoute#1356. - Add
StaticFilespackages with directory #1350. - Allow environment options in
Jinja2Templates#1401. - Allow HEAD method on
HttpEndpoint#1346. - Accept additional headers on
websocket.acceptmessage #1361 and #1422. - Add
reasontoWebSocketclose ASGI event #1417. - Add headers attribute to
UploadFile#1382. - Don't omit
Content-Lengthheader forContent-Length: 0cases #1395. - Don't set headers for responses with 1xx, 204 and 304 status code #1397.
SessionMiddleware.max_agenow acceptsNone, so cookie can last as long as the browser session #1387.
Fixed
- Tweak
hashlib.md5()function onFileResponses ETag generation. The parameterusedforsecurityflag is set toFalse, if the flag is available on the system. This fixes an error raised on systems with FIPS enabled #1366 and #1410. - Fix
path_paramstype onurl_path_for()method i.e. turnstrintoAny#1341. Hostnow ignoresporton routing #1322.
Version 0.17.1
Fixed
- Fix
IndexErrorin authenticationrequireswhen wrapped function arguments are distributed between*argsand**kwargs#1335.
Version 0.17.0
Added
Response.delete_cookienow accepts the same parameters asResponse.set_cookie#1228.- Update the
Jinja2Templatesconstructor to allowPathLike#1292.
Fixed
- Fix BadSignature exception handling in SessionMiddleware #1264.
- Change
HTTPConnection.__getitem__return type fromstrtotyping.Any#1118. - Change
ImmutableMultiDict.getlistreturn type fromtyping.List[str]totyping.List[typing.Any]#1235. - Handle
OSErrorexceptions onStaticFiles#1220. - Fix
StaticFiles404.html in HTML mode #1314. - Prevent anyio.ExceptionGroup in error views under a BaseHTTPMiddleware #1262.
Removed
- Remove GraphQL support #1198.
Version 0.16.0
Added
Fixed
starlette.websockets.WebSocketinstances 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_envwas removed
#1218 - The ClassVar
starlette.testclient.TestClient.async_backendwas 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
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
GZipMiddlewareis 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.
RedirectResponsenow usesquoteinstead ofquote_plusencoding for theLocationheader 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
BaseHTTPMiddlewarewhen handling large responses - #1012 fixed via #1157
Deprecated/removed
- Built-in GraphQL support via the
GraphQLAppclass has been deprecated and will be removed in a future release. Please see #619. GraphQL is not supported on Python 3.10. - The
executorparameter toGraphQLAppwas removed. Useexecutor_classinstead. - The
workersparameter toWSGIMiddlewarewas removed. This hasn't had any effect since Starlette v0.6.3.
Version 0.14.2
Version 0.14.1
Removed
UJSONResponsewas removed (this change was intended to be included in 0.14.0). Please see the documentation for how to implement responses using custom JSON serialization - #1074.