Path to this page:
Subject: CVS commit: pkgsrc/www/py-aiohttp
From: Adam Ciarcinski
Date: 2024-11-14 19:22:00
Message id: 20241114182200.C86E9FC7D@cvs.NetBSD.org
Log Message:
py-aiohttp: updated to 3.11.0
3.11.0 (2024-11-13)
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(...)`
- 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
- Made ``TestClient.app`` a ``Generic`` so type checkers will know the correct \
type (avoiding unneeded ``client.app is not None`` checks)
- Fixed the keep-alive connection pool to be FIFO instead of LIFO
Keep-alive connections are more likely to be reused before they disconnect.
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`
- Added ``server_hostname`` parameter to ``ws_connect``.
- Exported :py:class:`~aiohttp.ClientWSTimeout` to top-level namespace
- Added ``secure``/``httponly``/``samesite`` parameters to ``.del_cookie()``
- 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
- Added ``proxy`` and ``proxy_auth`` parameters to :py:class:`~aiohttp.ClientSession`
- Added ``default_to_multipart`` parameter to ``FormData``.
- Added :py:meth:`~aiohttp.ClientWebSocketResponse.send_frame` and \
:py:meth:`~aiohttp.web.WebSocketResponse.send_frame` for WebSockets
- Updated :py:class:`~aiohttp.ClientSession` to support paths in ``base_url`` \
parameter.
- Improved performance of reading WebSocket messages with a Cython implementation
- 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
- Added an :attr:`~aiohttp.abc.AbstractAccessLogger.enabled` property to \
:class:`aiohttp.abc.AbstractAccessLogger` to dynamically check if logging is \
enabled
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`.
Removals and backward incompatible breaking changes
- Dropped support for Python 3.8
- Increased minimum yarl version to 1.17.0
- Removed the ``is_ipv6_address`` and ``is_ip4_address`` helpers are they are no \
longer used
- Changed ``ClientRequest.connection_key`` to be a `NamedTuple` to improve \
client performance
- ``FlowControlDataQueue`` has been replaced with the ``WebSocketDataQueue``
- Changed ``ClientRequest.request_info`` to be a `NamedTuple` to improve client \
performance
Packaging updates and notes for downstreams
- Switched to using the :mod:`propcache <propcache.api>` package for \
property caching
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.
- Separated ``aiohttp.http_websocket`` into multiple files to make it easier to \
maintain
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.
Miscellaneous internal changes
- Added flake8 settings to avoid some forms of implicit concatenation.
- Enabled keep-alive support on proxies (which was originally disabled several \
years ago)
- Changed web entry point to not listen on TCP when only a Unix path is passed
- Disabled automatic retries of failed requests in \
:class:`aiohttp.test_utils.TestClient`'s client session
(which could potentially hide errors in tests)
- Changed web ``keepalive_timeout`` default to around an hour in order to reduce \
race conditions on reverse proxies
- Reduced memory required for stream objects created during the client request \
lifecycle
- Improved performance of the internal ``DataQueue``
- Improved performance of calling ``receive`` for WebSockets for the most common \
message types
- Replace internal helper methods ``method_must_be_empty_body`` and \
``status_code_must_be_empty_body`` with simple `set` lookups
- Improved performance of :py:class:`aiohttp.BaseConnector` when there is no \
``limit_per_host``
- Improved performance of sending HTTP requests when there is no body
- Improved performance of the ``WebsocketWriter`` when the protocol is not paused
- Implemented zero copy writes for ``StreamWriter``
Files: