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:
RevisionActionfile
1.77modifypkgsrc/www/py-aiohttp/Makefile
1.15modifypkgsrc/www/py-aiohttp/PLIST
1.71modifypkgsrc/www/py-aiohttp/distinfo