Releases: encode/starlette
Releases Β· encode/starlette
Version 0.20.2
Version 0.20.1
Fixed
Version 0.20.0
Version 0.19.1
Fixed
- Fix inference of
Route.name
when created from methods #1553. - Avoid
TypeError
onwebsocket.disconnect
when code isNone
#1574.
Deprecated
- Deprecate
WS_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 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
headers
parameter toHTTPException
#1435. - Internal responses with
405
status code insert anAllow
header, as described by RFC 7231 #1436. - The
content
argument inJSONResponse
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
toTestClient
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 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.- Raise
KeyError
at 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.partial
inWebSocketRoute
#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
toWebSocket
close ASGI event #1417. - Add headers attribute to
UploadFile
#1382. - Don't omit
Content-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
- Tweak
hashlib.md5()
function onFileResponse
s ETag generation. The parameterusedforsecurity
flag 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_params
type onurl_path_for()
method i.e. turnstr
intoAny
#1341. Host
now ignoresport
on routing #1322.
Version 0.17.1
Fixed
- Fix
IndexError
in authenticationrequires
when wrapped function arguments are distributed between*args
and**kwargs
#1335.
Version 0.17.0
Added
Response.delete_cookie
now accepts the same parameters asResponse.set_cookie
#1228.- Update the
Jinja2Templates
constructor to allowPathLike
#1292.
Fixed
- Fix BadSignature exception handling in SessionMiddleware #1264.
- Change
HTTPConnection.__getitem__
return type fromstr
totyping.Any
#1118. - Change
ImmutableMultiDict.getlist
return type fromtyping.List[str]
totyping.List[typing.Any]
#1235. - Handle
OSError
exceptions onStaticFiles
#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
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
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 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 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 toGraphQLApp
was removed. Useexecutor_class
instead. - The
workers
parameter toWSGIMiddleware
was removed. This hasn't had any effect since Starlette v0.6.3.