github aio-libs/aiohttp v3.11.0rc2
3.11.0rc2

latest releases: v3.11.0, v3.10.11
pre-releaseone day ago

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 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.


Don't miss a new aiohttp release

NewReleases is sending notifications on new releases.