aio-libs/aiohttp (aiohttp)
### [`v3.10.3`](https://togithub.com/aio-libs/aiohttp/blob/HEAD/CHANGES.rst#3103-2024-08-10)
[Compare Source](https://togithub.com/aio-libs/aiohttp/compare/v3.10.2...v3.10.3)
\========================
## Bug fixes
- Fixed multipart reading when stream buffer splits the boundary over several read() calls -- by :user:`Dreamsorcerer`.
*Related issues and pull requests on GitHub:*
:issue:`8653`.
- Fixed :py:class:`aiohttp.TCPConnector` doing blocking I/O in the event loop to create the `SSLContext` -- by :user:`bdraco`.
The blocking I/O would only happen once per verify mode. However, it could cause the event loop to block for a long time if the `SSLContext` creation is slow, which is more likely during startup when the disk cache is not yet present.
*Related issues and pull requests on GitHub:*
:issue:`8672`.
## Miscellaneous internal changes
- Improved performance of :py:meth:`~aiohttp.ClientWebSocketResponse.receive` and :py:meth:`~aiohttp.web.WebSocketResponse.receive` when there is no timeout. -- by :user:`bdraco`.
The timeout context manager is now avoided when there is no timeout as it accounted for up to 50% of the time spent in the :py:meth:`~aiohttp.ClientWebSocketResponse.receive` and :py:meth:`~aiohttp.web.WebSocketResponse.receive` methods.
*Related issues and pull requests on GitHub:*
:issue:`8660`.
- Improved performance of starting request handlers with Python 3.12+ -- by :user:`bdraco`.
*Related issues and pull requests on GitHub:*
:issue:`8661`.
- Improved performance of HTTP keep-alive checks -- by :user:`bdraco`.
Previously, when processing a request for a keep-alive connection, the keep-alive check would happen every second; the check is now rescheduled if it fires too early instead.
*Related issues and pull requests on GitHub:*
:issue:`8662`.
- Improved performance of generating random WebSocket mask -- by :user:`bdraco`.
*Related issues and pull requests on GitHub:*
:issue:`8667`.
***
### [`v3.10.2`](https://togithub.com/aio-libs/aiohttp/blob/HEAD/CHANGES.rst#3102-2024-08-08)
[Compare Source](https://togithub.com/aio-libs/aiohttp/compare/v3.10.1...v3.10.2)
\===================
## Bug fixes
- Fixed server checks for circular symbolic links to be compatible with Python 3.13 -- by :user:`steverep`.
*Related issues and pull requests on GitHub:*
:issue:`8565`.
- Fixed request body not being read when ignoring an Upgrade request -- by :user:`Dreamsorcerer`.
*Related issues and pull requests on GitHub:*
:issue:`8597`.
- Fixed an edge case where shutdown would wait for timeout when the handler was already completed -- by :user:`Dreamsorcerer`.
*Related issues and pull requests on GitHub:*
:issue:`8611`.
- Fixed connecting to `npipe://`, `tcp://`, and `unix://` urls -- by :user:`bdraco`.
*Related issues and pull requests on GitHub:*
:issue:`8632`.
- Fixed WebSocket ping tasks being prematurely garbage collected -- by :user:`bdraco`.
There was a small risk that WebSocket ping tasks would be prematurely garbage collected because the event loop only holds a weak reference to the task. The garbage collection risk has been fixed by holding a strong reference to the task. Additionally, the task is now scheduled eagerly with Python 3.12+ to increase the chance it can be completed immediately and avoid having to hold any references to the task.
*Related issues and pull requests on GitHub:*
:issue:`8641`.
- Fixed incorrectly following symlinks for compressed file variants -- by :user:`steverep`.
*Related issues and pull requests on GitHub:*
:issue:`8652`.
## Removals and backward incompatible breaking changes
- Removed `Request.wait_for_disconnection()`, which was mistakenly added briefly in 3.10.0 -- by :user:`Dreamsorcerer`.
*Related issues and pull requests on GitHub:*
:issue:`8636`.
## Contributor-facing changes
- Fixed monkey patches for `Path.stat()` and `Path.is_dir()` for Python 3.13 compatibility -- by :user:`steverep`.
*Related issues and pull requests on GitHub:*
:issue:`8551`.
## Miscellaneous internal changes
- Improved WebSocket performance when messages are sent or received frequently -- by :user:`bdraco`.
The WebSocket heartbeat scheduling algorithm was improved to reduce the `asyncio` scheduling overhead by decreasing the number of `asyncio.TimerHandle` creations and cancellations.
*Related issues and pull requests on GitHub:*
:issue:`8608`.
- Minor improvements to various type annotations -- by :user:`Dreamsorcerer`.
*Related issues and pull requests on GitHub:*
:issue:`8634`.
***
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.
[ ] If you want to rebase/retry this PR, check this box
This PR contains the following updates:
3.10.1
->3.10.3
Release Notes
aio-libs/aiohttp (aiohttp)
### [`v3.10.3`](https://togithub.com/aio-libs/aiohttp/blob/HEAD/CHANGES.rst#3103-2024-08-10) [Compare Source](https://togithub.com/aio-libs/aiohttp/compare/v3.10.2...v3.10.3) \======================== ## Bug fixes - Fixed multipart reading when stream buffer splits the boundary over several read() calls -- by :user:`Dreamsorcerer`. *Related issues and pull requests on GitHub:* :issue:`8653`. - Fixed :py:class:`aiohttp.TCPConnector` doing blocking I/O in the event loop to create the `SSLContext` -- by :user:`bdraco`. The blocking I/O would only happen once per verify mode. However, it could cause the event loop to block for a long time if the `SSLContext` creation is slow, which is more likely during startup when the disk cache is not yet present. *Related issues and pull requests on GitHub:* :issue:`8672`. ## Miscellaneous internal changes - Improved performance of :py:meth:`~aiohttp.ClientWebSocketResponse.receive` and :py:meth:`~aiohttp.web.WebSocketResponse.receive` when there is no timeout. -- by :user:`bdraco`. The timeout context manager is now avoided when there is no timeout as it accounted for up to 50% of the time spent in the :py:meth:`~aiohttp.ClientWebSocketResponse.receive` and :py:meth:`~aiohttp.web.WebSocketResponse.receive` methods. *Related issues and pull requests on GitHub:* :issue:`8660`. - Improved performance of starting request handlers with Python 3.12+ -- by :user:`bdraco`. *Related issues and pull requests on GitHub:* :issue:`8661`. - Improved performance of HTTP keep-alive checks -- by :user:`bdraco`. Previously, when processing a request for a keep-alive connection, the keep-alive check would happen every second; the check is now rescheduled if it fires too early instead. *Related issues and pull requests on GitHub:* :issue:`8662`. - Improved performance of generating random WebSocket mask -- by :user:`bdraco`. *Related issues and pull requests on GitHub:* :issue:`8667`. *** ### [`v3.10.2`](https://togithub.com/aio-libs/aiohttp/blob/HEAD/CHANGES.rst#3102-2024-08-08) [Compare Source](https://togithub.com/aio-libs/aiohttp/compare/v3.10.1...v3.10.2) \=================== ## Bug fixes - Fixed server checks for circular symbolic links to be compatible with Python 3.13 -- by :user:`steverep`. *Related issues and pull requests on GitHub:* :issue:`8565`. - Fixed request body not being read when ignoring an Upgrade request -- by :user:`Dreamsorcerer`. *Related issues and pull requests on GitHub:* :issue:`8597`. - Fixed an edge case where shutdown would wait for timeout when the handler was already completed -- by :user:`Dreamsorcerer`. *Related issues and pull requests on GitHub:* :issue:`8611`. - Fixed connecting to `npipe://`, `tcp://`, and `unix://` urls -- by :user:`bdraco`. *Related issues and pull requests on GitHub:* :issue:`8632`. - Fixed WebSocket ping tasks being prematurely garbage collected -- by :user:`bdraco`. There was a small risk that WebSocket ping tasks would be prematurely garbage collected because the event loop only holds a weak reference to the task. The garbage collection risk has been fixed by holding a strong reference to the task. Additionally, the task is now scheduled eagerly with Python 3.12+ to increase the chance it can be completed immediately and avoid having to hold any references to the task. *Related issues and pull requests on GitHub:* :issue:`8641`. - Fixed incorrectly following symlinks for compressed file variants -- by :user:`steverep`. *Related issues and pull requests on GitHub:* :issue:`8652`. ## Removals and backward incompatible breaking changes - Removed `Request.wait_for_disconnection()`, which was mistakenly added briefly in 3.10.0 -- by :user:`Dreamsorcerer`. *Related issues and pull requests on GitHub:* :issue:`8636`. ## Contributor-facing changes - Fixed monkey patches for `Path.stat()` and `Path.is_dir()` for Python 3.13 compatibility -- by :user:`steverep`. *Related issues and pull requests on GitHub:* :issue:`8551`. ## Miscellaneous internal changes - Improved WebSocket performance when messages are sent or received frequently -- by :user:`bdraco`. The WebSocket heartbeat scheduling algorithm was improved to reduce the `asyncio` scheduling overhead by decreasing the number of `asyncio.TimerHandle` creations and cancellations. *Related issues and pull requests on GitHub:* :issue:`8608`. - Minor improvements to various type annotations -- by :user:`Dreamsorcerer`. *Related issues and pull requests on GitHub:* :issue:`8634`. ***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.