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) 03/02/22
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) 03/02/22
Fix wsproto version check expression (#1342) 28/01/22
Ensure non-zero exit code when startup fails (#1278) 06/12/21
Increase httptools version range from "==0.2.*" to ">=0.2.0,<0.4.0". (#1243) 8/11/21
Override default asyncio event loop with reload only on Windows (#1257) 24/11/21
Replace HttpToolsProtocol.pipeline type from list to deque. (#1213) 10/10/21
Replace WSGIResponder.send_queue type from list to deque. (#1214) 10/10/21
Fixed
Main process exit after startup failure on reloader classes (#1177) 30/09/21
Add explicit casting on click options (#1217) 11/10/21
Allow WebSocket close event to receive reason being None from ASGI app. (#1259) 23/11/21
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) 25/11/21
The option --reload-dirs was splitting a string into single character directories. (#1267) 25/11/21
Only second SIGINT is able to forcefully shutdown the server (#1269) 28/11/21
Allow app-dir parameter on the run() function (#1271) 06/12/21
Change reload to be configurable with glob patterns. Currently only .py files are watched, which is different from the previous default behavior. (#820) 08/08/21
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) 30/07/21
Exit with status 3 when worker starts failed (#1077) 22/06/21
Add option to set websocket ping interval and timeout (#1048) 09/06/21
Adapt bind_socket to make it usable with multiple processes (#1009) 21/06/21
Add existence check to the reload directory(ies) (#1089) 21/06/21
Add missing trace log for websocket protocols (#1083) 19/06/21
Support disabling default Server and Date headers (#818) 11/06/21
Changed
Add PEP440 compliant version of click (#1099) 29/06/21
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.3` -> `==0.27.1` |
---
### Release Notes
<details>
<summary>encode/uvicorn (uvicorn)</summary>
### [`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)) 10/02/24
### [`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)) 26/01/24
### [`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)) 26/01/24
### [`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)) 16/01/24
- Use `__future__.annotations` on some internal modules ([#​2199](https://github.com/encode/uvicorn/issues/2199)) 16/01/24
### [`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)) 17/12/23
##### Fixed
- Allow explicit hidden file paths on `--reload-include` ([#​2176](https://github.com/encode/uvicorn/issues/2176)) 08/12/23
- Properly annotate `uvicorn.run()` ([#​2158](https://github.com/encode/uvicorn/issues/2158)) 22/11/23
### [`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)) 05/11/23
### [`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)) 05/11/23
### [`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)) 30/07/23
### [`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)) 18/07/23
### [`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)) 10/07/23
##### Removed
- Drop support for Python 3.7 ([#​1996](https://github.com/encode/uvicorn/issues/1996)) 19/06/23
- Remove `asgiref` as typing dependency ([#​1999](https://github.com/encode/uvicorn/issues/1999)) 08/06/23
##### 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)) 12/07/23
##### Changed
- Raise `ImportError` on circular import ([#​2040](https://github.com/encode/uvicorn/issues/2040)) 09/07/23
- Use `logger.getEffectiveLevel()` instead of `logger.level` to check if log level is `TRACE` ([#​1966](https://github.com/encode/uvicorn/issues/1966)) 01/06/23
### [`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)) 26/04/23
- Handle `SIGBREAK` on Windows ([#​1909](https://github.com/encode/uvicorn/issues/1909)) 15/04/23
##### Fixed
- Shutdown event is now being triggered on Windows when using hot reload ([#​1584](https://github.com/encode/uvicorn/issues/1584)) 13/04/23
- `--reload-delay` is effectively used on the `watchfiles` reloader ([#​1930](https://github.com/encode/uvicorn/issues/1930)) 22/04/23
### [`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)) 16/03/23
### [`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)) 05/03/23
- Allow headers to be sent as iterables on H11 implementation ([#​1782](https://github.com/encode/uvicorn/issues/1782)) 27/11/22
- Improve discoverability when --port=0 is used ([#​1890](https://github.com/encode/uvicorn/issues/1890)) 09/03/23
##### Changed
- Avoid importing `h11` and `pyyaml` when not needed to improve import time ([#​1846](https://github.com/encode/uvicorn/issues/1846)) 07/02/23
- Replace current native `WSGIMiddleware` implementation by `a2wsgi` ([#​1825](https://github.com/encode/uvicorn/issues/1825)) 16/01/23
- Change default `--app-dir` from "." (dot) to "" (empty string) ([#​1835](https://github.com/encode/uvicorn/issues/1835)) 06/01/23
##### Fixed
- Send code 1012 on shutdown for WebSockets ([#​1816](https://github.com/encode/uvicorn/issues/1816)) 06/01/23
- Use `surrogateescape` to encode headers on `websockets` implementation ([#​1005](https://github.com/encode/uvicorn/issues/1005)) 12/12/22
- Fix warning message on reload failure ([#​1784](https://github.com/encode/uvicorn/issues/1784)) 29/11/22
### [`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)) 28/10/22
- Warn user when `reload` and `workers` flag are used together ([#​1731](https://github.com/encode/uvicorn/issues/1731)) 31/10/22
##### Fixed
- Use correct `WebSocket` error codes on `close` ([#​1753](https://github.com/encode/uvicorn/issues/1753)) 20/11/22
- Send disconnect event on connection lost for `wsproto` ([#​996](https://github.com/encode/uvicorn/issues/996)) 29/10/22
- Add `SIGQUIT` handler to `UvicornWorker` ([#​1710](https://github.com/encode/uvicorn/issues/1710)) 01/11/22
- Fix crash on exist with "--uds" if socket doesn't exist ([#​1725](https://github.com/encode/uvicorn/issues/1725)) 27/10/22
- Annotate `CONFIG_KWARGS` in `UvicornWorker` class ([#​1746](https://github.com/encode/uvicorn/issues/1746)) 31/10/22
##### Removed
- Remove conditional on `RemoteProtocolError.event_hint` on `wsproto` ([#​1486](https://github.com/encode/uvicorn/issues/1486)) 31/10/22
- Remove unused `handle_no_connect` on `wsproto` implementation ([#​1759](https://github.com/encode/uvicorn/issues/1759)) 17/11/22
### [`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)) 16/09/22
- Bump minimal `httptools` version to `0.5.0` ([#​1645](https://github.com/encode/uvicorn/issues/1645)) 13/09/22
- Ignore HTTP/2 upgrade and optionally ignore WebSocket upgrade ([#​1661](https://github.com/encode/uvicorn/issues/1661)) 19/10/22
- Add `py.typed` to comply with PEP 561 ([#​1687](https://github.com/encode/uvicorn/issues/1687)) 07/10/22
##### Fixed
- Set `propagate` to `False` on "uvicorn" logger ([#​1288](https://github.com/encode/uvicorn/issues/1288)) 08/10/22
- USR1 signal is now handled correctly on `UvicornWorker`. ([#​1565](https://github.com/encode/uvicorn/issues/1565)) 26/08/22
- Use path with query string on `WebSockets` logs ([#​1385](https://github.com/encode/uvicorn/issues/1385)) 11/09/22
- Fix behavior on which "Date" headers were not updated on the same connection ([#​1706](https://github.com/encode/uvicorn/issues/1706)) 19/10/22
##### Removed
- Remove the `--debug` flag ([#​1640](https://github.com/encode/uvicorn/issues/1640)) 14/09/22
- Remove the `DebugMiddleware` ([#​1697](https://github.com/encode/uvicorn/issues/1697)) 07/10/22
### [`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)) 24/08/22
##### 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)) 02/07/22
### [`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)) 24/06/22
- Revert `logging` file name modification ([#​1543](https://github.com/encode/uvicorn/issues/1543)) 27/06/22
### [`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)) 23/06/22
### [`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)) 18/06/22
- Annotate `uvicorn.run()` function ([#​1423](https://github.com/encode/uvicorn/issues/1423)) 10/05/22
- Allow configuring `max_incomplete_event_size` for `h11` implementation ([#​1514](https://github.com/encode/uvicorn/issues/1514)) 22/06/22
##### Removed
- Remove `asgiref` dependency ([#​1532](https://github.com/encode/uvicorn/issues/1532)) 22/06/22
##### Fixed
- Turn `raw_path` into bytes on both websockets implementations ([#​1487](https://github.com/encode/uvicorn/issues/1487)) 16/05/22
- Revert log exception traceback in case of invalid HTTP request ([#​1518](https://github.com/encode/uvicorn/issues/1518)) 14/06/22
- Set `asyncio.WindowsSelectorEventLoopPolicy()` when using multiple workers to avoid "WinError 87" ([#​1454](https://github.com/encode/uvicorn/issues/1454)) 22/06/22
### [`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)) 11/03/22
### [`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)) 16/02/22
- Fix WSGI middleware not to explode quadratically in the case of a larger body ([#​1329](https://github.com/encode/uvicorn/issues/1329)) 16/02/16
##### Changed
- Send HTTP 400 response for invalid request ([#​1352](https://github.com/encode/uvicorn/issues/1352)) 2/11/22
### [`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)) 04/02/22
### [`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)) 03/02/22
### [`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)) 03/02/22
- 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)) 03/02/22
- Fix wsproto version check expression ([#​1342](https://github.com/encode/uvicorn/issues/1342)) 28/01/22
### [`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)) 28/01/22
- 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)) 25/01/22
### [`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)) 17/01/22
### [`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)) 17/01/22
### [`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)) 06/12/21
- Bump `websockets` to 10.0. ([#​1180](https://github.com/encode/uvicorn/issues/1180)) 13/09/21
- Ensure non-zero exit code when startup fails ([#​1278](https://github.com/encode/uvicorn/issues/1278)) 06/12/21
- Increase `httptools` version range from "==0.2.\*" to ">=0.2.0,<0.4.0". ([#​1243](https://github.com/encode/uvicorn/issues/1243)) 8/11/21
- Override default asyncio event loop with reload only on Windows ([#​1257](https://github.com/encode/uvicorn/issues/1257)) 24/11/21
- Replace `HttpToolsProtocol.pipeline` type from `list` to `deque`. ([#​1213](https://github.com/encode/uvicorn/issues/1213)) 10/10/21
- Replace `WSGIResponder.send_queue` type from `list` to `deque`. ([#​1214](https://github.com/encode/uvicorn/issues/1214)) 10/10/21
##### Fixed
- Main process exit after startup failure on reloader classes ([#​1177](https://github.com/encode/uvicorn/issues/1177)) 30/09/21
- Add explicit casting on click options ([#​1217](https://github.com/encode/uvicorn/issues/1217)) 11/10/21
- Allow WebSocket close event to receive reason being None from ASGI app. ([#​1259](https://github.com/encode/uvicorn/issues/1259)) 23/11/21
- 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)) 25/11/21
- The option `--reload-dirs` was splitting a string into single character directories. ([#​1267](https://github.com/encode/uvicorn/issues/1267)) 25/11/21
- Only second SIGINT is able to forcefully shutdown the server ([#​1269](https://github.com/encode/uvicorn/issues/1269)) 28/11/21
- Allow app-dir parameter on the run() function ([#​1271](https://github.com/encode/uvicorn/issues/1271)) 06/12/21
### [`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)) 08/08/21
- 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)) 30/07/21
- Exit with status 3 when worker starts failed ([#​1077](https://github.com/encode/uvicorn/issues/1077)) 22/06/21
- Add option to set websocket ping interval and timeout ([#​1048](https://github.com/encode/uvicorn/issues/1048)) 09/06/21
- Adapt bind_socket to make it usable with multiple processes ([#​1009](https://github.com/encode/uvicorn/issues/1009)) 21/06/21
- Add existence check to the reload directory(ies) ([#​1089](https://github.com/encode/uvicorn/issues/1089)) 21/06/21
- Add missing trace log for websocket protocols ([#​1083](https://github.com/encode/uvicorn/issues/1083)) 19/06/21
- Support disabling default Server and Date headers ([#​818](https://github.com/encode/uvicorn/issues/818)) 11/06/21
##### Changed
- Add PEP440 compliant version of click ([#​1099](https://github.com/encode/uvicorn/issues/1099)) 29/06/21
- Bump asgiref to 3.4.0 ([#​1100](https://github.com/encode/uvicorn/issues/1100)) 29/06/21
##### Fixed
- When receiving a `SIGTERM` supervisors now terminate their processes before joining them ([#​1069](https://github.com/encode/uvicorn/issues/1069)) 30/07/21
- Fix the need of `httptools` on minimal installation ([#​1135](https://github.com/encode/uvicorn/issues/1135)) 30/07/21
- Fix ping parameters annotation in Config class ([#​1127](https://github.com/encode/uvicorn/issues/1127)) 19/07/21
### [`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)) 5/29/21
- 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)) 2/27/21
- Support 'reason' field in 'websocket.close' messages ([#​957](https://github.com/encode/uvicorn/issues/957)) 2/24/21
- Implemented lifespan.shutdown.failed ([#​755](https://github.com/encode/uvicorn/issues/755)) 2/25/21
##### Changed
- Upgraded websockets requirements ([#​1065](https://github.com/encode/uvicorn/issues/1065)) 6/1/21
- Switch to asyncio streams API ([#​869](https://github.com/encode/uvicorn/issues/869)) 5/29/21
- Update httptools from 0.1.\* to 0.2.\* ([#​1024](https://github.com/encode/uvicorn/issues/1024)) 5/28/21
- Allow Click 8.0, refs [#​1016](https://github.com/encode/uvicorn/issues/1016) ([#​1042](https://github.com/encode/uvicorn/issues/1042)) 5/23/21
- Add search for a trusted host in ProxyHeadersMiddleware ([#​591](https://github.com/encode/uvicorn/issues/591)) 3/13/21
- Up wsproto to 1.0.0 ([#​892](https://github.com/encode/uvicorn/issues/892)) 2/25/21
##### Fixed
- Force reload_dirs to be a list ([#​978](https://github.com/encode/uvicorn/issues/978)) 6/1/21
- Fix gunicorn worker not running if extras not installed ([#​901](https://github.com/encode/uvicorn/issues/901)) 5/28/21
- Fix socket port 0 ([#​975](https://github.com/encode/uvicorn/issues/975)) 3/5/21
- Prevent garbage collection of main lifespan task ([#​972](https://github.com/encode/uvicorn/issues/972)) 3/4/21
### [`v0.13.4`](https://github.com/encode/uvicorn/blob/HEAD/CHANGELOG.md#0134---2021-02-20)
[Compare Source](https://github.com/encode/uvicorn/compare/0.13.3...0.13.4)
##### Fixed
- Fixed wsgi middleware PATH_INFO encoding ([#​962](https://github.com/encode/uvicorn/issues/962)) 2/20/21
- Fixed uvloop dependency ([#​952](https://github.com/encode/uvicorn/issues/952)) 2/10/21 then ([#​959](https://github.com/encode/uvicorn/issues/959)) 2/20/21
- Relax watchgod up bound ([#​946](https://github.com/encode/uvicorn/issues/946)) 1/31/21
- Return 'connection: close' header in response ([#​721](https://github.com/encode/uvicorn/issues/721)) 1/25/21
##### Added:
- Docs: Nginx + websockets ([#​948](https://github.com/encode/uvicorn/issues/948)) 2/10/21
- Document the default value of 1 for workers ([#​940](https://github.com/encode/uvicorn/issues/940)) ([#​943](https://github.com/encode/uvicorn/issues/943)) 1/25/21
- Enabled permessage-deflate extension in websockets ([#​764](https://github.com/encode/uvicorn/issues/764)) 1/1/21
</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:eyJjcmVhdGVkSW5WZXIiOiIzNy4xODIuMyIsInVwZGF0ZWRJblZlciI6IjM3LjE4Mi4zIiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9-->
Because you closed this PR without merging, Renovate will ignore this update (==0.27.1). 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.27.1`). 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.
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.3->==0.27.1Release Notes
encode/uvicorn (uvicorn)
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) 16/01/24__future__.annotationson some internal modules (#2199) 16/01/24v0.25.0Compare Source
Added
Fixed
--reload-include(#2176) 08/12/23uvicorn.run()(#2158) 22/11/23v0.24.0.post1Compare Source
Fixed
v0.24.0Compare Source
Fixed
v0.23.2Compare Source
Fixed
websocketsfrom 10.4 on 11.0 (#2061) 30/07/23v0.23.1Compare Source
Fixed
typing_extensionsfor Python 3.10 and lower (#2053) 18/07/23v0.23.0Compare Source
Added
--ws-max-queueparameter WebSockets (#2033) 10/07/23Removed
asgirefas typing dependency (#1999) 08/06/23Fixed
scope["scheme"]towsorwssinstead ofhttporhttpsonProxyHeadersMiddlewarefor WebSockets (#2043) 12/07/23Changed
ImportErroron circular import (#2040) 09/07/23logger.getEffectiveLevel()instead oflogger.levelto check if log level isTRACE(#1966) 01/06/23v0.22.0Compare Source
Added
--timeout-graceful-shutdownparameter (#1950) 26/04/23SIGBREAKon Windows (#1909) 15/04/23Fixed
--reload-delayis effectively used on thewatchfilesreloader (#1930) 22/04/23v0.21.1Compare Source
Fixed
v0.21.0Compare Source
Added
Changed
h11andpyyamlwhen not needed to improve import time (#1846) 07/02/23WSGIMiddlewareimplementation bya2wsgi(#1825) 16/01/23--app-dirfrom "." (dot) to "" (empty string) (#1835) 06/01/23Fixed
surrogateescapeto encode headers onwebsocketsimplementation (#1005) 12/12/22v0.20.0Compare Source
Added
wsprotoshutdown (#1737)reloadandworkersflag are used together (#1731) 31/10/22Fixed
WebSocketerror codes onclose(#1753) 20/11/22wsproto(#996) 29/10/22SIGQUIThandler toUvicornWorker(#1710) 01/11/22CONFIG_KWARGSinUvicornWorkerclass (#1746) 31/10/22Removed
RemoteProtocolError.event_hintonwsproto(#1486) 31/10/22handle_no_connectonwsprotoimplementation (#1759) 17/11/22v0.19.0Compare Source
Added
httptoolsversion to0.5.0(#1645) 13/09/22py.typedto comply with PEP 561 (#1687) 07/10/22Fixed
propagatetoFalseon "uvicorn" logger (#1288) 08/10/22UvicornWorker. (#1565) 26/08/22WebSocketslogs (#1385) 11/09/22Removed
--debugflag (#1640) 14/09/22DebugMiddleware(#1697) 07/10/22v0.18.3Compare Source
Fixed
Changed
reload_delaydefault changed fromNoneto0.25onuvicorn.run()andConfig.Noneis not an acceptable value anymore. (#1545) 02/07/22v0.18.2Compare Source
Fixed
log_configonuvicorn.run()(#1541) 24/06/22loggingfile name modification (#1543) 27/06/22v0.18.1Compare Source
Fixed
DEFAULT_MAX_INCOMPLETE_EVENT_SIZEas default toh11_max_incomplete_event_sizeon the CLI (#1534) 23/06/22v0.18.0Compare Source
Added
reloadflag prioritizeswatchfilesinstead of the deprecatedwatchgod(#1437) 18/06/22uvicorn.run()function (#1423) 10/05/22max_incomplete_event_sizeforh11implementation (#1514) 22/06/22Removed
asgirefdependency (#1532) 22/06/22Fixed
raw_pathinto bytes on both websockets implementations (#1487) 16/05/22asyncio.WindowsSelectorEventLoopPolicy()when using multiple workers to avoid "WinError 87" (#1454) 22/06/22v0.17.6Compare Source
Changed
httptoolsrange to>=0.4.0(#1400) 11/03/22v0.17.5Compare Source
Fixed
Changed
v0.17.4Compare Source
Fixed
create_serverbycreate_unix_server(#1362) 04/02/22v0.17.3Compare Source
Fixed
v0.17.2Compare Source
Fixed
httptoolsimplementation. (#1354) 03/02/22v0.17.1Compare Source
Fixed
spec_versionfield from "2.1" to "2.3", as Uvicorn is compliant with that version of the ASGI specifications. (#1337) 25/01/22v0.17.0.post1Compare Source
Fixed
python_requiresversion specifier (#1328) 17/01/22v0.17.0Compare Source
Fixed
python_requiresversion specifier (#1328) 17/01/22v0.16.0Compare Source
Added
websocketsto 10.0. (#1180) 13/09/21httptoolsversion range from "==0.2.*" to ">=0.2.0,<0.4.0". (#1243) 8/11/21HttpToolsProtocol.pipelinetype fromlisttodeque. (#1213) 10/10/21WSGIResponder.send_queuetype fromlisttodeque. (#1214) 10/10/21Fixed
WebSocketProtocol.asgi_receiveon which we returned a close frame even if there were data messages before that frame in the read queue. (#1252) 25/11/21--reload-dirswas splitting a string into single character directories. (#1267) 25/11/21v0.15.0Compare Source
Added
.pyfiles are watched, which is different from the previous default behavior. (#820) 08/08/21asyncio.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) 30/07/21Changed
Fixed
SIGTERMsupervisors now terminate their processes before joining them (#1069) 30/07/21httptoolson minimal installation (#1135) 30/07/21v0.14.0Compare Source
Added
Changed
Fixed
v0.13.4Compare Source
Fixed
Added:
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.
Renovate Ignore Notification
Because you closed this PR without merging, Renovate will ignore this update (
==0.27.1). 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.