Skip to content

Releases: aio-libs/aiohttp

3.11.8

27 Nov 18:49
v3.11.8
5ddf720
Compare
Choose a tag to compare

Miscellaneous internal changes

  • Improved performance of creating :class:aiohttp.ClientResponse objects when there are no cookies -- by :user:bdraco.

    Related issues and pull requests on GitHub:
    #10029.

  • Improved performance of creating :class:aiohttp.ClientResponse objects -- by :user:bdraco.

    Related issues and pull requests on GitHub:
    #10030.

  • Improved performances of creating objects during the HTTP request lifecycle -- by :user:bdraco.

    Related issues and pull requests on GitHub:
    #10037.

  • Improved performance of constructing :class:aiohttp.web.Response with headers -- by :user:bdraco.

    Related issues and pull requests on GitHub:
    #10043.

  • Improved performance of making requests when there are no auto headers to skip -- by :user:bdraco.

    Related issues and pull requests on GitHub:
    #10049.

  • Downgraded logging of invalid HTTP method exceptions on the first request to debug level -- by :user:bdraco.

    HTTP requests starting with an invalid method are relatively common, especially when connected to the public internet, because browsers or other clients may try to speak SSL to a plain-text server or vice-versa. These exceptions can quickly fill the log with noise when nothing is wrong.

    Related issues and pull requests on GitHub:
    #10055.


3.11.7

21 Nov 15:41
v3.11.7
bf04a1b
Compare
Choose a tag to compare

Bug fixes

  • Fixed the HTTP client not considering the connector's force_close value when setting the Connection header -- by :user:bdraco.

    Related issues and pull requests on GitHub:
    #10003.

Miscellaneous internal changes

  • Improved performance of serializing HTTP headers -- by :user:bdraco.

    Related issues and pull requests on GitHub:
    #10014.


3.11.6

19 Nov 20:08
v3.11.6
ff9602d
Compare
Choose a tag to compare

Bug fixes

  • Restored the force_close method to the ResponseHandler -- by :user:bdraco.

    Related issues and pull requests on GitHub:
    #9997.


3.11.5

19 Nov 15:52
v3.11.5
e836d3a
Compare
Choose a tag to compare

Bug fixes

  • Fixed the ANY method not appearing in :meth:~aiohttp.web.UrlDispatcher.routes -- by :user:bdraco.

    Related issues and pull requests on GitHub:
    #9899, #9987.


3.11.4

19 Nov 06:58
v3.11.4
f3d27ac
Compare
Choose a tag to compare

Bug fixes

  • Fixed StaticResource not allowing the OPTIONS method after calling set_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

19 Nov 01:19
v3.11.3
90558c3
Compare
Choose a tag to compare

Bug fixes

  • Removed non-existing __author__ from dir(aiohttp) -- by :user:Dreamsorcerer.

    Related issues and pull requests on GitHub:
    #9918.

  • Restored the FlowControlDataQueue class -- 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

14 Nov 23:29
v3.11.2
db37e91
Compare
Choose a tag to compare

Bug fixes

  • Fixed improperly closed WebSocket connections generating an unhandled exception -- by :user:bdraco.

    Related issues and pull requests on GitHub:
    #9883.


3.11.1

14 Nov 16:36
fe1196c
Compare
Choose a tag to compare

Bug fixes

  • Added a backward compatibility layer to :class:aiohttp.RequestInfo to allow creating these objects without a real_url -- by :user:bdraco.

    Related issues and pull requests on GitHub:
    #9873.


3.11.0

13 Nov 17:30
v3.11.0
c311912
Compare
Choose a tag to compare

Bug fixes

  • Raise :exc:aiohttp.ServerFingerprintMismatch exception 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_bytes methods to raise new :py:exc:aiohttp.WSMessageTypeError exception, 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.app a Generic so type checkers will know the correct type (avoiding unneeded client.app is not None checks) -- 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 strategy parameter to :meth:aiohttp.web.StreamResponse.enable_compression
    The value of this parameter is passed to the :func:zlib.compressobj function, allowing people
    to use a more sufficient compression algorithm for their data served by :mod:aiohttp.web
    -- by :user:shootkin

    Related issues and pull requests on GitHub:
    #6257.

  • Added server_hostname parameter to ws_connect.

    Related issues and pull requests on GitHub:
    #7941.

  • Exported :py:class:~aiohttp.ClientWSTimeout to top-level namespace -- by :user:Dreamsorcerer.

    Related issues and pull requests on GitHub:
    #8612.

  • Added secure/httponly/samesite parameters 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

    Related issues and pull requests on GitHub:
    #8966, #9466.

  • Added proxy and proxy_auth parameters to :py:class:~aiohttp.ClientSession -- by :user:meshya.

    Related issues and pull requests on GitHub:
    #9207.

  • Added default_to_multipart parameter to FormData.

    Related issues and pull requests on GitHub:
    #9335.

  • Added :py:meth:~aiohttp.ClientWebSocketResponse.send_frame and :py:meth:~aiohttp.web.WebSocketResponse.send_frame for WebSockets -- by :user:bdraco.

    Related issues and pull requests on GitHub:
    #9348.

  • Updated :py:class:~aiohttp.ClientSession to support paths in base_url parameter.
    base_url paths 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_limit to the :py:class:~aiohttp.web.WebSocketResponse to 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.enabled property to :class:aiohttp.abc.AbstractAccessLogger to 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: float and receive_timeout: Optional[float] in :py:meth:~aiohttp.ClientSession.ws_connect. Change default websocket receive timeout from None to 10.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_address and is_ip4_address helpers are they are no longer used -- by :user:bdraco.

    Related issues and pull requests on GitHub:
    #9344.

  • Changed ClientRequest.connection_key to be a NamedTuple to improve client performance -- by :user:bdraco.

    Related issues and pull requests on GitHub:
    #9365.

  • FlowControlDataQueue has been replaced with the WebSocketDataQueue -- by :user:bdraco.

    Related issues and pull requests on GitHub:
    #9685.

  • Changed ClientRequest.request_info to be a NamedTuple to 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:yarl and has been broken out to avoid maintaining it for multiple
    projects.

    Related issues and pull requests on GitHub:
    #9394.

  • Separated aiohttp.http_websocket into multiple files to make it easier to maintain -- by :user:bdraco.

    Related issues and pull requests on GitHub:
    #9542, #9552.

