Releases: aio-libs/aiohttp
3.11.5
3.11.4
Bug fixes
-
Fixed
StaticResourcenot allowing theOPTIONSmethod after callingset_options_route-- by :user:bdraco.Related issues and pull requests on GitHub:
#9972, #9975, #9976.
Miscellaneous internal changes
-
Improved performance of creating web responses when there are no cookies -- by :user:
bdraco.Related issues and pull requests on GitHub:
#9895.
3.11.3
Bug fixes
-
Removed non-existing
__author__fromdir(aiohttp)-- by :user:Dreamsorcerer.Related issues and pull requests on GitHub:
#9918. -
Restored the
FlowControlDataQueueclass -- by :user:bdraco.This class is no longer used internally, and will be permanently removed in the next major version.
Related issues and pull requests on GitHub:
#9963.
Miscellaneous internal changes
-
Improved performance of resolving resources when multiple methods are registered for the same route -- by :user:
bdraco.Related issues and pull requests on GitHub:
#9899.
3.11.2
3.11.1
3.11.0
Bug fixes
-
Raise :exc:
aiohttp.ServerFingerprintMismatchexception on client-side if request through http proxy with mismatching server fingerprint digest:aiohttp.ClientSession(headers=headers, connector=TCPConnector(ssl=aiohttp.Fingerprint(mismatch_digest), trust_env=True).request(...)-- by :user:gangj.Related issues and pull requests on GitHub:
#6652. -
Modified websocket :meth:
aiohttp.ClientWebSocketResponse.receive_str, :py:meth:aiohttp.ClientWebSocketResponse.receive_bytes, :py:meth:aiohttp.web.WebSocketResponse.receive_str& :py:meth:aiohttp.web.WebSocketResponse.receive_bytesmethods to raise new :py:exc:aiohttp.WSMessageTypeErrorexception, instead of generic :py:exc:TypeError, when websocket messages of incorrect types are received -- by :user:ara-25.Related issues and pull requests on GitHub:
#6800. -
Made
TestClient.appaGenericso type checkers will know the correct type (avoiding unneededclient.app is not Nonechecks) -- by :user:Dreamsorcerer.Related issues and pull requests on GitHub:
#8977. -
Fixed the keep-alive connection pool to be FIFO instead of LIFO -- by :user:
bdraco.Keep-alive connections are more likely to be reused before they disconnect.
Related issues and pull requests on GitHub:
#9672.
Features
-
Added
strategyparameter to :meth:aiohttp.web.StreamResponse.enable_compression
The value of this parameter is passed to the :func:zlib.compressobjfunction, allowing people
to use a more sufficient compression algorithm for their data served by :mod:aiohttp.web
-- by :user:shootkinRelated issues and pull requests on GitHub:
#6257. -
Added
server_hostnameparameter tows_connect.Related issues and pull requests on GitHub:
#7941. -
Exported :py:class:
~aiohttp.ClientWSTimeoutto top-level namespace -- by :user:Dreamsorcerer.Related issues and pull requests on GitHub:
#8612. -
Added
secure/httponly/samesiteparameters to.del_cookie()-- by :user:Dreamsorcerer.Related issues and pull requests on GitHub:
#8956. -
Updated :py:class:
~aiohttp.ClientSession's auth logic to include default auth only if the request URL's origin matches _base_url; otherwise, the auth will not be included -- by :user:MaximZemskov -
Added
proxyandproxy_authparameters to :py:class:~aiohttp.ClientSession-- by :user:meshya.Related issues and pull requests on GitHub:
#9207. -
Added
default_to_multipartparameter toFormData.Related issues and pull requests on GitHub:
#9335. -
Added :py:meth:
~aiohttp.ClientWebSocketResponse.send_frameand :py:meth:~aiohttp.web.WebSocketResponse.send_framefor WebSockets -- by :user:bdraco.Related issues and pull requests on GitHub:
#9348. -
Updated :py:class:
~aiohttp.ClientSessionto support paths inbase_urlparameter.
base_urlpaths must end with a/-- by :user:Cycloctane.Related issues and pull requests on GitHub:
#9530. -
Improved performance of reading WebSocket messages with a Cython implementation -- by :user:
bdraco.Related issues and pull requests on GitHub:
#9543, #9554, #9556, #9558, #9636, #9649, #9781. -
Added
writer_limitto the :py:class:~aiohttp.web.WebSocketResponseto be able to adjust the limit before the writer forces the buffer to be drained -- by :user:bdraco.Related issues and pull requests on GitHub:
#9572. -
Added an :attr:
~aiohttp.abc.AbstractAccessLogger.enabledproperty to :class:aiohttp.abc.AbstractAccessLoggerto dynamically check if logging is enabled -- by :user:bdraco.Related issues and pull requests on GitHub:
#9822.
Deprecations (removal in next major release)
-
Deprecate obsolete
timeout: floatandreceive_timeout: Optional[float]in :py:meth:~aiohttp.ClientSession.ws_connect. Change default websocket receive timeout fromNoneto10.0.Related issues and pull requests on GitHub:
#3945.
Removals and backward incompatible breaking changes
-
Dropped support for Python 3.8 -- by :user:
Dreamsorcerer.Related issues and pull requests on GitHub:
#8797. -
Increased minimum yarl version to 1.17.0 -- by :user:
bdraco.Related issues and pull requests on GitHub:
#8909, #9079, #9305, #9574. -
Removed the
is_ipv6_addressandis_ip4_addresshelpers are they are no longer used -- by :user:bdraco.Related issues and pull requests on GitHub:
#9344. -
Changed
ClientRequest.connection_keyto be aNamedTupleto improve client performance -- by :user:bdraco.Related issues and pull requests on GitHub:
#9365. -
FlowControlDataQueuehas been replaced with theWebSocketDataQueue-- by :user:bdraco.Related issues and pull requests on GitHub:
#9685. -
Changed
ClientRequest.request_infoto be aNamedTupleto improve client performance -- by :user:bdraco.Related issues and pull requests on GitHub:
#9692.
Packaging updates and notes for downstreams
-
Switched to using the :mod:
propcache <propcache.api>package for property caching
-- by :user:bdraco.The :mod:
propcache <propcache.api>package is derived from the property caching
code in :mod:yarland has been broken out to avoid maintaining it for multiple
projects.Related issues and pull requests on GitHub:
#9394. -
Separated
aiohttp.http_websocketinto multiple files to make it easier to maintain -- by :user:bdraco.
Contributor-facing changes
-
Changed diagram images generator from
blockdiagtoGraphViz.
Generating documentation now requires the GraphViz executable to be included in $PATH or sphinx build configuration.Related issues and pull requests on GitHub:
#9359.
Miscellaneous internal changes
-
Added flake8 settings to avoid some forms of implicit concatenation. -- by :user:
booniepepper.Related issues and pull requests on GitHub:
#7731. -
Enabled keep-alive support on proxies (which was originally disabled several years ago) -- by :user:
Dreamsorcerer.Related issues and pull requests on GitHub:
#8920. -
Changed web entry point to not listen on TCP when only a Unix path is passed -- by :user:
Dreamsorcerer.Related issues and pull requests on GitHub:
#9033. -
Disabled automatic retries of failed requests in :class:
aiohttp.test_utils.TestClient's client session
(which could potentially hide errors in tests) -- by :user:ShubhAgarwal-dev.Related issues and pull requests on GitHub:
#9141. -
Changed web
keepalive_timeoutdefault to around an hour in order to reduce race conditions on reverse proxies -- by :user:Dreamsorcerer.Related issues and pull requests on GitHub:
#9285. -
Reduced memory required for stream objects created during the client request lifecycle -- by :user:
bdraco.Related issues and pull requests on GitHub:
#9407. -
Improved performance of the internal
DataQueue-- by :user:bdraco.Related issues and pull requests on GitHub:
#9659. -
Improved performance of calling
receivefor WebSockets for the most common message types -- by :user:bdraco.Related issues and pull requests on GitHub:
#9679. -
Replace internal helper methods
method_must_be_empty_bodyandstatus_code_must_be_empty_bodywith simplesetlookups -- by :user:bdraco.Related issues and pull requests on GitHub:
#9722. -
Improved performance of :py:class:
aiohttp.BaseConnectorwhen there is nolimit_per_host-- by :user:bdraco.Related issues and pull requests on GitHub:
#9756. -
Improved performance of sending HTTP requests when there is no body -- by :user:
bdraco.Related issues and pull requests on GitHub:
#9757. -
Improved performance of the
WebsocketWriterwhen the protocol is not paused -- by :user:bdraco.Related issues and pull requests on GitHub:
#9796. -
Implemented zero copy writes for
StreamWriter-- by :user:bdraco.Related issues and pull requests on GitHub:
#9839.
3.11.0rc2
Bug fixes
-
Raise :exc:
aiohttp.ServerFingerprintMismatchexception on client-side if request through http proxy with mismatching server fingerprint digest:aiohttp.ClientSession(headers=headers, connector=TCPConnector(ssl=aiohttp.Fingerprint(mismatch_digest), trust_env=True).request(...)-- by :user:gangj.Related issues and pull requests on GitHub:
#6652. -
Modified websocket :meth:
aiohttp.ClientWebSocketResponse.receive_str, :py:meth:aiohttp.ClientWebSocketResponse.receive_bytes, :py:meth:aiohttp.web.WebSocketResponse.receive_str& :py:meth:aiohttp.web.WebSocketResponse.receive_bytesmethods to raise new :py:exc:aiohttp.WSMessageTypeErrorexception, instead of generic :py:exc:TypeError, when websocket messages of incorrect types are received -- by :user:ara-25.Related issues and pull requests on GitHub:
#6800. -
Made
TestClient.appaGenericso type checkers will know the correct type (avoiding unneededclient.app is not Nonechecks) -- by :user:Dreamsorcerer.Related issues and pull requests on GitHub:
#8977. -
Authentication provided by a redirect now takes precedence over provided
authwhen making requests with the client -- by :user:PLPeeters.Related issues and pull requests on GitHub:
#9436. -
Fixed :py:meth:
WebSocketResponse.close() <aiohttp.web.WebSocketResponse.close>to discard non-close messages within its timeout window after sending close -- by :user:lenard-mosys.Related issues and pull requests on GitHub:
#9506. -
Fixed a deadlock that could occur while attempting to get a new connection slot after a timeout -- by :user:
bdraco.The connector was not cancellation-safe.
-
Fixed the keep-alive connection pool to be FIFO instead of LIFO -- by :user:
bdraco.Keep-alive connections are more likely to be reused before they disconnect.
Related issues and pull requests on GitHub:
#9672. -
Fixed the WebSocket flow control calculation undercounting with multi-byte data -- by :user:
bdraco.Related issues and pull requests on GitHub:
#9686.
Features
-
Added
strategyparameter to :meth:aiohttp.web.StreamResponse.enable_compression
The value of this parameter is passed to the :func:zlib.compressobjfunction, allowing people
to use a more sufficient compression algorithm for their data served by :mod:aiohttp.web
-- by :user:shootkinRelated issues and pull requests on GitHub:
#6257. -
Added
server_hostnameparameter tows_connect.Related issues and pull requests on GitHub:
#7941. -
Exported :py:class:
~aiohttp.ClientWSTimeoutto top-level namespace -- by :user:Dreamsorcerer.Related issues and pull requests on GitHub:
#8612. -
Added
secure/httponly/samesiteparameters to.del_cookie()-- by :user:Dreamsorcerer.Related issues and pull requests on GitHub:
#8956. -
Updated :py:class:
~aiohttp.ClientSession's auth logic to include default auth only if the request URL's origin matches _base_url; otherwise, the auth will not be included -- by :user:MaximZemskov -
Added
proxyandproxy_authparameters to :py:class:~aiohttp.ClientSession-- by :user:meshya.Related issues and pull requests on GitHub:
#9207. -
Added
default_to_multipartparameter toFormData.Related issues and pull requests on GitHub:
#9335. -
Added :py:meth:
~aiohttp.ClientWebSocketResponse.send_frameand :py:meth:~aiohttp.web.WebSocketResponse.send_framefor WebSockets -- by :user:bdraco.Related issues and pull requests on GitHub:
#9348. -
Updated :py:class:
~aiohttp.ClientSessionto support paths inbase_urlparameter.
base_urlpaths must end with a/-- by :user:Cycloctane.Related issues and pull requests on GitHub:
#9530. -
Improved performance of reading WebSocket messages with a Cython implementation -- by :user:
bdraco.Related issues and pull requests on GitHub:
#9543, #9554, #9556, #9558, #9636, #9649, #9781. -
Added
writer_limitto the :py:class:~aiohttp.web.WebSocketResponseto be able to adjust the limit before the writer forces the buffer to be drained -- by :user:bdraco.Related issues and pull requests on GitHub:
#9572. -
Added an :attr:
~aiohttp.abc.AbstractAccessLogger.enabledproperty to :class:aiohttp.abc.AbstractAccessLoggerto dynamically check if logging is enabled -- by :user:bdraco.Related issues and pull requests on GitHub:
#9822.
Deprecations (removal in next major release)
-
Deprecate obsolete
timeout: floatandreceive_timeout: Optional[float]in :py:meth:~aiohttp.ClientSession.ws_connect. Change default websocket receive timeout fromNoneto10.0.Related issues and pull requests on GitHub:
#3945.
Removals and backward incompatible breaking changes
-
Dropped support for Python 3.8 -- by :user:
Dreamsorcerer.Related issues and pull requests on GitHub:
#8797. -
Increased minimum yarl version to 1.17.0 -- by :user:
bdraco.Related issues and pull requests on GitHub:
#8909, #9079, #9305, #9574. -
Removed the
is_ipv6_addressandis_ip4_addresshelpers are they are no longer used -- by :user:bdraco.Related issues and pull requests on GitHub:
#9344. -
Changed
ClientRequest.connection_keyto be aNamedTupleto improve client performance -- by :user:bdraco.Related issues and pull requests on GitHub:
#9365. -
Improved performance of the connector when a connection can be reused -- by :user:
bdraco.If
BaseConnector.connecthas been subclassed and replaced with custom logic, theceil_timeoutmust be added.Related issues and pull requests on GitHub:
#9600. -
FlowControlDataQueuehas been replaced with theWebSocketDataQueue-- by :user:bdraco.Related issues and pull requests on GitHub:
#9685. -
Changed
ClientRequest.request_infoto be aNamedTupleto improve client performance -- by :user:bdraco.Related issues and pull requests on GitHub:
#9692.
Packaging updates and notes for downstreams
-
Switched to using the :mod:
propcache <propcache.api>package for property caching
-- by :user:bdraco.The :mod:
propcache <propcache.api>package is derived from the property caching
code in :mod:yarland has been broken out to avoid maintaining it for multiple
projects.Related issues and pull requests on GitHub:
#9394. -
Separated
aiohttp.http_websocketinto multiple files to make it easier to maintain -- by :user:bdraco.
Contributor-facing changes
-
Changed diagram images generator from
blockdiagtoGraphViz.
Generating documentation now requires the GraphViz executable to be included in $PATH or sphinx build configuration.Related issues and pull requests on GitHub:
#9359.
Miscellaneous internal changes
-
Added flake8 settings to avoid some forms of implicit concatenation. -- by :user:
booniepepper.Related issues and pull requests on GitHub:
#7731. -
Enabled keep-alive support on proxies (which was originally disabled several years ago) -- by :user:
Dreamsorcerer.Related issues and pull requests on GitHub:
#8920. -
Changed web entry point to not listen on TCP when only a Unix path is passed -- by :user:
Dreamsorcerer.Related issues and pull requests on GitHub:
#9033. -
Disabled automatic retries of failed requests in :class:
aiohttp.test_utils.TestClient's client session
(which could potentially hide errors in tests) -- by :user:ShubhAgarwal-dev.Related issues and pull requests on GitHub:
#9141. -
Changed web
keepalive_timeoutdefault to around an hour in order to reduce race conditions on reverse proxies -- by :user:Dreamsorcerer.Related issues and pull requests on GitHub:
#9285. -
Reduced memory required for stream objects created during the client request lifecycle -- by :user:
bdraco.Related issues and pull requests on GitHub:
#9407. -
Improved performance of the client request lifecycle when there are no cookies -- by :user:
bdraco.Related issues and pull requests on GitHub:
#9470. -
Improved performance of sending client requests when the writer can finish synchronously -- by :user:
bdraco.Related issues and pull requests on GitHub:
#9485. -
Improved performance of serializing HTTP headers -- by :user:
bdraco.Related issues and pull requests on GitHub:
#9603. -
Improved performance of the internal
DataQueue-- by :user:bdraco.Related issues and pull requests on GitHub:
#9659. -
Improved performance of calling
receivefor WebSockets for the most common message types -- by :user:bdraco.Related issues and pull requests on GitHub:
#9679. -
Replace internal helper methods
method_must_be_empty_bodyandstatus_code_must_be_empty_bodywith simplesetlookups -- by :user:bdraco.Related issues and pull requests on GitHub:
#9722. -
Passing
enable_cleanup_closedto :py:class:aiohttp.TCPConnectoris now ignored on Python 3.12.7+ and 3.13.1+ since the underlying bug that caused asyncio to leak SSL connections has been fixed upstream -- by :user:bdraco. -
Improved performance of :py:class:
aiohttp.BaseConnectorwhen there is nolimit_per_host-- by :user:bdraco.*Related issues and pull...
3.10.11
Bug fixes
-
Authentication provided by a redirect now takes precedence over provided
authwhen making requests with the client -- by :user:PLPeeters.Related issues and pull requests on GitHub:
#9436. -
Fixed :py:meth:
WebSocketResponse.close() <aiohttp.web.WebSocketResponse.close>to discard non-close messages within its timeout window after sending close -- by :user:lenard-mosys.Related issues and pull requests on GitHub:
#9506. -
Fixed a deadlock that could occur while attempting to get a new connection slot after a timeout -- by :user:
bdraco.The connector was not cancellation-safe.
-
Fixed the WebSocket flow control calculation undercounting with multi-byte data -- by :user:
bdraco.Related issues and pull requests on GitHub:
#9686. -
Fixed incorrect parsing of chunk extensions with the pure Python parser -- by :user:
bdraco.Related issues and pull requests on GitHub:
#9851. -
Fixed system routes polluting the middleware cache -- by :user:
bdraco.Related issues and pull requests on GitHub:
#9852.
Removals and backward incompatible breaking changes
-
Improved performance of the connector when a connection can be reused -- by :user:
bdraco.If
BaseConnector.connecthas been subclassed and replaced with custom logic, theceil_timeoutmust be added.Related issues and pull requests on GitHub:
#9600.
Miscellaneous internal changes
-
Improved performance of the client request lifecycle when there are no cookies -- by :user:
bdraco.Related issues and pull requests on GitHub:
#9470. -
Improved performance of sending client requests when the writer can finish synchronously -- by :user:
bdraco.Related issues and pull requests on GitHub:
#9485. -
Improved performance of serializing HTTP headers -- by :user:
bdraco.Related issues and pull requests on GitHub:
#9603. -
Passing
enable_cleanup_closedto :py:class:aiohttp.TCPConnectoris now ignored on Python 3.12.7+ and 3.13.1+ since the underlying bug that caused asyncio to leak SSL connections has been fixed upstream -- by :user:bdraco.
3.10.11rc0
Bug fixes
-
Authentication provided by a redirect now takes precedence over provided
authwhen making requests with the client -- by :user:PLPeeters.Related issues and pull requests on GitHub:
#9436. -
Fixed :py:meth:
WebSocketResponse.close() <aiohttp.web.WebSocketResponse.close>to discard non-close messages within its timeout window after sending close -- by :user:lenard-mosys.Related issues and pull requests on GitHub:
#9506. -
Fixed a deadlock that could occur while attempting to get a new connection slot after a timeout -- by :user:
bdraco.The connector was not cancellation-safe.
-
Fixed the WebSocket flow control calculation undercounting with multi-byte data -- by :user:
bdraco.Related issues and pull requests on GitHub:
#9686.
Removals and backward incompatible breaking changes
-
Improved performance of the connector when a connection can be reused -- by :user:
bdraco.If
BaseConnector.connecthas been subclassed and replaced with custom logic, theceil_timeoutmust be added.Related issues and pull requests on GitHub:
#9600.
Miscellaneous internal changes
-
Improved performance of the client request lifecycle when there are no cookies -- by :user:
bdraco.Related issues and pull requests on GitHub:
#9470. -
Improved performance of sending client requests when the writer can finish synchronously -- by :user:
bdraco.Related issues and pull requests on GitHub:
#9485. -
Improved performance of serializing HTTP headers -- by :user:
bdraco.Related issues and pull requests on GitHub:
#9603. -
Passing
enable_cleanup_closedto :py:class:aiohttp.TCPConnectoris now ignored on Python 3.12.7+ and 3.13.1+ since the underlying bug that caused asyncio to leak SSL connections has been fixed upstream -- by :user:bdraco.
3.11.0rc1
Bug fixes
-
Raise :exc:
aiohttp.ServerFingerprintMismatchexception on client-side if request through http proxy with mismatching server fingerprint digest:aiohttp.ClientSession(headers=headers, connector=TCPConnector(ssl=aiohttp.Fingerprint(mismatch_digest), trust_env=True).request(...)-- by :user:gangj.Related issues and pull requests on GitHub:
#6652. -
Modified websocket :meth:
aiohttp.ClientWebSocketResponse.receive_str, :py:meth:aiohttp.ClientWebSocketResponse.receive_bytes, :py:meth:aiohttp.web.WebSocketResponse.receive_str& :py:meth:aiohttp.web.WebSocketResponse.receive_bytesmethods to raise new :py:exc:aiohttp.WSMessageTypeErrorexception, instead of generic :py:exc:TypeError, when websocket messages of incorrect types are received -- by :user:ara-25.Related issues and pull requests on GitHub:
#6800. -
Made
TestClient.appaGenericso type checkers will know the correct type (avoiding unneededclient.app is not Nonechecks) -- by :user:Dreamsorcerer.Related issues and pull requests on GitHub:
#8977. -
Authentication provided by a redirect now takes precedence over provided
authwhen making requests with the client -- by :user:PLPeeters.Related issues and pull requests on GitHub:
#9436. -
Fixed :py:meth:
WebSocketResponse.close() <aiohttp.web.WebSocketResponse.close>to discard non-close messages within its timeout window after sending close -- by :user:lenard-mosys.Related issues and pull requests on GitHub:
#9506. -
Fixed a deadlock that could occur while attempting to get a new connection slot after a timeout -- by :user:
bdraco.The connector was not cancellation-safe.
-
Fixed the keep-alive connection pool to be FIFO instead of LIFO -- by :user:
bdraco.Keep-alive connections are more likely to be reused before they disconnect.
Related issues and pull requests on GitHub:
#9672. -
Fixed the WebSocket flow control calculation undercounting with multi-byte data -- by :user:
bdraco.Related issues and pull requests on GitHub:
#9686.
Features
-
Added
strategyparameter to :meth:aiohttp.web.StreamResponse.enable_compression
The value of this parameter is passed to the :func:zlib.compressobjfunction, allowing people
to use a more sufficient compression algorithm for their data served by :mod:aiohttp.web
-- by :user:shootkinRelated issues and pull requests on GitHub:
#6257. -
Added
server_hostnameparameter tows_connect.Related issues and pull requests on GitHub:
#7941. -
Exported :py:class:
~aiohttp.ClientWSTimeoutto top-level namespace -- by :user:Dreamsorcerer.Related issues and pull requests on GitHub:
#8612. -
Added
secure/httponly/samesiteparameters to.del_cookie()-- by :user:Dreamsorcerer.Related issues and pull requests on GitHub:
#8956. -
Updated :py:class:
~aiohttp.ClientSession's auth logic to include default auth only if the request URL's origin matches _base_url; otherwise, the auth will not be included -- by :user:MaximZemskov -
Added
proxyandproxy_authparameters to :py:class:~aiohttp.ClientSession-- by :user:meshya.Related issues and pull requests on GitHub:
#9207. -
Added
default_to_multipartparameter toFormData.Related issues and pull requests on GitHub:
#9335. -
Added :py:meth:
~aiohttp.ClientWebSocketResponse.send_frameand :py:meth:~aiohttp.web.WebSocketResponse.send_framefor WebSockets -- by :user:bdraco.Related issues and pull requests on GitHub:
#9348. -
Updated :py:class:
~aiohttp.ClientSessionto support paths inbase_urlparameter.
base_urlpaths must end with a/-- by :user:Cycloctane.Related issues and pull requests on GitHub:
#9530. -
Improved performance of reading WebSocket messages with a Cython implementation -- by :user:
bdraco.Related issues and pull requests on GitHub:
#9543, #9554, #9556, #9558, #9636, #9649, #9781. -
Added
writer_limitto the :py:class:~aiohttp.web.WebSocketResponseto be able to adjust the limit before the writer forces the buffer to be drained -- by :user:bdraco.Related issues and pull requests on GitHub:
#9572.
Deprecations (removal in next major release)
-
Deprecate obsolete
timeout: floatandreceive_timeout: Optional[float]in :py:meth:~aiohttp.ClientSession.ws_connect. Change default websocket receive timeout fromNoneto10.0.Related issues and pull requests on GitHub:
#3945.
Removals and backward incompatible breaking changes
-
Dropped support for Python 3.8 -- by :user:
Dreamsorcerer.Related issues and pull requests on GitHub:
#8797. -
Increased minimum yarl version to 1.17.0 -- by :user:
bdraco.Related issues and pull requests on GitHub:
#8909, #9079, #9305, #9574. -
Removed the
is_ipv6_addressandis_ip4_addresshelpers are they are no longer used -- by :user:bdraco.Related issues and pull requests on GitHub:
#9344. -
Changed
ClientRequest.connection_keyto be aNamedTupleto improve client performance -- by :user:bdraco.Related issues and pull requests on GitHub:
#9365. -
Improved performance of the connector when a connection can be reused -- by :user:
bdraco.If
BaseConnector.connecthas been subclassed and replaced with custom logic, theceil_timeoutmust be added.Related issues and pull requests on GitHub:
#9600. -
FlowControlDataQueuehas been replaced with theWebSocketDataQueue-- by :user:bdraco.Related issues and pull requests on GitHub:
#9685. -
Changed
ClientRequest.request_infoto be aNamedTupleto improve client performance -- by :user:bdraco.Related issues and pull requests on GitHub:
#9692.
Packaging updates and notes for downstreams
-
Switched to using the :mod:
propcache <propcache.api>package for property caching
-- by :user:bdraco.The :mod:
propcache <propcache.api>package is derived from the property caching
code in :mod:yarland has been broken out to avoid maintaining it for multiple
projects.Related issues and pull requests on GitHub:
#9394. -
Separated
aiohttp.http_websocketinto multiple files to make it easier to maintain -- by :user:bdraco.
Contributor-facing changes
-
Changed diagram images generator from
blockdiagtoGraphViz.
Generating documentation now requires the GraphViz executable to be included in $PATH or sphinx build configuration.Related issues and pull requests on GitHub:
#9359.
Miscellaneous internal changes
-
Added flake8 settings to avoid some forms of implicit concatenation. -- by :user:
booniepepper.Related issues and pull requests on GitHub:
#7731. -
Enabled keep-alive support on proxies (which was originally disabled several years ago) -- by :user:
Dreamsorcerer.Related issues and pull requests on GitHub:
#8920. -
Changed web entry point to not listen on TCP when only a Unix path is passed -- by :user:
Dreamsorcerer.Related issues and pull requests on GitHub:
#9033. -
Disabled automatic retries of failed requests in :class:
aiohttp.test_utils.TestClient's client session
(which could potentially hide errors in tests) -- by :user:ShubhAgarwal-dev.Related issues and pull requests on GitHub:
#9141. -
Changed web
keepalive_timeoutdefault to around an hour in order to reduce race conditions on reverse proxies -- by :user:Dreamsorcerer.Related issues and pull requests on GitHub:
#9285. -
Reduced memory required for stream objects created during the client request lifecycle -- by :user:
bdraco.Related issues and pull requests on GitHub:
#9407. -
Improved performance of the client request lifecycle when there are no cookies -- by :user:
bdraco.Related issues and pull requests on GitHub:
#9470. -
Improved performance of sending client requests when the writer can finish synchronously -- by :user:
bdraco.Related issues and pull requests on GitHub:
#9485. -
Improved performance of serializing HTTP headers -- by :user:
bdraco.Related issues and pull requests on GitHub:
#9603. -
Improved performance of the internal
DataQueue-- by :user:bdraco.Related issues and pull requests on GitHub:
#9659. -
Improved performance of calling
receivefor WebSockets for the most common message types -- by :user:bdraco.Related issues and pull requests on GitHub:
#9679. -
Replace internal helper methods
method_must_be_empty_bodyandstatus_code_must_be_empty_bodywith simplesetlookups -- by :user:bdraco.Related issues and pull requests on GitHub:
#9722. -
Passing
enable_cleanup_closedto :py:class:aiohttp.TCPConnectoris now ignored on Python 3.12.7+ and 3.13.1+ since the underlying bug that caused asyncio to leak SSL connections has been fixed upstream -- by :user:bdraco. -
Improved performance of :py:class:
aiohttp.BaseConnectorwhen there is nolimit_per_host-- by :user:bdraco.Related issues and pull requests on GitHub:
#9756. -
Improved performance of sending HTTP requests when there is no body -- by :user:
bdraco.Related issues and pull requests on GitHub:
#9757.