Revert #1332. While trying to solve the memory leak, it introduced an issue (#1345) when the server receives big chunks of data using the httptools implementation. (#1354)
Revert stream interface changes. This was introduced on 0.14.0, and caused an issue (#1226), which caused a memory leak when sending TCP pings. (#1355)
Allow WebSocket close event to receive reason being None from ASGI app. (#1259)
Fix a bug in WebSocketProtocol.asgi_receive on which we returned a close frame even if there were data messages before that frame in the read queue. (#1252)
The option --reload-dirs was splitting a string into single character directories. (#1267)
Only second SIGINT is able to forcefully shutdown the server (#1269)
Allow app-dir parameter on the run() function (#1271)
Change reload to be configurable with glob patterns. Currently only .py files are watched, which is different from the previous default behavior. (#820)
Add Python 3.10-rc.1 support. Now the server uses asyncio.run which will: start a fresh asyncio event loop, on shutdown cancel any background tasks rather than aborting them, aexit any remaining async generators, and shutdown the default ThreadPoolExecutor. (#1070)
Exit with status 3 when worker starts failed (#1077)
Add option to set websocket ping interval and timeout (#1048)
Adapt bind_socket to make it usable with multiple processes (#1009)
Add existence check to the reload directory(ies) (#1089)
Add missing trace log for websocket protocols (#1083)
Support disabling default Server and Date headers (#818)
This PR contains the following updates:
| Package | Update | Change |
|---|---|---|
| [uvicorn](https://github.com/encode/uvicorn) ([changelog](https://github.com/encode/uvicorn/blob/master/CHANGELOG.md)) | minor | `==0.13.4` -> `==0.30.6` |
---
### Release Notes
<details>
<summary>encode/uvicorn (uvicorn)</summary>
### [`v0.30.6`](https://github.com/encode/uvicorn/blob/HEAD/CHANGELOG.md#0306-2024-08-13)
[Compare Source](https://github.com/encode/uvicorn/compare/0.30.5...0.30.6)
##### Fixed
- Don't warn when upgrade is not WebSocket and depedencies are installed ([#​2360](https://github.com/encode/uvicorn/issues/2360))
### [`v0.30.5`](https://github.com/encode/uvicorn/blob/HEAD/CHANGELOG.md#0305-2024-08-02)
[Compare Source](https://github.com/encode/uvicorn/compare/0.30.4...0.30.5)
##### Fixed
- Don't close connection before receiving body on H11 ([#​2408](https://github.com/encode/uvicorn/issues/2408))
### [`v0.30.4`](https://github.com/encode/uvicorn/blob/HEAD/CHANGELOG.md#0304-2024-07-31)
[Compare Source](https://github.com/encode/uvicorn/compare/0.30.3...0.30.4)
##### Fixed
- Close connection when `h11` sets client state to `MUST_CLOSE` ([#​2375](https://github.com/encode/uvicorn/issues/2375))
### [`v0.30.3`](https://github.com/encode/uvicorn/blob/HEAD/CHANGELOG.md#0303-2024-07-20)
[Compare Source](https://github.com/encode/uvicorn/compare/0.30.2...0.30.3)
##### Fixed
- Suppress `KeyboardInterrupt` from CLI and programmatic usage ([#​2384](https://github.com/encode/uvicorn/issues/2384))
- `ClientDisconnect` inherits from `OSError` instead of `IOError` ([#​2393](https://github.com/encode/uvicorn/issues/2393))
### [`v0.30.2`](https://github.com/encode/uvicorn/blob/HEAD/CHANGELOG.md#0302-2024-07-20)
[Compare Source](https://github.com/encode/uvicorn/compare/0.30.1...0.30.2)
##### Added
- Add `reason` support to [`websocket.disconnect`](https://asgi.readthedocs.io/en/latest/specs/www.html#disconnect-receive-event-ws) event ([#​2324](https://github.com/encode/uvicorn/issues/2324))
##### Fixed
- Iterate subprocesses in-place on the process manager ([#​2373](https://github.com/encode/uvicorn/issues/2373))
### [`v0.30.1`](https://github.com/encode/uvicorn/blob/HEAD/CHANGELOG.md#0301-2024-06-02)
[Compare Source](https://github.com/encode/uvicorn/compare/0.30.0...0.30.1)
##### Fixed
- Allow horizontal tabs `\t` in response header values ([#​2345](https://github.com/encode/uvicorn/issues/2345))
### [`v0.30.0`](https://github.com/encode/uvicorn/blob/HEAD/CHANGELOG.md#0300-2024-05-28)
[Compare Source](https://github.com/encode/uvicorn/compare/0.29.0...0.30.0)
##### Added
- New multiprocess manager ([#​2183](https://github.com/encode/uvicorn/issues/2183))
- Allow `ConfigParser` or a `io.IO[Any]` on `log_config` ([#​1976](https://github.com/encode/uvicorn/issues/1976))
##### Fixed
- Suppress side-effects of signal propagation ([#​2317](https://github.com/encode/uvicorn/issues/2317))
- Send `content-length` header on 5xx ([#​2304](https://github.com/encode/uvicorn/issues/2304))
##### Deprecated
- Deprecate the `uvicorn.workers` module ([#​2302](https://github.com/encode/uvicorn/issues/2302))
### [`v0.29.0`](https://github.com/encode/uvicorn/blob/HEAD/CHANGELOG.md#0290-2024-03-19)
[Compare Source](https://github.com/encode/uvicorn/compare/0.28.1...0.29.0)
##### Added
- Cooperative signal handling ([#​1600](https://github.com/encode/uvicorn/issues/1600))
### [`v0.28.1`](https://github.com/encode/uvicorn/blob/HEAD/CHANGELOG.md#0281-2024-03-19)
[Compare Source](https://github.com/encode/uvicorn/compare/0.28.0...0.28.1)
##### Fixed
- Revert raise `ClientDisconnected` on HTTP ([#​2276](https://github.com/encode/uvicorn/issues/2276))
### [`v0.28.0`](https://github.com/encode/uvicorn/blob/HEAD/CHANGELOG.md#0280-2024-03-09)
[Compare Source](https://github.com/encode/uvicorn/compare/0.27.1...0.28.0)
##### Added
- Raise `ClientDisconnected` on `send()` when client disconnected ([#​2220](https://github.com/encode/uvicorn/issues/2220))
##### Fixed
- Except `AttributeError` on `sys.stdin.fileno()` for Windows IIS10 ([#​1947](https://github.com/encode/uvicorn/issues/1947))
- Use `X-Forwarded-Proto` for WebSockets scheme when the proxy provides it ([#​2258](https://github.com/encode/uvicorn/issues/2258))
### [`v0.27.1`](https://github.com/encode/uvicorn/blob/HEAD/CHANGELOG.md#0271-2024-02-10)
[Compare Source](https://github.com/encode/uvicorn/compare/0.27.0.post1...0.27.1)
- Fix spurious LocalProtocolError errors when processing pipelined requests ([#​2243](https://github.com/encode/uvicorn/issues/2243))
### [`v0.27.0.post1`](https://github.com/encode/uvicorn/blob/HEAD/CHANGELOG.md#0270post1-2024-01-29)
[Compare Source](https://github.com/encode/uvicorn/compare/0.27.0...0.27.0.post1)
##### Fixed
- Fix nav overrides for newer version of Mkdocs Material ([#​2233](https://github.com/encode/uvicorn/issues/2233))
### [`v0.27.0`](https://github.com/encode/uvicorn/blob/HEAD/CHANGELOG.md#0270post1-2024-01-29)
[Compare Source](https://github.com/encode/uvicorn/compare/0.26.0...0.27.0)
##### Fixed
- Fix nav overrides for newer version of Mkdocs Material ([#​2233](https://github.com/encode/uvicorn/issues/2233))
### [`v0.26.0`](https://github.com/encode/uvicorn/blob/HEAD/CHANGELOG.md#0260-2024-01-16)
[Compare Source](https://github.com/encode/uvicorn/compare/0.25.0...0.26.0)
##### Changed
- Update `--root-path` to include the root path prefix in the full ASGI `path` as per the ASGI spec ([#​2213](https://github.com/encode/uvicorn/issues/2213))
- Use `__future__.annotations` on some internal modules ([#​2199](https://github.com/encode/uvicorn/issues/2199))
### [`v0.25.0`](https://github.com/encode/uvicorn/blob/HEAD/CHANGELOG.md#0250-2023-12-17)
[Compare Source](https://github.com/encode/uvicorn/compare/0.24.0.post1...0.25.0)
##### Added
- Support the WebSocket Denial Response ASGI extension ([#​1916](https://github.com/encode/uvicorn/issues/1916))
##### Fixed
- Allow explicit hidden file paths on `--reload-include` ([#​2176](https://github.com/encode/uvicorn/issues/2176))
- Properly annotate `uvicorn.run()` ([#​2158](https://github.com/encode/uvicorn/issues/2158))
### [`v0.24.0.post1`](https://github.com/encode/uvicorn/blob/HEAD/CHANGELOG.md#0240post1-2023-11-06)
[Compare Source](https://github.com/encode/uvicorn/compare/0.24.0...0.24.0.post1)
##### Fixed
- Revert mkdocs-material from 9.1.21 to 9.2.6 ([#​2148](https://github.com/encode/uvicorn/issues/2148))
### [`v0.24.0`](https://github.com/encode/uvicorn/blob/HEAD/CHANGELOG.md#0240post1-2023-11-06)
[Compare Source](https://github.com/encode/uvicorn/compare/0.23.2...0.24.0)
##### Fixed
- Revert mkdocs-material from 9.1.21 to 9.2.6 ([#​2148](https://github.com/encode/uvicorn/issues/2148))
### [`v0.23.2`](https://github.com/encode/uvicorn/blob/HEAD/CHANGELOG.md#0232-2023-07-31)
[Compare Source](https://github.com/encode/uvicorn/compare/0.23.1...0.23.2)
##### Fixed
- Maintain the same behavior of `websockets` from 10.4 on 11.0 ([#​2061](https://github.com/encode/uvicorn/issues/2061))
### [`v0.23.1`](https://github.com/encode/uvicorn/blob/HEAD/CHANGELOG.md#0231-2023-07-18)
[Compare Source](https://github.com/encode/uvicorn/compare/0.23.0...0.23.1)
##### Fixed
- Add `typing_extensions` for Python 3.10 and lower ([#​2053](https://github.com/encode/uvicorn/issues/2053))
### [`v0.23.0`](https://github.com/encode/uvicorn/blob/HEAD/CHANGELOG.md#0230-2023-07-10)
[Compare Source](https://github.com/encode/uvicorn/compare/0.22.0...0.23.0)
##### Added
- Add `--ws-max-queue` parameter WebSockets ([#​2033](https://github.com/encode/uvicorn/issues/2033))
##### Removed
- Drop support for Python 3.7 ([#​1996](https://github.com/encode/uvicorn/issues/1996))
- Remove `asgiref` as typing dependency ([#​1999](https://github.com/encode/uvicorn/issues/1999))
##### Fixed
- Set `scope["scheme"]` to `ws` or `wss` instead of `http` or `https` on `ProxyHeadersMiddleware` for WebSockets ([#​2043](https://github.com/encode/uvicorn/issues/2043))
##### Changed
- Raise `ImportError` on circular import ([#​2040](https://github.com/encode/uvicorn/issues/2040))
- Use `logger.getEffectiveLevel()` instead of `logger.level` to check if log level is `TRACE` ([#​1966](https://github.com/encode/uvicorn/issues/1966))
### [`v0.22.0`](https://github.com/encode/uvicorn/blob/HEAD/CHANGELOG.md#0220-2023-04-28)
[Compare Source](https://github.com/encode/uvicorn/compare/0.21.1...0.22.0)
##### Added
- Add `--timeout-graceful-shutdown` parameter ([#​1950](https://github.com/encode/uvicorn/issues/1950))
- Handle `SIGBREAK` on Windows ([#​1909](https://github.com/encode/uvicorn/issues/1909))
##### Fixed
- Shutdown event is now being triggered on Windows when using hot reload ([#​1584](https://github.com/encode/uvicorn/issues/1584))
- `--reload-delay` is effectively used on the `watchfiles` reloader ([#​1930](https://github.com/encode/uvicorn/issues/1930))
### [`v0.21.1`](https://github.com/encode/uvicorn/blob/HEAD/CHANGELOG.md#0211-2023-03-16)
[Compare Source](https://github.com/encode/uvicorn/compare/0.21.0...0.21.1)
##### Fixed
- Reset lifespan state on each request ([#​1903](https://github.com/encode/uvicorn/issues/1903))
### [`v0.21.0`](https://github.com/encode/uvicorn/blob/HEAD/CHANGELOG.md#0210-2023-03-09)
[Compare Source](https://github.com/encode/uvicorn/compare/0.20.0...0.21.0)
##### Added
- Introduce lifespan state ([#​1818](https://github.com/encode/uvicorn/issues/1818))
- Allow headers to be sent as iterables on H11 implementation ([#​1782](https://github.com/encode/uvicorn/issues/1782))
- Improve discoverability when --port=0 is used ([#​1890](https://github.com/encode/uvicorn/issues/1890))
##### Changed
- Avoid importing `h11` and `pyyaml` when not needed to improve import time ([#​1846](https://github.com/encode/uvicorn/issues/1846))
- Replace current native `WSGIMiddleware` implementation by `a2wsgi` ([#​1825](https://github.com/encode/uvicorn/issues/1825))
- Change default `--app-dir` from "." (dot) to "" (empty string) ([#​1835](https://github.com/encode/uvicorn/issues/1835))
##### Fixed
- Send code 1012 on shutdown for WebSockets ([#​1816](https://github.com/encode/uvicorn/issues/1816))
- Use `surrogateescape` to encode headers on `websockets` implementation ([#​1005](https://github.com/encode/uvicorn/issues/1005))
- Fix warning message on reload failure ([#​1784](https://github.com/encode/uvicorn/issues/1784))
### [`v0.20.0`](https://github.com/encode/uvicorn/blob/HEAD/CHANGELOG.md#0200-2022-11-20)
[Compare Source](https://github.com/encode/uvicorn/compare/0.19.0...0.20.0)
##### Added
- Check if handshake is completed before sending frame on `wsproto` shutdown ([#​1737](https://github.com/encode/uvicorn/issues/1737))
- Add default headers to WebSockets implementations ([#​1606](https://github.com/encode/uvicorn/issues/1606) & [#​1747](https://github.com/encode/uvicorn/issues/1747))
- Warn user when `reload` and `workers` flag are used together ([#​1731](https://github.com/encode/uvicorn/issues/1731))
##### Fixed
- Use correct `WebSocket` error codes on `close` ([#​1753](https://github.com/encode/uvicorn/issues/1753))
- Send disconnect event on connection lost for `wsproto` ([#​996](https://github.com/encode/uvicorn/issues/996))
- Add `SIGQUIT` handler to `UvicornWorker` ([#​1710](https://github.com/encode/uvicorn/issues/1710))
- Fix crash on exist with "--uds" if socket doesn't exist ([#​1725](https://github.com/encode/uvicorn/issues/1725))
- Annotate `CONFIG_KWARGS` in `UvicornWorker` class ([#​1746](https://github.com/encode/uvicorn/issues/1746))
##### Removed
- Remove conditional on `RemoteProtocolError.event_hint` on `wsproto` ([#​1486](https://github.com/encode/uvicorn/issues/1486))
- Remove unused `handle_no_connect` on `wsproto` implementation ([#​1759](https://github.com/encode/uvicorn/issues/1759))
### [`v0.19.0`](https://github.com/encode/uvicorn/blob/HEAD/CHANGELOG.md#0190-2022-10-19)
[Compare Source](https://github.com/encode/uvicorn/compare/0.18.3...0.19.0)
##### Added
- Support Python 3.11 ([#​1652](https://github.com/encode/uvicorn/issues/1652))
- Bump minimal `httptools` version to `0.5.0` ([#​1645](https://github.com/encode/uvicorn/issues/1645))
- Ignore HTTP/2 upgrade and optionally ignore WebSocket upgrade ([#​1661](https://github.com/encode/uvicorn/issues/1661))
- Add `py.typed` to comply with PEP 561 ([#​1687](https://github.com/encode/uvicorn/issues/1687))
##### Fixed
- Set `propagate` to `False` on "uvicorn" logger ([#​1288](https://github.com/encode/uvicorn/issues/1288))
- USR1 signal is now handled correctly on `UvicornWorker`. ([#​1565](https://github.com/encode/uvicorn/issues/1565))
- Use path with query string on `WebSockets` logs ([#​1385](https://github.com/encode/uvicorn/issues/1385))
- Fix behavior on which "Date" headers were not updated on the same connection ([#​1706](https://github.com/encode/uvicorn/issues/1706))
##### Removed
- Remove the `--debug` flag ([#​1640](https://github.com/encode/uvicorn/issues/1640))
- Remove the `DebugMiddleware` ([#​1697](https://github.com/encode/uvicorn/issues/1697))
### [`v0.18.3`](https://github.com/encode/uvicorn/blob/HEAD/CHANGELOG.md#0183-2022-08-24)
[Compare Source](https://github.com/encode/uvicorn/compare/0.18.2...0.18.3)
##### Fixed
- Remove cyclic references on HTTP implementations. ([#​1604](https://github.com/encode/uvicorn/issues/1604))
##### Changed
- `reload_delay` default changed from `None` to `0.25` on `uvicorn.run()` and `Config`. `None` is not an acceptable value anymore. ([#​1545](https://github.com/encode/uvicorn/issues/1545))
### [`v0.18.2`](https://github.com/encode/uvicorn/blob/HEAD/CHANGELOG.md#0182-2022-06-27)
[Compare Source](https://github.com/encode/uvicorn/compare/0.18.1...0.18.2)
##### Fixed
- Add default `log_config` on `uvicorn.run()` ([#​1541](https://github.com/encode/uvicorn/issues/1541))
- Revert `logging` file name modification ([#​1543](https://github.com/encode/uvicorn/issues/1543))
### [`v0.18.1`](https://github.com/encode/uvicorn/blob/HEAD/CHANGELOG.md#0181-2022-06-23)
[Compare Source](https://github.com/encode/uvicorn/compare/0.18.0...0.18.1)
##### Fixed
- Use `DEFAULT_MAX_INCOMPLETE_EVENT_SIZE` as default to `h11_max_incomplete_event_size` on the CLI ([#​1534](https://github.com/encode/uvicorn/issues/1534))
### [`v0.18.0`](https://github.com/encode/uvicorn/blob/HEAD/CHANGELOG.md#0180-2022-06-23)
[Compare Source](https://github.com/encode/uvicorn/compare/0.17.6...0.18.0)
##### Added
- The `reload` flag prioritizes `watchfiles` instead of the deprecated `watchgod` ([#​1437](https://github.com/encode/uvicorn/issues/1437))
- Annotate `uvicorn.run()` function ([#​1423](https://github.com/encode/uvicorn/issues/1423))
- Allow configuring `max_incomplete_event_size` for `h11` implementation ([#​1514](https://github.com/encode/uvicorn/issues/1514))
##### Removed
- Remove `asgiref` dependency ([#​1532](https://github.com/encode/uvicorn/issues/1532))
##### Fixed
- Turn `raw_path` into bytes on both websockets implementations ([#​1487](https://github.com/encode/uvicorn/issues/1487))
- Revert log exception traceback in case of invalid HTTP request ([#​1518](https://github.com/encode/uvicorn/issues/1518))
- Set `asyncio.WindowsSelectorEventLoopPolicy()` when using multiple workers to avoid "WinError 87" ([#​1454](https://github.com/encode/uvicorn/issues/1454))
### [`v0.17.6`](https://github.com/encode/uvicorn/blob/HEAD/CHANGELOG.md#0176-2022-03-11)
[Compare Source](https://github.com/encode/uvicorn/compare/0.17.5...0.17.6)
##### Changed
- Change `httptools` range to `>=0.4.0` ([#​1400](https://github.com/encode/uvicorn/issues/1400))
### [`v0.17.5`](https://github.com/encode/uvicorn/blob/HEAD/CHANGELOG.md#0175-2022-02-16)
[Compare Source](https://github.com/encode/uvicorn/compare/0.17.4...0.17.5)
##### Fixed
- Fix case where url is fragmented in httptools protocol ([#​1263](https://github.com/encode/uvicorn/issues/1263))
- Fix WSGI middleware not to explode quadratically in the case of a larger body ([#​1329](https://github.com/encode/uvicorn/issues/1329))
##### Changed
- Send HTTP 400 response for invalid request ([#​1352](https://github.com/encode/uvicorn/issues/1352))
### [`v0.17.4`](https://github.com/encode/uvicorn/blob/HEAD/CHANGELOG.md#0174-2022-02-04)
[Compare Source](https://github.com/encode/uvicorn/compare/0.17.3...0.17.4)
##### Fixed
- Replace `create_server` by `create_unix_server` ([#​1362](https://github.com/encode/uvicorn/issues/1362))
### [`v0.17.3`](https://github.com/encode/uvicorn/blob/HEAD/CHANGELOG.md#0173-2022-02-03)
[Compare Source](https://github.com/encode/uvicorn/compare/0.17.2...0.17.3)
##### Fixed
- Drop wsproto version checking. ([#​1359](https://github.com/encode/uvicorn/issues/1359))
### [`v0.17.2`](https://github.com/encode/uvicorn/blob/HEAD/CHANGELOG.md#0172-2022-02-03)
[Compare Source](https://github.com/encode/uvicorn/compare/0.17.1...0.17.2)
##### Fixed
- Revert [#​1332](https://github.com/encode/uvicorn/issues/1332). While trying to solve the memory leak, it introduced an issue ([#​1345](https://github.com/encode/uvicorn/issues/1345)) when the server receives big chunks of data using the `httptools` implementation. ([#​1354](https://github.com/encode/uvicorn/issues/1354))
- Revert stream interface changes. This was introduced on 0.14.0, and caused an issue ([#​1226](https://github.com/encode/uvicorn/issues/1226)), which caused a memory leak when sending TCP pings. ([#​1355](https://github.com/encode/uvicorn/issues/1355))
- Fix wsproto version check expression ([#​1342](https://github.com/encode/uvicorn/issues/1342))
### [`v0.17.1`](https://github.com/encode/uvicorn/blob/HEAD/CHANGELOG.md#0171-2022-01-28)
[Compare Source](https://github.com/encode/uvicorn/compare/0.17.0.post1...0.17.1)
##### Fixed
- Move all data handling logic to protocol and ensure connection is closed. ([#​1332](https://github.com/encode/uvicorn/issues/1332))
- Change `spec_version` field from "2.1" to "2.3", as Uvicorn is compliant with that version of the ASGI specifications. ([#​1337](https://github.com/encode/uvicorn/issues/1337))
### [`v0.17.0.post1`](https://github.com/encode/uvicorn/blob/HEAD/CHANGELOG.md#0170post1-2022-01-24)
[Compare Source](https://github.com/encode/uvicorn/compare/0.17.0...0.17.0.post1)
##### Fixed
- Add the `python_requires` version specifier ([#​1328](https://github.com/encode/uvicorn/issues/1328))
### [`v0.17.0`](https://github.com/encode/uvicorn/blob/HEAD/CHANGELOG.md#0170post1-2022-01-24)
[Compare Source](https://github.com/encode/uvicorn/compare/0.16.0...0.17.0)
##### Fixed
- Add the `python_requires` version specifier ([#​1328](https://github.com/encode/uvicorn/issues/1328))
### [`v0.16.0`](https://github.com/encode/uvicorn/blob/HEAD/CHANGELOG.md#0160-2021-12-08)
[Compare Source](https://github.com/encode/uvicorn/compare/0.15.0...0.16.0)
##### Added
- Enable read of uvicorn settings from environment variables ([#​1279](https://github.com/encode/uvicorn/issues/1279))
- Bump `websockets` to 10.0. ([#​1180](https://github.com/encode/uvicorn/issues/1180))
- Ensure non-zero exit code when startup fails ([#​1278](https://github.com/encode/uvicorn/issues/1278))
- Increase `httptools` version range from "==0.2.\*" to ">=0.2.0,<0.4.0". ([#​1243](https://github.com/encode/uvicorn/issues/1243))
- Override default asyncio event loop with reload only on Windows ([#​1257](https://github.com/encode/uvicorn/issues/1257))
- Replace `HttpToolsProtocol.pipeline` type from `list` to `deque`. ([#​1213](https://github.com/encode/uvicorn/issues/1213))
- Replace `WSGIResponder.send_queue` type from `list` to `deque`. ([#​1214](https://github.com/encode/uvicorn/issues/1214))
##### Fixed
- Main process exit after startup failure on reloader classes ([#​1177](https://github.com/encode/uvicorn/issues/1177))
- Add explicit casting on click options ([#​1217](https://github.com/encode/uvicorn/issues/1217))
- Allow WebSocket close event to receive reason being None from ASGI app. ([#​1259](https://github.com/encode/uvicorn/issues/1259))
- Fix a bug in `WebSocketProtocol.asgi_receive` on which we returned a close frame even if there were data messages before that frame in the read queue. ([#​1252](https://github.com/encode/uvicorn/issues/1252))
- The option `--reload-dirs` was splitting a string into single character directories. ([#​1267](https://github.com/encode/uvicorn/issues/1267))
- Only second SIGINT is able to forcefully shutdown the server ([#​1269](https://github.com/encode/uvicorn/issues/1269))
- Allow app-dir parameter on the run() function ([#​1271](https://github.com/encode/uvicorn/issues/1271))
### [`v0.15.0`](https://github.com/encode/uvicorn/blob/HEAD/CHANGELOG.md#0150-2021-08-13)
[Compare Source](https://github.com/encode/uvicorn/compare/0.14.0...0.15.0)
##### Added
- Change reload to be configurable with glob patterns. Currently only `.py` files are watched, which is different from the previous default behavior. ([#​820](https://github.com/encode/uvicorn/issues/820))
- Add Python 3.10-rc.1 support. Now the server uses `asyncio.run` which will: start a fresh asyncio event loop, on shutdown cancel any background tasks rather than aborting them, `aexit` any remaining async generators, and shutdown the default `ThreadPoolExecutor`. ([#​1070](https://github.com/encode/uvicorn/issues/1070))
- Exit with status 3 when worker starts failed ([#​1077](https://github.com/encode/uvicorn/issues/1077))
- Add option to set websocket ping interval and timeout ([#​1048](https://github.com/encode/uvicorn/issues/1048))
- Adapt bind_socket to make it usable with multiple processes ([#​1009](https://github.com/encode/uvicorn/issues/1009))
- Add existence check to the reload directory(ies) ([#​1089](https://github.com/encode/uvicorn/issues/1089))
- Add missing trace log for websocket protocols ([#​1083](https://github.com/encode/uvicorn/issues/1083))
- Support disabling default Server and Date headers ([#​818](https://github.com/encode/uvicorn/issues/818))
##### Changed
- Add PEP440 compliant version of click ([#​1099](https://github.com/encode/uvicorn/issues/1099))
- Bump asgiref to 3.4.0 ([#​1100](https://github.com/encode/uvicorn/issues/1100))
##### Fixed
- When receiving a `SIGTERM` supervisors now terminate their processes before joining them ([#​1069](https://github.com/encode/uvicorn/issues/1069))
- Fix the need of `httptools` on minimal installation ([#​1135](https://github.com/encode/uvicorn/issues/1135))
- Fix ping parameters annotation in Config class ([#​1127](https://github.com/encode/uvicorn/issues/1127))
### [`v0.14.0`](https://github.com/encode/uvicorn/blob/HEAD/CHANGELOG.md#0140-2021-06-01)
[Compare Source](https://github.com/encode/uvicorn/compare/0.13.4...0.14.0)
##### Added
- Defaults ws max_size on server to 16MB ([#​995](https://github.com/encode/uvicorn/issues/995))
- Improve user feedback if no ws library installed ([#​926](https://github.com/encode/uvicorn/issues/926) and [#​1023](https://github.com/encode/uvicorn/issues/1023))
- Support 'reason' field in 'websocket.close' messages ([#​957](https://github.com/encode/uvicorn/issues/957))
- Implemented lifespan.shutdown.failed ([#​755](https://github.com/encode/uvicorn/issues/755))
##### Changed
- Upgraded websockets requirements ([#​1065](https://github.com/encode/uvicorn/issues/1065))
- Switch to asyncio streams API ([#​869](https://github.com/encode/uvicorn/issues/869))
- Update httptools from 0.1.\* to 0.2.\* ([#​1024](https://github.com/encode/uvicorn/issues/1024))
- Allow Click 8.0, refs [#​1016](https://github.com/encode/uvicorn/issues/1016) ([#​1042](https://github.com/encode/uvicorn/issues/1042))
- Add search for a trusted host in ProxyHeadersMiddleware ([#​591](https://github.com/encode/uvicorn/issues/591))
- Up wsproto to 1.0.0 ([#​892](https://github.com/encode/uvicorn/issues/892))
##### Fixed
- Force reload_dirs to be a list ([#​978](https://github.com/encode/uvicorn/issues/978))
- Fix gunicorn worker not running if extras not installed ([#​901](https://github.com/encode/uvicorn/issues/901))
- Fix socket port 0 ([#​975](https://github.com/encode/uvicorn/issues/975))
- Prevent garbage collection of main lifespan task ([#​972](https://github.com/encode/uvicorn/issues/972))
</details>
---
### Configuration
📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.
♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 **Ignore**: Close this PR and you won't be reminded about this update again.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box
---
This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOC4xOC4xMSIsInVwZGF0ZWRJblZlciI6IjM4LjI0LjEiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbXX0=-->
Because you closed this PR without merging, Renovate will ignore this update (==0.30.6). You will get a PR once a newer version is released. To ignore this dependency forever, add it to the ignoreDeps array of your Renovate config.
If you accidentally closed this PR, or if you changed your mind: rename this PR to get a fresh replacement PR.
### Renovate Ignore Notification
Because you closed this PR without merging, Renovate will ignore this update (`==0.30.6`). You will get a PR once a newer version is released. To ignore this dependency forever, add it to the `ignoreDeps` array of your Renovate config.
If you accidentally closed this PR, or if you changed your mind: rename this PR to get a fresh replacement PR.
Pull request closed
Please reopen this pull request to perform a merge.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
This PR contains the following updates:
==0.13.4->==0.30.6Release Notes
encode/uvicorn (uvicorn)
v0.30.6Compare Source
Fixed
v0.30.5Compare Source
Fixed
v0.30.4Compare Source
Fixed
h11sets client state toMUST_CLOSE(#2375)v0.30.3Compare Source
Fixed
KeyboardInterruptfrom CLI and programmatic usage (#2384)ClientDisconnectinherits fromOSErrorinstead ofIOError(#2393)v0.30.2Compare Source
Added
reasonsupport towebsocket.disconnectevent (#2324)Fixed
v0.30.1Compare Source
Fixed
\tin response header values (#2345)v0.30.0Compare Source
Added
ConfigParseror aio.IO[Any]onlog_config(#1976)Fixed
content-lengthheader on 5xx (#2304)Deprecated
uvicorn.workersmodule (#2302)v0.29.0Compare Source
Added
v0.28.1Compare Source
Fixed
ClientDisconnectedon HTTP (#2276)v0.28.0Compare Source
Added
ClientDisconnectedonsend()when client disconnected (#2220)Fixed
AttributeErroronsys.stdin.fileno()for Windows IIS10 (#1947)X-Forwarded-Protofor WebSockets scheme when the proxy provides it (#2258)v0.27.1Compare Source
v0.27.0.post1Compare Source
Fixed
v0.27.0Compare Source
Fixed
v0.26.0Compare Source
Changed
--root-pathto include the root path prefix in the full ASGIpathas per the ASGI spec (#2213)__future__.annotationson some internal modules (#2199)v0.25.0Compare Source
Added
Fixed
--reload-include(#2176)uvicorn.run()(#2158)v0.24.0.post1Compare Source
Fixed
v0.24.0Compare Source
Fixed
v0.23.2Compare Source
Fixed
websocketsfrom 10.4 on 11.0 (#2061)v0.23.1Compare Source
Fixed
typing_extensionsfor Python 3.10 and lower (#2053)v0.23.0Compare Source
Added
--ws-max-queueparameter WebSockets (#2033)Removed
asgirefas typing dependency (#1999)Fixed
scope["scheme"]towsorwssinstead ofhttporhttpsonProxyHeadersMiddlewarefor WebSockets (#2043)Changed
ImportErroron circular import (#2040)logger.getEffectiveLevel()instead oflogger.levelto check if log level isTRACE(#1966)v0.22.0Compare Source
Added
--timeout-graceful-shutdownparameter (#1950)SIGBREAKon Windows (#1909)Fixed
--reload-delayis effectively used on thewatchfilesreloader (#1930)v0.21.1Compare Source
Fixed
v0.21.0Compare Source
Added
Changed
h11andpyyamlwhen not needed to improve import time (#1846)WSGIMiddlewareimplementation bya2wsgi(#1825)--app-dirfrom "." (dot) to "" (empty string) (#1835)Fixed
surrogateescapeto encode headers onwebsocketsimplementation (#1005)v0.20.0Compare Source
Added
wsprotoshutdown (#1737)reloadandworkersflag are used together (#1731)Fixed
WebSocketerror codes onclose(#1753)wsproto(#996)SIGQUIThandler toUvicornWorker(#1710)CONFIG_KWARGSinUvicornWorkerclass (#1746)Removed
RemoteProtocolError.event_hintonwsproto(#1486)handle_no_connectonwsprotoimplementation (#1759)v0.19.0Compare Source
Added
httptoolsversion to0.5.0(#1645)py.typedto comply with PEP 561 (#1687)Fixed
propagatetoFalseon "uvicorn" logger (#1288)UvicornWorker. (#1565)WebSocketslogs (#1385)Removed
--debugflag (#1640)DebugMiddleware(#1697)v0.18.3Compare Source
Fixed
Changed
reload_delaydefault changed fromNoneto0.25onuvicorn.run()andConfig.Noneis not an acceptable value anymore. (#1545)v0.18.2Compare Source
Fixed
log_configonuvicorn.run()(#1541)loggingfile name modification (#1543)v0.18.1Compare Source
Fixed
DEFAULT_MAX_INCOMPLETE_EVENT_SIZEas default toh11_max_incomplete_event_sizeon the CLI (#1534)v0.18.0Compare Source
Added
reloadflag prioritizeswatchfilesinstead of the deprecatedwatchgod(#1437)uvicorn.run()function (#1423)max_incomplete_event_sizeforh11implementation (#1514)Removed
asgirefdependency (#1532)Fixed
raw_pathinto bytes on both websockets implementations (#1487)asyncio.WindowsSelectorEventLoopPolicy()when using multiple workers to avoid "WinError 87" (#1454)v0.17.6Compare Source
Changed
httptoolsrange to>=0.4.0(#1400)v0.17.5Compare Source
Fixed
Changed
v0.17.4Compare Source
Fixed
create_serverbycreate_unix_server(#1362)v0.17.3Compare Source
Fixed
v0.17.2Compare Source
Fixed
httptoolsimplementation. (#1354)v0.17.1Compare Source
Fixed
spec_versionfield from "2.1" to "2.3", as Uvicorn is compliant with that version of the ASGI specifications. (#1337)v0.17.0.post1Compare Source
Fixed
python_requiresversion specifier (#1328)v0.17.0Compare Source
Fixed
python_requiresversion specifier (#1328)v0.16.0Compare Source
Added
websocketsto 10.0. (#1180)httptoolsversion range from "==0.2.*" to ">=0.2.0,<0.4.0". (#1243)HttpToolsProtocol.pipelinetype fromlisttodeque. (#1213)WSGIResponder.send_queuetype fromlisttodeque. (#1214)Fixed
WebSocketProtocol.asgi_receiveon which we returned a close frame even if there were data messages before that frame in the read queue. (#1252)--reload-dirswas splitting a string into single character directories. (#1267)v0.15.0Compare Source
Added
.pyfiles are watched, which is different from the previous default behavior. (#820)asyncio.runwhich will: start a fresh asyncio event loop, on shutdown cancel any background tasks rather than aborting them,aexitany remaining async generators, and shutdown the defaultThreadPoolExecutor. (#1070)Changed
Fixed
SIGTERMsupervisors now terminate their processes before joining them (#1069)httptoolson minimal installation (#1135)v0.14.0Compare Source
Added
Changed
Fixed
Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by Renovate Bot.
770fcddf93to55631cb682Update dependency uvicorn to v0.30.5to Update dependency uvicorn to v0.30.6Renovate Ignore Notification
Because you closed this PR without merging, Renovate will ignore this update (
==0.30.6). You will get a PR once a newer version is released. To ignore this dependency forever, add it to theignoreDepsarray of your Renovate config.If you accidentally closed this PR, or if you changed your mind: rename this PR to get a fresh replacement PR.
Pull request closed