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.