Contributor-facing changes

  • Changed diagram images generator from blockdiag to GraphViz.
    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_timeout default 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 receive for 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_body and status_code_must_be_empty_body with simple set lookups -- by :user:bdraco.

    Related issues and pull requests on GitHub:
    #9722.

  • Improved performance of :py:class:aiohttp.BaseConnector when there is no limit_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 WebsocketWriter when 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

13 Nov 02:55
v3.11.0rc2
fe0a6e6
Compare
Choose a tag to compare
3.11.0rc2 Pre-release
Pre-release

Bug fixes

  • Raise :exc:aiohttp.ServerFingerprintMismatch exception 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_bytes methods to raise new :py:exc:aiohttp.WSMessageTypeError exception, 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.app a Generic so type checkers will know the correct type (avoiding unneeded client.app is not None checks) -- by :user:Dreamsorcerer.

    Related issues and pull requests on GitHub:
    #8977.

  • Authentication provided by a redirect now takes precedence over provided auth when 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.

    Related issues and pull requests on GitHub:
    #9670, #9671.

  • 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 strategy parameter to :meth:aiohttp.web.StreamResponse.enable_compression
    The value of this parameter is passed to the :func:zlib.compressobj function, allowing people
    to use a more sufficient compression algorithm for their data served by :mod:aiohttp.web
    -- by :user:shootkin

    Related issues and pull requests on GitHub:
    #6257.

  • Added server_hostname parameter to ws_connect.

    Related issues and pull requests on GitHub:
    #7941.

  • Exported :py:class:~aiohttp.ClientWSTimeout to top-level namespace -- by :user:Dreamsorcerer.

    Related issues and pull requests on GitHub:
    #8612.

  • Added secure/httponly/samesite parameters 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

    Related issues and pull requests on GitHub:
    #8966, #9466.

  • Added proxy and proxy_auth parameters to :py:class:~aiohttp.ClientSession -- by :user:meshya.

    Related issues and pull requests on GitHub:
    #9207.

  • Added default_to_multipart parameter to FormData.

    Related issues and pull requests on GitHub:
    #9335.

  • Added :py:meth:~aiohttp.ClientWebSocketResponse.send_frame and :py:meth:~aiohttp.web.WebSocketResponse.send_frame for WebSockets -- by :user:bdraco.

    Related issues and pull requests on GitHub:
    #9348.

  • Updated :py:class:~aiohttp.ClientSession to support paths in base_url parameter.
    base_url paths 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_limit to the :py:class:~aiohttp.web.WebSocketResponse to 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.enabled property to :class:aiohttp.abc.AbstractAccessLogger to 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: float and receive_timeout: Optional[float] in :py:meth:~aiohttp.ClientSession.ws_connect. Change default websocket receive timeout from None to 10.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_address and is_ip4_address helpers are they are no longer used -- by :user:bdraco.

    Related issues and pull requests on GitHub:
    #9344.

  • Changed ClientRequest.connection_key to be a NamedTuple to 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.connect has been subclassed and replaced with custom logic, the ceil_timeout must be added.

    Related issues and pull requests on GitHub:
    #9600.

  • FlowControlDataQueue has been replaced with the WebSocketDataQueue -- by :user:bdraco.

    Related issues and pull requests on GitHub:
    #9685.

  • Changed ClientRequest.request_info to be a NamedTuple to 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:yarl and has been broken out to avoid maintaining it for multiple
    projects.

    Related issues and pull requests on GitHub:
    #9394.

  • Separated aiohttp.http_websocket into multiple files to make it easier to maintain -- by :user:bdraco.

    Related issues and pull requests on GitHub:
    #9542, #9552.

Contributor-facing changes

  • Changed diagram images generator from blockdiag to GraphViz.
    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_timeout default 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 receive for 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_body and status_code_must_be_empty_body with simple set lookups -- by :user:bdraco.

    Related issues and pull requests on GitHub:
    #9722.

  • Passing enable_cleanup_closed to :py:class:aiohttp.TCPConnector is 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.

    Related issues and pull requests on GitHub:
    #9726, #9736.

  • Improved performance of :py:class:aiohttp.BaseConnector when there is no limit_per_host -- by :user:bdraco.

    *Related issues and pull...

Read more