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.