Releases: encode/starlette
Releases · encode/starlette
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.
Version 0.14.2
Version 0.14.1
Removed
UJSONResponse
was 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.
Version 0.14.0
Added
- Starlette now officially supports Python3.9.
- In
StreamingResponse
, allow custom async iterator such as objects from classes implementing__aiter__
. - Allow usage of
functools.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 to
asyncio.wait
. - Use
format_exception
instead offormat_tb
inServerErrorMiddleware
'sdebug
responses. - Be more lenient with handler arguments when using the
requires
decorator.
Version 0.13.8
-
Revert
Queue(maxsize=1)
fix forBaseHTTPMiddleware
middleware classes and streaming responses. -
The
StaticFiles
constructor now allowspathlib.Path
in addition to strings for itsdirectory
argument.
Version 0.13.7
- Fix high memory usage when using BaseHTTPMiddleware middleware classes and streaming responses.