asmodehn / aiokraken

Asyncio Library for http://kraken.com
MIT License
1 stars 0 forks source link

Update aiohttp to 3.9.3 #574

Closed pyup-bot closed 5 months ago

pyup-bot commented 7 months ago

This PR updates aiohttp from 3.6.2 to 3.9.3.

Changelog ### 3.9.3 ``` Bug fixes --------- - Fixed backwards compatibility breakage (in 3.9.2) of ``ssl`` parameter when set outside of ``ClientSession`` (e.g. directly in ``TCPConnector``) -- by :user:`Dreamsorcerer`. *Related issues and pull requests on GitHub:* 8097, 8098. Miscellaneous internal changes ------------------------------ - Improved test suite handling of paths and temp files to consistently use pathlib and pytest fixtures. *Related issues and pull requests on GitHub:* 3957. ---- ``` ### 3.9.2 ``` Bug fixes --------- - Fixed server-side websocket connection leak. *Related issues and pull requests on GitHub:* 7978. - Fixed ``web.FileResponse`` doing blocking I/O in the event loop. *Related issues and pull requests on GitHub:* 8012. - Fixed double compress when compression enabled and compressed file exists in server file responses. *Related issues and pull requests on GitHub:* 8014. - Added runtime type check for ``ClientSession`` ``timeout`` parameter. *Related issues and pull requests on GitHub:* 8021. - Fixed an unhandled exception in the Python HTTP parser on header lines starting with a colon -- by :user:`pajod`. Invalid request lines with anything but a dot between the HTTP major and minor version are now rejected. Invalid header field names containing question mark or slash are now rejected. Such requests are incompatible with :rfc:`9110section-5.6.2` and are not known to be of any legitimate use. *Related issues and pull requests on GitHub:* 8074. - Improved validation of paths for static resources requests to the server -- by :user:`bdraco`. *Related issues and pull requests on GitHub:* 8079. Features -------- - Added support for passing :py:data:`True` to ``ssl`` parameter in ``ClientSession`` while deprecating :py:data:`None` -- by :user:`xiangyan99`. *Related issues and pull requests on GitHub:* 7698. Breaking changes ---------------- - Fixed an unhandled exception in the Python HTTP parser on header lines starting with a colon -- by :user:`pajod`. Invalid request lines with anything but a dot between the HTTP major and minor version are now rejected. Invalid header field names containing question mark or slash are now rejected. Such requests are incompatible with :rfc:`9110section-5.6.2` and are not known to be of any legitimate use. *Related issues and pull requests on GitHub:* 8074. Improved documentation ---------------------- - Fixed examples of ``fallback_charset_resolver`` function in the :doc:`client_advanced` document. -- by :user:`henry0312`. *Related issues and pull requests on GitHub:* 7995. - The Sphinx setup was updated to avoid showing the empty changelog draft section in the tagged release documentation builds on Read The Docs -- by :user:`webknjaz`. *Related issues and pull requests on GitHub:* 8067. Packaging updates and notes for downstreams ------------------------------------------- - The changelog categorization was made clearer. The contributors can now mark their fragment files more accurately -- by :user:`webknjaz`. The new category tags are: * ``bugfix`` * ``feature`` * ``deprecation`` * ``breaking`` (previously, ``removal``) * ``doc`` * ``packaging`` * ``contrib`` * ``misc`` *Related issues and pull requests on GitHub:* 8066. Contributor-facing changes -------------------------- - Updated :ref:`contributing/Tests coverage <aiohttp-contributing>` section to show how we use ``codecov`` -- by :user:`Dreamsorcerer`. *Related issues and pull requests on GitHub:* 7916. - The changelog categorization was made clearer. The contributors can now mark their fragment files more accurately -- by :user:`webknjaz`. The new category tags are: * ``bugfix`` * ``feature`` * ``deprecation`` * ``breaking`` (previously, ``removal``) * ``doc`` * ``packaging`` * ``contrib`` * ``misc`` *Related issues and pull requests on GitHub:* 8066. Miscellaneous internal changes ------------------------------ - Replaced all ``tmpdir`` fixtures with ``tmp_path`` in test suite. *Related issues and pull requests on GitHub:* 3551. ---- ``` ### 3.9.1 ``` Bugfixes -------- - Fixed importing aiohttp under PyPy on Windows. (7848) - Fixed async concurrency safety in websocket compressor. (7865) - Fixed ``ClientResponse.close()`` releasing the connection instead of closing. (7869) - Fixed a regression where connection may get closed during upgrade. -- by :user:`Dreamsorcerer` (7879) - Fixed messages being reported as upgraded without an Upgrade header in Python parser. -- by :user:`Dreamsorcerer` (7895) ---- ``` ### 3.9.0 ``` Features -------- - Introduced ``AppKey`` for static typing support of ``Application`` storage. See https://docs.aiohttp.org/en/stable/web_advanced.html#application-s-config (5864) - Added a graceful shutdown period which allows pending tasks to complete before the application's cleanup is called. The period can be adjusted with the ``shutdown_timeout`` parameter. -- by :user:`Dreamsorcerer`. See https://docs.aiohttp.org/en/latest/web_advanced.html#graceful-shutdown (7188) - Added `handler_cancellation <https://docs.aiohttp.org/en/stable/web_advanced.html#web-handler-cancellation>`_ parameter to cancel web handler on client disconnection. -- by :user:`mosquito` This (optionally) reintroduces a feature removed in a previous release. Recommended for those looking for an extra level of protection against denial-of-service attacks. (7056) - Added support for setting response header parameters ``max_line_size`` and ``max_field_size``. (2304) - Added ``auto_decompress`` parameter to ``ClientSession.request`` to override ``ClientSession._auto_decompress``. -- by :user:`Daste745` (3751) - Changed ``raise_for_status`` to allow a coroutine. (3892) - Added client brotli compression support (optional with runtime check). (5219) - Added ``client_max_size`` to ``BaseRequest.clone()`` to allow overriding the request body size. -- :user:`anesabml`. (5704) - Added a middleware type alias ``aiohttp.typedefs.Middleware``. (5898) - Exported ``HTTPMove`` which can be used to catch any redirection request that has a location -- :user:`dreamsorcerer`. (6594) - Changed the ``path`` parameter in ``web.run_app()`` to accept a ``pathlib.Path`` object. (6839) - Performance: Skipped filtering ``CookieJar`` when the jar is empty or all cookies have expired. (7819) - Performance: Only check origin if insecure scheme and there are origins to treat as secure, in ``CookieJar.filter_cookies()``. (7821) - Performance: Used timestamp instead of ``datetime`` to achieve faster cookie expiration in ``CookieJar``. (7824) - Added support for passing a custom server name parameter to HTTPS connection. (7114) - Added support for using Basic Auth credentials from :file:`.netrc` file when making HTTP requests with the :py:class:`~aiohttp.ClientSession` ``trust_env`` argument is set to ``True``. -- by :user:`yuvipanda`. (7131) - Turned access log into no-op when the logger is disabled. (7240) - Added typing information to ``RawResponseMessage``. -- by :user:`Gobot1234` (7365) - Removed ``async-timeout`` for Python 3.11+ (replaced with ``asyncio.timeout()`` on newer releases). (7502) - Added support for ``brotlicffi`` as an alternative to ``brotli`` (fixing Brotli support on PyPy). (7611) - Added ``WebSocketResponse.get_extra_info()`` to access a protocol transport's extra info. (7078) - Allow ``link`` argument to be set to None/empty in HTTP 451 exception. (7689) Bugfixes -------- - Implemented stripping the trailing dots from fully-qualified domain names in ``Host`` headers and TLS context when acting as an HTTP client. This allows the client to connect to URLs with FQDN host name like ``https://example.com./``. -- by :user:`martin-sucha`. (3636) - Fixed client timeout not working when incoming data is always available without waiting. -- by :user:`Dreamsorcerer`. (5854) - Fixed ``readuntil`` to work with a delimiter of more than one character. (6701) - Added ``__repr__`` to ``EmptyStreamReader`` to avoid ``AttributeError``. (6916) - Fixed bug when using ``TCPConnector`` with ``ttl_dns_cache=0``. (7014) - Fixed response returned from expect handler being thrown away. -- by :user:`Dreamsorcerer` (7025) - Avoided raising ``UnicodeDecodeError`` in multipart and in HTTP headers parsing. (7044) - Changed ``sock_read`` timeout to start after writing has finished, avoiding read timeouts caused by an unfinished write. -- by :user:`dtrifiro` (7149) - Fixed missing query in tracing method URLs when using ``yarl`` 1.9+. (7259) - Changed max 32-bit timestamp to an aware datetime object, for consistency with the non-32-bit one, and to avoid a ``DeprecationWarning`` on Python 3.12. (7302) - Fixed ``EmptyStreamReader.iter_chunks()`` never ending. -- by :user:`mind1m` (7616) - Fixed a rare ``RuntimeError: await wasn't used with future`` exception. -- by :user:`stalkerg` (7785) - Fixed issue with insufficient HTTP method and version validation. (7700) - Added check to validate that absolute URIs have schemes. (7712) - Fixed unhandled exception when Python HTTP parser encounters unpaired Unicode surrogates. (7715) - Updated parser to disallow invalid characters in header field names and stop accepting LF as a request line separator. (7719) - Fixed Python HTTP parser not treating 204/304/1xx as an empty body. (7755) - Ensure empty body response for 1xx/204/304 per RFC 9112 sec 6.3. (7756) - Fixed an issue when a client request is closed before completing a chunked payload. -- by :user:`Dreamsorcerer` (7764) - Edge Case Handling for ResponseParser for missing reason value. (7776) - Fixed ``ClientWebSocketResponse.close_code`` being erroneously set to ``None`` when there are concurrent async tasks receiving data and closing the connection. (7306) - Added HTTP method validation. (6533) - Fixed arbitrary sequence types being allowed to inject values via version parameter. -- by :user:`Dreamsorcerer` (7835) - Performance: Fixed increase in latency with small messages from websocket compression changes. (7797) Improved Documentation ---------------------- - Fixed the `ClientResponse.release`'s type in the doc. Changed from `comethod` to `method`. (5836) - Added information on behavior of base_url parameter in `ClientSession`. (6647) - Fixed `ClientResponseError` docs. (6700) - Updated Redis code examples to follow the latest API. (6907) - Added a note about possibly needing to update headers when using ``on_response_prepare``. -- by :user:`Dreamsorcerer` (7283) - Completed ``trust_env`` parameter description to honor ``wss_proxy``, ``ws_proxy`` or ``no_proxy`` env. (7325) - Expanded SSL documentation with more examples (e.g. how to use certifi). -- by :user:`Dreamsorcerer` (7334) - Fix, update, and improve client exceptions documentation. (7733) Deprecations and Removals ------------------------- - Added ``shutdown_timeout`` parameter to ``BaseRunner``, while deprecating ``shutdown_timeout`` parameter from ``BaseSite``. -- by :user:`Dreamsorcerer` (7718) - Dropped Python 3.6 support. (6378) - Dropped Python 3.7 support. -- by :user:`Dreamsorcerer` (7336) - Removed support for abandoned ``tokio`` event loop. -- by :user:`Dreamsorcerer` (7281) Misc ---- - Made ``print`` argument in ``run_app()`` optional. (3690) - Improved performance of ``ceil_timeout`` in some cases. (6316) - Changed importing Gunicorn to happen on-demand, decreasing import time by ~53%. -- :user:`Dreamsorcerer` (6591) - Improved import time by replacing ``http.server`` with ``http.HTTPStatus``. (6903) - Fixed annotation of ``ssl`` parameter to disallow ``True``. -- by :user:`Dreamsorcerer`. (7335) ---- ``` ### 3.9.0rc0 ``` Features -------- - Performance: Skipped filtering ``CookieJar`` when the jar is empty or all cookies have expired. (7819) - Performance: Only check origin if insecure scheme and there are origins to treat as secure, in ``CookieJar.filter_cookies()``. (7821) - Performance: Used timestamp instead of ``datetime`` to achieve faster cookie expiration in ``CookieJar``. (7824) Bugfixes -------- - Fixed an issue where the client could go into an infinite loop. -- by :user:`Dreamsorcerer` (7815) - Added HTTP method validation. (6533) - Fixed arbitrary sequence types being allowed to inject values via version parameter. -- by :user:`Dreamsorcerer` (7835) - Performance: Fixed increase in latency with small messages from websocket compression changes. (7797) ---- ``` ### 3.9.0b1 ``` Features -------- - Added ``WebSocketResponse.get_extra_info()`` to access a protocol transport's extra info. (7078) - Allow ``link`` argument to be set to None/empty in HTTP 451 exception. (7689) - Added ``shutdown_timeout`` parameter to ``BaseRunner``, while deprecating ``shutdown_timeout`` parameter from ``BaseSite``. -- by :user:`Dreamsorcerer` (7718) Bugfixes -------- - Fixed keep-alive connections stopping a graceful shutdown. -- by :user:`Dreamsorcerer` (7718) - Fixed ``ClientWebSocketResponse.close_code`` being erroneously set to ``None`` when there are concurrent async tasks receiving data and closing the connection. (7306) - Changed ``AppKey`` warning to ``web.NotAppKeyWarning`` and stop it being displayed by default. -- by :user:`Dreamsorcerer` (7677) - Fix issue with insufficient HTTP method and version validation. (7700) - Add check to validate that absolute URIs have schemes. (7712) - Fix unhandled exception when Python HTTP parser encounters unpaired Unicode surrogates. (7715) - Update parser to disallow invalid characters in header field names and stop accepting LF as a request line separator. (7719) - Fix py http parser not treating 204/304/1xx as an empty body (7755) - Ensure empty body response for 1xx/204/304 per RFC 9112 sec 6.3 (7756) - Fixed an issue when a client request is closed before completing a chunked payload -- by :user:`Dreamsorcerer` (7764) - Edge Case Handling for ResponseParser for missing reason value (7776) - Fixed a rare `RuntimeError: await wasn't used with future` exception -- by :user:`stalkerg` (7785) Improved Documentation ---------------------- - Fix, update, and improve client exceptions documentation. (7733) ---- ``` ### 3.9.0b0 ``` Features -------- - Introduced ``AppKey`` for static typing support of ``Application`` storage. See https://docs.aiohttp.org/en/stable/web_advanced.html#application-s-config (5864) - Added a graceful shutdown period which allows pending tasks to complete before the application's cleanup is called. The period can be adjusted with the ``shutdown_timeout`` parameter. -- by :user:`Dreamsorcerer`. See https://docs.aiohttp.org/en/latest/web_advanced.html#graceful-shutdown (7188) - Added `handler_cancellation <https://docs.aiohttp.org/en/stable/web_advanced.html#web-handler-cancellation>`_ parameter to cancel web handler on client disconnection. -- by :user:`mosquito` This (optionally) reintroduces a feature removed in a previous release. Recommended for those looking for an extra level of protection against denial-of-service attacks. (7056) - Added support for setting response header parameters ``max_line_size`` and ``max_field_size``. (2304) - Added ``auto_decompress`` parameter to ``ClientSession.request`` to override ``ClientSession._auto_decompress``. -- by :user:`Daste745` (3751) - Changed ``raise_for_status`` to allow a coroutine. (3892) - Added client brotli compression support (optional with runtime check). (5219) - Added ``client_max_size`` to ``BaseRequest.clone()`` to allow overriding the request body size -- :user:`anesabml`. (5704) - Added a middleware type alias ``aiohttp.typedefs.Middleware``. (5898) - Exported ``HTTPMove`` which can be used to catch any redirection request that has a location -- :user:`dreamsorcerer`. (6594) - Changed the ``path`` parameter in ``web.run_app()`` to accept a ``pathlib.Path`` object. (6839) - Added support for passing a custom server name parameter to HTTPS connection. (7114) - Added support for using Basic Auth credentials from :file:`.netrc` file when making HTTP requests with the :py:class:`~aiohttp.ClientSession` ``trust_env`` argument is set to ``True`` -- by :user:`yuvipanda`. (7131) - Turned access log into no-op when the logger is disabled. (7240) - Added typing information to ``RawResponseMessage`` -- by :user:`Gobot1234` (7365) - Removed ``async-timeout`` for Python 3.11+ (replaced with ``asyncio.timeout()`` on newer releases). (7502) - Added support for ``brotlicffi`` as an alternative to ``brotli`` (fixing Brotli support on PyPy). (7611) Bugfixes -------- - Implemented stripping the trailing dots from fully-qualified domain names in ``Host`` headers and TLS context when acting as an HTTP client. This allows the client to connect to URLs with FQDN host name like ``https://example.com./``. -- by :user:`martin-sucha`. (3636) - Fixed client timeout not working when incoming data is always available without waiting -- by :user:`Dreamsorcerer`. (5854) - Fixed ``readuntil`` to work with a delimiter of more than one character (6701) - Added ``__repr__`` to ``EmptyStreamReader`` to avoid ``AttributeError``. (6916) - Fixed bug when using ``TCPConnector`` with ``ttl_dns_cache=0``. (7014) - Fixed response returned from expect handler being thrown away. -- by :user:`Dreamsorcerer` (7025) - Avoided raising ``UnicodeDecodeError`` in multipart and in HTTP headers parsing. (7044) - Changed ``sock_read`` timeout to start after writing has finished, avoiding read timeouts caused by an unfinished write. -- by :user:`dtrifiro` (7149) - Fixed missing query in tracing method URLs when using ``yarl`` 1.9+. (7259) - Changed max 32-bit timestamp to an aware datetime object, for consistency with the non-32-bit one, and to avoid a ``DeprecationWarning`` on Python 3.12. (7302) - Fixed ``EmptyStreamReader.iter_chunks()`` never ending. -- by :user:`mind1m` (7616) Improved Documentation ---------------------- - Fixed the `ClientResponse.release`'s type in the doc. Changed from `comethod` to `method`. (5836) - Added information on behavior of base_url parameter in `ClientSession`. (6647) - Fixed `ClientResponseError` docs. (6700) - Updated Redis code examples to follow the latest API. (6907) - Added a note about possibly needing to update headers when using ``on_response_prepare``. -- by :user:`Dreamsorcerer` (7283) - Completed ``trust_env`` parameter description to honor ``wss_proxy``, ``ws_proxy`` or ``no_proxy`` env. (7325) - Expanded SSL documentation with more examples (e.g. how to use certifi). -- by :user:`Dreamsorcerer` (7334) Deprecations and Removals ------------------------- - Dropped Python 3.6 support. (6378) - Dropped Python 3.7 support. -- by :user:`Dreamsorcerer` (7336) - Removed support for abandoned ``tokio`` event loop. -- by :user:`Dreamsorcerer` (7281) Misc ---- - Made ``print`` argument in ``run_app()`` optional. (3690) - Improved performance of ``ceil_timeout`` in some cases. (6316) - Changed importing Gunicorn to happen on-demand, decreasing import time by ~53%. -- :user:`Dreamsorcerer` (6591) - Improved import time by replacing ``http.server`` with ``http.HTTPStatus``. (6903) - Fixed annotation of ``ssl`` parameter to disallow ``True``. -- by :user:`Dreamsorcerer` (7335) ---- ``` ### 3.8.6 ``` Security bugfixes ----------------- - Upgraded the vendored copy of llhttp_ to v9.1.3 -- by :user:`Dreamsorcerer` Thanks to :user:`kenballus` for reporting this, see https://github.com/aio-libs/aiohttp/security/advisories/GHSA-pjjw-qhg8-p2p9. .. _llhttp: https://llhttp.org (7647) - Updated Python parser to comply with RFCs 9110/9112 -- by :user:`Dreamorcerer` Thanks to :user:`kenballus` for reporting this, see https://github.com/aio-libs/aiohttp/security/advisories/GHSA-gfw2-4jvh-wgfg. (7663) Deprecation ----------- - Added ``fallback_charset_resolver`` parameter in ``ClientSession`` to allow a user-supplied character set detection function. Character set detection will no longer be included in 3.9 as a default. If this feature is needed, please use `fallback_charset_resolver <https://docs.aiohttp.org/en/stable/client_advanced.html#character-set-detection>`_. (7561) Features -------- - Enabled lenient response parsing for more flexible parsing in the client (this should resolve some regressions when dealing with badly formatted HTTP responses). -- by :user:`Dreamsorcerer` (7490) Bugfixes -------- - Fixed ``PermissionError`` when ``.netrc`` is unreadable due to permissions. (7237) - Fixed output of parsing errors pointing to a ``\n``. -- by :user:`Dreamsorcerer` (7468) - Fixed ``GunicornWebWorker`` max_requests_jitter not working. (7518) - Fixed sorting in ``filter_cookies`` to use cookie with longest path. -- by :user:`marq24`. (7577) - Fixed display of ``BadStatusLine`` messages from llhttp_. -- by :user:`Dreamsorcerer` (7651) ---- ``` ### 3.8.5 ``` Security bugfixes ----------------- - Upgraded the vendored copy of llhttp_ to v8.1.1 -- by :user:`webknjaz` and :user:`Dreamsorcerer`. Thanks to :user:`sethmlarson` for reporting this and providing us with comprehensive reproducer, workarounds and fixing details! For more information, see https://github.com/aio-libs/aiohttp/security/advisories/GHSA-45c4-8wx5-qw6w. .. _llhttp: https://llhttp.org (7346) Features -------- - Added information to C parser exceptions to show which character caused the error. -- by :user:`Dreamsorcerer` (7366) Bugfixes -------- - Fixed a transport is :data:`None` error -- by :user:`Dreamsorcerer`. (3355) ---- ``` ### 3.8.4 ``` Bugfixes -------- - Fixed incorrectly overwriting cookies with the same name and domain, but different path. (6638) - Fixed ``ConnectionResetError`` not being raised after client disconnection in SSL environments. (7180) ---- ``` ### 3.8.3 ``` .. attention:: This is the last :doc:`aiohttp <index>` release tested under Python 3.6. The 3.9 stream is dropping it from the CI and the distribution package metadata. Bugfixes -------- - Increased the upper boundary of the :doc:`multidict:index` dependency to allow for the version 6 -- by :user:`hugovk`. It used to be limited below version 7 in :doc:`aiohttp <index>` v3.8.1 but was lowered in v3.8.2 via :pr:`6550` and never brought back, causing problems with dependency pins when upgrading. :doc:`aiohttp <index>` v3.8.3 fixes that by recovering the original boundary of ``< 7``. (6950) ---- ``` ### 3.8.2 ``` .. note:: This release has some compatibility fixes for Python 3.11 but it may still have some quirks. Some tests are still flaky in the CI. .. attention:: This is the last :doc:`aiohttp <index>` release tested under Python 3.6. The 3.9 stream is dropping it from the CI and the distribution package metadata. Bugfixes -------- - Added support for registering :rfc:`OPTIONS <9110OPTIONS>` HTTP method handlers via :py:class:`~aiohttp.web.RouteTableDef`. (4663) - Started supporting :rfc:`authority-form <9112authority-form>` and :rfc:`absolute-form <9112absolute-form>` URLs on the server-side. (6227) - Fixed Python 3.11 incompatibilities by using Cython 0.29.25. (6396) - Extended the ``sock`` argument typing declaration of the :py:func:`~aiohttp.web.run_app` function as optionally accepting iterables. (6401) - Fixed a regression where :py:exc:`~asyncio.CancelledError` occurs on client disconnection. (6719) - Started exporting :py:class:`~aiohttp.web.PrefixedSubAppResource` under :py:mod:`aiohttp.web` -- by :user:`Dreamsorcerer`. This fixes a regression introduced by :pr:`3469`. (6889) - Dropped the :class:`object` type possibility from the :py:attr:`aiohttp.ClientSession.timeout` property return type declaration. (6917), (6923) Improved Documentation ---------------------- - Added clarification on configuring the app object with settings such as a database connection. (4137) - Extended the ``sock`` argument typing declaration of the :py:func:`~aiohttp.web.run_app` function as optionally accepting iterables. (6401) - Dropped the :class:`object` type possibility from the :py:attr:`aiohttp.ClientSession.timeout` property return type declaration. (6917), (6923) Deprecations and Removals ------------------------- - Dropped Python 3.5 support, :doc:`aiohttp <index>` only works under Python 3.6 and higher from now on. (4046) Misc ---- - Removed a deprecated usage of :py:func:`pytest.warns(None) <pytest.warns>` in tests. (6663) - (6369), (6399), (6550), (6708), (6757), (6857), (6872). ---- ``` ### 3.8.1 ``` Bugfixes -------- - Fix the error in handling the return value of `getaddrinfo`. `getaddrinfo` will return an `(int, bytes)` tuple, if CPython could not handle the address family. It will cause a index out of range error in aiohttp. For example, if user compile CPython with `--disable-ipv6` option but his system enable the ipv6. (5901) - Do not install "examples" as a top-level package. (6189) - Restored ability to connect IPv6-only host. (6195) - Remove ``Signal`` from ``__all__``, replace ``aiohttp.Signal`` with ``aiosignal.Signal`` in docs (6201) - Made chunked encoding HTTP header check stricter. (6305) Improved Documentation ---------------------- - update quick starter demo codes. (6240) - Added an explanation of how tiny timeouts affect performance to the client reference document. (6274) - Add flake8-docstrings to flake8 configuration, enable subset of checks. (6276) - Added information on running complex applications with additional tasks/processes -- :user:`Dreamsorcerer`. (6278) Misc ---- - (6205) ---- ``` ### 3.8.0 ``` Features -------- - Added a ``GunicornWebWorker`` feature for extending the aiohttp server configuration by allowing the 'wsgi' coroutine to return ``web.AppRunner`` object. (2988)_ - Switch from ``http-parser`` to ``llhttp`` (3561)_ - Use Brotli instead of brotlipy (3803)_ - Disable implicit switch-back to pure python mode. The build fails loudly if aiohttp cannot be compiled with C Accelerators. Use AIOHTTP_NO_EXTENSIONS=1 to explicitly disable C Extensions complication and switch to Pure-Python mode. Note that Pure-Python mode is significantly slower than compiled one. (3828)_ - Make access log use local time with timezone (3853)_ - Implemented ``readuntil`` in ``StreamResponse`` (4054)_ - FileResponse now supports ETag. (4594)_ - Add a request handler type alias ``aiohttp.typedefs.Handler``. (4686)_ - ``AioHTTPTestCase`` is more async friendly now. For people who use unittest and are used to use :py:exc:`~unittest.TestCase` it will be easier to write new test cases like the sync version of the :py:exc:`~unittest.TestCase` class, without using the decorator `unittest_run_loop`, just `async def test_*`. The only difference is that for the people using python3.7 and below a new dependency is needed, it is ``asynctestcase``. (4700)_ - Add validation of HTTP header keys and values to prevent header injection. (4818)_ - Add predicate to ``AbstractCookieJar.clear``. Add ``AbstractCookieJar.clear_domain`` to clean all domain and subdomains cookies only. (4942)_ - Add keepalive_timeout parameter to web.run_app. (5094)_ - Tracing for client sent headers (5105)_ - Make type hints for http parser stricter (5267)_ - Add final declarations for constants. (5275)_ - Switch to external frozenlist and aiosignal libraries. (5293)_ - Don't send secure cookies by insecure transports. By default, the transport is secure if https or wss scheme is used. Use `CookieJar(treat_as_secure_origin="http://127.0.0.1")` to override the default security checker. (5571)_ - Always create a new event loop in ``aiohttp.web.run_app()``. This adds better compatibility with ``asyncio.run()`` or if trying to run multiple apps in sequence. (5572)_ - Add ``aiohttp.pytest_plugin.AiohttpClient`` for static typing of pytest plugin. (5585)_ - Added a ``socket_factory`` argument to ``BaseTestServer``. (5844)_ - Add compression strategy parameter to enable_compression method. (5909)_ - Added support for Python 3.10 to Github Actions CI/CD workflows and fix the related deprecation warnings -- :user:`Hanaasagi`. (5927)_ - Switched ``chardet`` to ``charset-normalizer`` for guessing the HTTP payload body encoding -- :user:`Ousret`. (5930)_ - Added optional auto_decompress argument for HttpRequestParser (5957)_ - Added support for HTTPS proxies to the extent CPython's :py:mod:`asyncio` supports it -- by :user:`bmbouter`, :user:`jborean93` and :user:`webknjaz`. (5992)_ - Added ``base_url`` parameter to the initializer of :class:`~aiohttp.ClientSession`. (6013)_ - Add Trove classifier and create binary wheels for 3.10. -- :user:`hugovk`. (6079)_ - Started shipping platform-specific wheels with the ``musl`` tag targeting typical Alpine Linux runtimes — :user:`asvetlov`. (6139)_ - Started shipping platform-specific arm64 wheels for Apple Silicon — :user:`asvetlov`. (6139)_ Bugfixes -------- - Modify _drain_helper() to handle concurrent `await resp.write(...)` or `ws.send_json(...)` calls without race-condition. (2934)_ - Started using `MultiLoopChildWatcher` when it's available under POSIX while setting up the test I/O loop. (3450)_ - Only encode content-disposition filename parameter using percent-encoding. Other parameters are encoded to quoted-string or RFC2231 extended parameter value. (4012)_ - Fixed HTTP client requests to honor ``no_proxy`` environment variables. (4431)_ - Fix supporting WebSockets proxies configured via environment variables. (4648)_ - Change return type on URLDispatcher to UrlMappingMatchInfo to improve type annotations. (4748)_ - Ensure a cleanup context is cleaned up even when an exception occurs during startup. (4799)_ - Added a new exception type for Unix socket client errors which provides a more useful error message. (4984)_ - Remove Transfer-Encoding and Content-Type headers for 204 in StreamResponse (5106)_ - Only depend on typing_extensions for Python <3.8 (5107)_ - Add ABNORMAL_CLOSURE and BAD_GATEWAY to WSCloseCode (5192)_ - Fix cookies disappearing from HTTPExceptions. (5233)_ - StaticResource prefixes no longer match URLs with a non-folder prefix. For example ``routes.static('/foo', '/foo')`` no longer matches the URL ``/foobar``. Previously, this would attempt to load the file ``/foo/ar``. (5250)_ - Acquire the connection before running traces to prevent race condition. (5259)_ - Add missing slots to _RequestContextManager`` and ``_WSRequestContextManager`` (5329)_ - Ensure sending a zero byte file does not throw an exception (round 2) (5380)_ - Set "text/plain" when data is an empty string in client requests. (5392)_ - Stop automatically releasing the ``ClientResponse`` object on calls to the ``ok`` property for the failed requests. (5403)_ - Include query parameters from `params` keyword argument in tracing `URL`. (5432)_ - Fix annotations (5466)_ - Fixed the multipart POST requests processing to always release file descriptors for the ``tempfile.Temporaryfile``-created ``_io.BufferedRandom`` instances of files sent within multipart request bodies via HTTP POST requests -- by :user:`webknjaz`. (5494)_ - Fix 0 being incorrectly treated as an immediate timeout. (5527)_ - Fixes failing tests when an environment variable <scheme>_proxy is set. (5554)_ - Replace deprecated app handler design in ``tests/autobahn/server.py`` with call to ``web.run_app``; replace deprecated ``aiohttp.ws_connect`` calls in ``tests/autobahn/client.py`` with ``aiohttp.ClienSession.ws_connect``. (5606)_ - Fixed test for ``HTTPUnauthorized`` that access the ``text`` argument. This is not used in any part of the code, so it's removed now. (5657)_ - Remove incorrect default from docs (5727)_ - Remove external test dependency to http://httpbin.org (5840)_ - Don't cancel current task when entering a cancelled timer. (5853)_ - Added ``params`` keyword argument to ``ClientSession.ws_connect``. -- :user:`hoh`. (5868)_ - Uses :py:class:`~asyncio.ThreadedChildWatcher` under POSIX to allow setting up test loop in non-main thread. (5877)_ - Fix the error in handling the return value of `getaddrinfo`. `getaddrinfo` will return an `(int, bytes)` tuple, if CPython could not handle the address family. It will cause a index out of range error in aiohttp. For example, if user compile CPython with `--disable-ipv6` option but his system enable the ipv6. (5901)_ - Removed the deprecated ``loop`` argument from the ``asyncio.sleep``/``gather`` calls (5905)_ - Return ``None`` from ``request.if_modified_since``, ``request.if_unmodified_since``, ``request.if_range`` and ``response.last_modified`` when corresponding http date headers are invalid. (5925)_ - Fix resetting `SIGCHLD` signals in Gunicorn aiohttp Worker to fix `subprocesses` that capture output having an incorrect `returncode`. (6130)_ - Raise ``400: Content-Length can't be present with Transfer-Encoding`` if both ``Content-Length`` and ``Transfer-Encoding`` are sent by peer by both C and Python implementations (6182)_ Improved Documentation ---------------------- - Refactored OpenAPI/Swagger aiohttp addons, added ``aio-openapi`` (5326)_ - Fixed docs on request cookies type, so it matches what is actually used in the code (a read-only dictionary-like object). (5725)_ - Documented that the HTTP client ``Authorization`` header is removed on redirects to a different host or protocol. (5850)_ Misc ---- - (3927)_, (4247)_, (4247)_, (5389)_, (5457)_, (5486)_, (5494)_, (5515)_, (5625)_, (5635)_, (5648)_, (5657)_, (5890)_, (5914)_, (5932)_, (6002)_, (6045)_, (6131)_, (6156)_, (6165)_, (6166)_ ---- ``` ### 3.8.0b0 ``` Features -------- - Added a ``GunicornWebWorker`` feature for extending the aiohttp server configuration by allowing the 'wsgi' coroutine to return ``web.AppRunner`` object. (2988)_ - Switch from ``http-parser`` to ``llhttp`` (3561)_ - Use Brotli instead of brotlipy (3803)_ - Disable implicit switch-back to pure python mode. The build fails loudly if aiohttp cannot be compiled with C Accelerators. Use AIOHTTP_NO_EXTENSIONS=1 to explicitly disable C Extensions complication and switch to Pure-Python mode. Note that Pure-Python mode is significantly slower than compiled one. (3828)_ - Make access log use local time with timezone (3853)_ - Implemented ``readuntil`` in ``StreamResponse`` (4054)_ - FileResponse now supports ETag. (4594)_ - Add a request handler type alias ``aiohttp.typedefs.Handler``. (4686)_ - ``AioHTTPTestCase`` is more async friendly now. For people who use unittest and are used to use :py:exc:`~unittest.TestCase` it will be easier to write new test cases like the sync version of the :py:exc:`~unittest.TestCase` class, without using the decorator `unittest_run_loop`, just `async def test_*`. The only difference is that for the people using python3.7 and below a new dependency is needed, it is ``asynctestcase``. (4700)_ - Add validation of HTTP header keys and values to prevent header injection. (4818)_ - Add predicate to ``AbstractCookieJar.clear``. Add ``AbstractCookieJar.clear_domain`` to clean all domain and subdomains cookies only. (4942)_ - Add keepalive_timeout parameter to web.run_app. (5094)_ - Tracing for client sent headers (5105)_ - Make type hints for http parser stricter (5267)_ - Add final declarations for constants. (5275)_ - Switch to external frozenlist and aiosignal libraries. (5293)_ - Don't send secure cookies by insecure transports. By default, the transport is secure if https or wss scheme is used. Use `CookieJar(treat_as_secure_origin="http://127.0.0.1")` to override the default security checker. (5571)_ - Always create a new event loop in ``aiohttp.web.run_app()``. This adds better compatibility with ``asyncio.run()`` or if trying to run multiple apps in sequence. (5572)_ - Add ``aiohttp.pytest_plugin.AiohttpClient`` for static typing of pytest plugin. (5585)_ - Added a ``socket_factory`` argument to ``BaseTestServer``. (5844)_ - Add compression strategy parameter to enable_compression method. (5909)_ - Added support for Python 3.10 to Github Actions CI/CD workflows and fix the related deprecation warnings -- :user:`Hanaasagi`. (5927)_ - Switched ``chardet`` to ``charset-normalizer`` for guessing the HTTP payload body encoding -- :user:`Ousret`. (5930)_ - Added optional auto_decompress argument for HttpRequestParser (5957)_ - Added support for HTTPS proxies to the extent CPython's :py:mod:`asyncio` supports it -- by :user:`bmbouter`, :user:`jborean93` and :user:`webknjaz`. (5992)_ - Added ``base_url`` parameter to the initializer of :class:`~aiohttp.ClientSession`. (6013)_ - Add Trove classifier and create binary wheels for 3.10. -- :user:`hugovk`. (6079)_ - Started shipping platform-specific wheels with the ``musl`` tag targeting typical Alpine Linux runtimes — :user:`asvetlov`. (6139)_ - Started shipping platform-specific arm64 wheels for Apple Silicon — :user:`asvetlov`. (6139)_ Bugfixes -------- - Modify _drain_helper() to handle concurrent `await resp.write(...)` or `ws.send_json(...)` calls without race-condition. (2934)_ - Started using `MultiLoopChildWatcher` when it's available under POSIX while setting up the test I/O loop. (3450)_ - Only encode content-disposition filename parameter using percent-encoding. Other parameters are encoded to quoted-string or RFC2231 extended parameter value. (4012)_ - Fixed HTTP client requests to honor ``no_proxy`` environment variables. (4431)_ - Change return type on URLDispatcher to UrlMappingMatchInfo to improve type annotations. (4748)_ - Ensure a cleanup context is cleaned up even when an exception occurs during startup. (4799)_ - Added a new exception type for Unix socket client errors which provides a more useful error message. (4984)_ - Remove Transfer-Encoding and Content-Type headers for 204 in StreamResponse (5106)_ - Only depend on typing_extensions for Python <3.8 (5107)_ - Add ABNORMAL_CLOSURE and BAD_GATEWAY to WSCloseCode (5192)_ - Fix cookies disappearing from HTTPExceptions. (5233)_ - StaticResource prefixes no longer match URLs with a non-folder prefix. For example ``routes.static('/foo', '/foo')`` no longer matches the URL ``/foobar``. Previously, this would attempt to load the file ``/foo/ar``. (5250)_ - Acquire the connection before running traces to prevent race condition. (5259)_ - Add missing slots to _RequestContextManager`` and ``_WSRequestContextManager`` (5329)_ - Ensure sending a zero byte file does not throw an exception (round 2) (5380)_ - Set "text/plain" when data is an empty string in client requests. (5392)_ - Stop automatically releasing the ``ClientResponse`` object on calls to the ``ok`` property for the failed requests. (5403)_ - Include query parameters from `params` keyword argument in tracing `URL`. (5432)_ - Fix annotations (5466)_ - Fixed the multipart POST requests processing to always release file descriptors for the ``tempfile.Temporaryfile``-created ``_io.BufferedRandom`` instances of files sent within multipart request bodies via HTTP POST requests -- by :user:`webknjaz`. (5494)_ - Fix 0 being incorrectly treated as an immediate timeout. (5527)_ - Replace deprecated app handler design in ``tests/autobahn/server.py`` with call to ``web.run_app``; replace deprecated ``aiohttp.ws_connect`` calls in ``tests/autobahn/client.py`` with ``aiohttp.ClienSession.ws_connect``. (5606)_ - Fixed test for ``HTTPUnauthorized`` that access the ``text`` argument. This is not used in any part of the code, so it's removed now. (5657)_ - Remove incorrect default from docs (5727)_ - Remove external test dependency to http://httpbin.org (5840)_ - Don't cancel current task when entering a cancelled timer. (5853)_ - Added ``params`` keyword argument to ``ClientSession.ws_connect``. -- :user:`hoh`. (5868)_ - Uses :py:class:`~asyncio.ThreadedChildWatcher` under POSIX to allow setting up test loop in non-main thread. (5877)_ - Fix the error in handling the return value of `getaddrinfo`. `getaddrinfo` will return an `(int, bytes)` tuple, if CPython could not handle the address family. It will cause a index out of range error in aiohttp. For example, if user compile CPython with `--disable-ipv6` option but his system enable the ipv6. (5901)_ - Removed the deprecated ``loop`` argument from the ``asyncio.sleep``/``gather`` calls (5905)_ - Return ``None`` from ``request.if_modified_since``, ``request.if_unmodified_since``, ``request.if_range`` and ``response.last_modified`` when corresponding http date headers are invalid. (5925)_ - Fix resetting `SIGCHLD` signals in Gunicorn aiohttp Worker to fix `subprocesses` that capture output having an incorrect `returncode`. (6130)_ - Raise ``400: Content-Length can't be present with Transfer-Encoding`` if both ``Content-Length`` and ``Transfer-Encoding`` are sent by peer by both C and Python implementations (6182)_ Improved Documentation ---------------------- - Refactored OpenAPI/Swagger aiohttp addons, added ``aio-openapi`` (5326)_ - Fixed docs on request cookies type, so it matches what is actually used in the code (a read-only dictionary-like object). (5725)_ - Documented that the HTTP client ``Authorization`` header is removed on redirects to a different host or protocol. (5850)_ Misc ---- - (3927)_, (4247)_, (4247)_, (5389)_, (5457)_, (5486)_, (5494)_, (5515)_, (5625)_, (5635)_, (5648)_, (5657)_, (5890)_, (5914)_, (5932)_, (6002)_, (6045)_, (6131)_, (6156)_, (6165)_, (6166)_ ---- ``` ### 3.8.0a7 ``` Features -------- - Added a ``GunicornWebWorker`` feature for extending the aiohttp server configuration by allowing the 'wsgi' coroutine to return ``web.AppRunner`` object. (2988)_ - Switch from ``http-parser`` to ``llhttp`` (3561)_ - Use Brotli instead of brotlipy (3803)_ - Disable implicit switch-back to pure python mode. The build fails loudly if aiohttp cannot be compiled with C Accelerators. Use AIOHTTP_NO_EXTENSIONS=1 to explicitly disable C Extensions complication and switch to Pure-Python mode. Note that Pure-Python mode is significantly slower than compiled one. (3828)_ - Make access log use local time with timezone (3853)_ - Implemented ``readuntil`` in ``StreamResponse`` (4054)_ - FileResponse now supports ETag. (4594)_ - Add a request handler type alias ``aiohttp.typedefs.Handler``. (4686)_ - ``AioHTTPTestCase`` is more async friendly now. For people who use unittest and are used to use :py:exc:`~unittest.TestCase` it will be easier to write new test cases like the sync version of the :py:exc:`~unittest.TestCase` class, without using the decorator `unittest_run_loop`, just `async def test_*`. The only difference is that for the people using python3.7 and below a new dependency is needed, it is ``asynctestcase``. (4700)_ - Add validation of HTTP header keys and values to prevent header injection. (4818)_ - Add predicate to ``AbstractCookieJar.clear``. Add ``AbstractCookieJar.clear_domain`` to clean all domain and subdomains cookies only. (4942)_ - Add keepalive_timeout parameter to web.run_app. (5094)_ - Tracing for client sent headers (5105)_ - Make type hints for http parser stricter (5267)_ - Add final declarations for constants. (5275)_ - Switch to external frozenlist and aiosignal libraries. (5293)_ - Don't send secure cookies by insecure transports. By default, the transport is secure if https or wss scheme is used. Use `CookieJar(treat_as_secure_origin="http://127.0.0.1")` to override the default security checker. (5571)_ - Always create a new event loop in ``aiohttp.web.run_app()``. This adds better compatibility with ``asyncio.run()`` or if trying to run multiple apps in sequence. (5572)_ - Add ``aiohttp.pytest_plugin.AiohttpClient`` for static typing of pytest plugin. (5585)_ - Added a ``socket_factory`` argument to ``BaseTestServer``. (5844)_ - Add compression strategy parameter to enable_compression method. (5909)_ - Added support for Python 3.10 to Github Actions CI/CD workflows and fix the related deprecation warnings -- :user:`Hanaasagi`. (5927)_ - Switched ``chardet`` to ``charset-normalizer`` for guessing the HTTP payload body encoding -- :user:`Ousret`. (5930)_ - Added optional auto_decompress argument for HttpRequestParser (5957)_ - Added support for HTTPS proxies to the extent CPython's :py:mod:`asyncio` supports it -- by :user:`bmbouter`, :user:`jborean93` and :user:`webknjaz`. (5992)_ - Add Trove classifier and create binary wheels for 3.10. -- :user:`hugovk`. (6079)_ - Started shipping platform-specific wheels with the ``musl`` tag targeting typical Alpine Linux runtimes — :user:`asvetlov`. (6139)_ - Started shipping platform-specific arm64 wheels for Apple Silicon — :user:`asvetlov`. (6139)_ Bugfixes -------- - Modify _drain_helper() to handle concurrent `await resp.write(...)` or `ws.send_json(...)` calls without race-condition. (2934)_ - Started using `MultiLoopChildWatcher` when it's available under POSIX while setting up the test I/O loop. (3450)_ - Only encode content-disposition filename parameter using percent-encoding. Other parameters are encoded to quoted-string or RFC2231 extended parameter value. (4012)_ - Fixed HTTP client requests to honor ``no_proxy`` environment variables. (4431)_ - Change return type on URLDispatcher to UrlMappingMatchInfo to improve type annotations. (4748)_ - Ensure a cleanup context is cleaned up even when an exception occurs during startup. (4799)_ - Added a new exception type for Unix socket client errors which provides a more useful error message. (4984)_ - Remove Transfer-Encoding and Content-Type headers for 204 in StreamResponse (5106)_ - Only depend on typing_extensions for Python <3.8 (5107)_ - Add ABNORMAL_CLOSURE and BAD_GATEWAY to WSCloseCode (5192)_ - Fix cookies disappearing from HTTPExceptions. (5233)_ - Acquire the connection before running traces to prevent race condition. (5259)_ - Add missing slots to _RequestContextManager`` and ``_WSRequestContextManager`` (5329)_ - Ensure sending a zero byte file does not throw an exception (round 2) (5380)_ - Set "text/plain" when data is an empty string in client requests. (5392)_ - Stop automatically releasing the ``ClientResponse`` object on calls to the ``ok`` property for the failed requests. (5403)_ - Include query parameters from `params` keyword argument in tracing `URL`. (5432)_ - Fix annotations (5466)_ - Fixed the multipart POST requests processing to always release file descriptors for the ``tempfile.Temporaryfile``-created ``_io.BufferedRandom`` instances of files sent within multipart request bodies via HTTP POST requests -- by :user:`webknjaz`. (5494)_ - Fix 0 being incorrectly treated as an immediate timeout. (5527)_ - Replace deprecated app handler design in ``tests/autobahn/server.py`` with call to ``web.run_app``; replace deprecated ``aiohttp.ws_connect`` calls in ``tests/autobahn/client.py`` with ``aiohttp.ClienSession.ws_connect``. (5606)_ - Fixed test for ``HTTPUnauthorized`` that access the ``text`` argument. This is not used in any part of the code, so it's removed now. (5657)_ - Remove incorrect default from docs (5727)_ - Remove external test dependency to http://httpbin.org (5840)_ - Don't cancel current task when entering a cancelled timer. (5853)_ - Added ``params`` keyword argument to ``ClientSession.ws_connect``. -- :user:`hoh`. (5868)_ - Uses :py:class:`~asyncio.ThreadedChildWatcher` under POSIX to allow setting up test loop in non-main thread. (5877)_ - Fix the error in handling the return value of `getaddrinfo`. `getaddrinfo` will return an `(int, bytes)` tuple, if CPython could not handle the address family. It will cause a index out of range error in aiohttp. For example, if user compile CPython with `--disable-ipv6` option but his system enable the ipv6. (5901)_ - Removed the deprecated ``loop`` argument from the ``asyncio.sleep``/``gather`` calls (5905)_ - Return ``None`` from ``request.if_modified_since``, ``request.if_unmodified_since``, ``request.if_range`` and ``response.last_modified`` when corresponding http date headers are invalid. (5925)_ - Fix resetting `SIGCHLD` signals in Gunicorn aiohttp Worker to fix `subprocesses` that capture output having an incorrect `returncode`. (6130)_ Improved Documentation ---------------------- - Refactored OpenAPI/Swagger aiohttp addons, added ``aio-openapi`` (5326)_ - Fixed docs on request cookies type, so it matches what is actually used in the code (a read-only dictionary-like object). (5725)_ - Documented that the HTTP client ``Authorization`` header is removed on redirects to a different host or protocol. (5850)_ Misc ---- - (3927)_, (4247)_, (4247)_, (5389)_, (5457)_, (5486)_, (5494)_, (5515)_, (5625)_, (5635)_, (5648)_, (5657)_, (5890)_, (5914)_, (5932)_, (6002)_, (6045)_, (6131)_, (6156)_, (6165)_, (6166)_ ---- ``` ### 3.7.4.post0 ``` ======================== Misc ---- - Bumped upper bound of the ``chardet`` runtime dependency to allow their v4.0 version stream. (5366)_ ---- ``` ### 3.7.3 ``` Features -------- - Use Brotli instead of brotlipy `3803 <https://github.com/aio-libs/aiohttp/issues/3803>`_ - Made exceptions pickleable. Also changed the repr of some exceptions. `4077 <https://github.com/aio-libs/aiohttp/issues/4077>`_ Bugfixes -------- - Raise a ClientResponseError instead of an AssertionError for a blank HTTP Reason Phrase. `3532 <https://github.com/aio-libs/aiohttp/issues/3532>`_ - Fix ``web_middlewares.normalize_path_middleware`` behavior for patch without slash. `3669 <https://github.com/aio-libs/aiohttp/issues/3669>`_ - Fix overshadowing of overlapped sub-applications prefixes. `3701 <https://github.com/aio-libs/aiohttp/issues/3701>`_ - Make `BaseConnector.close()` a coroutine and wait until the client closes all connections. Drop deprecated "with Connector():" syntax. `3736 <https://github.com/aio-libs/aiohttp/issues/3736>`_ - Reset the ``sock_read`` timeout each time data is received for a ``aiohttp.client`` response. `3808 <https://github.com/aio-libs/aiohttp/issues/3808>`_ - Fixed type annotation for add_view method of UrlDispatcher to accept any subclass of View `3880 <https://github.com/aio-libs/aiohttp/issues/3880>`_ - Fixed querying the address families from DNS that the current host supports. `5156 <https://github.com/aio-libs/aiohttp/issues/5156>`_ - Change return type of MultipartReader.__aiter__() and BodyPartReader.__aiter__() to AsyncIterator. `5163 <https://github.com/aio-libs/aiohttp/issues/5163>`_ - Provide x86 Windows wheels. `5230 <https://github.com/aio-libs/aiohttp/issues/5230>`_ Improved Documentation ---------------------- - Add documentation for ``aiohttp.web.FileResponse``. `3958 <https://github.com/aio-libs/aiohttp/issues/3958>`_ - Removed deprecation warning in tracing example docs `3964 <https://github.com/aio-libs/aiohttp/issues/3964>`_ - Fixed wrong "Usage" docstring of ``aiohttp.client.request``. `4603 <https://github.com/aio-libs/aiohttp/issues/4603>`_ - Add aiohttp-pydantic to third party libraries `5228 <https://github.com/aio-libs/aiohttp/issues/5228>`_ Misc ---- - `4102 <https://github.com/aio-libs/aiohttp/issues/4102>`_ ``` ### 3.7.2 ``` Bugfixes -------- - Fixed static files handling for loops without ``.sendfile()`` support `5149 <https://github.com/aio-libs/aiohttp/issues/5149>`_ ``` ### 3.7.1 ``` Bugfixes -------- - Fixed a type error caused by the conditional import of `Protocol`. `5111 <https://github.com/aio-libs/aiohttp/issues/5111>`_ - Server doesn't send Content-Length for 1xx or 204 `4901 <https://github.com/aio-libs/aiohttp/issues/4901>`_ - Fix run_app typing `4957 <https://github.com/aio-libs/aiohttp/issues/4957>`_ - Always require ``typing_extensions`` library. `5107 <https://github.com/aio-libs/aiohttp/issues/5107>`_ - Fix a variable-shadowing bug causing `ThreadedResolver.resolve` to return the resolved IP as the ``hostname`` in each record, which prevented validation of HTTPS connections. `5110 <https://github.com/aio-libs/aiohttp/issues/5110>`_ - Added annotations to all public attributes. `5115 <https://github.com/aio-libs/aiohttp/issues/5115>`_ - Fix flaky test_when_timeout_smaller_second `5116 <https://github.com/aio-libs/aiohttp/issues/5116>`_ - Ensure sending a zero byte file does not throw an exception `5124 <https://github.com/aio-libs/aiohttp/issues/5124>`_ - Fix a bug in ``web.run_app()`` about Python version checking on Windows `5127 <https://github.com/aio-libs/aiohttp/issues/5127>`_ ``` ### 3.7.0 ``` Features -------- - Response headers are now prepared prior to running ``on_response_prepare`` hooks, directly before headers are sent to the client. `1958 <https://github.com/aio-libs/aiohttp/issues/1958>`_ - Add a ``quote_cookie`` option to ``CookieJar``, a way to skip quotation wrapping of cookies containing special characters. `2571 <https://github.com/aio-libs/aiohttp/issues/2571>`_ - Call ``AccessLogger.log`` with the current exception available from ``sys.exc_info()``. `3557 <https://github.com/aio-libs/aiohttp/issues/3557>`_ - `web.UrlDispatcher.add_routes` and `web.Application.add_routes` return a list of registered `AbstractRoute` instances. `AbstractRouteDef.register` (and all subclasses) return a list of registered resources registered resource. `3866 <https://github.com/aio-libs/aiohttp/issues/3866>`_ - Added properties of default ClientSession params to ClientSession class so it is available for introspection `3882 <https://github.com/aio-libs/aiohttp/issues/3882>`_ - Don't cancel web handler on peer disconnection, raise `OSError` on reading/writing instead. `4080 <https://github.com/aio-libs/aiohttp/issues/4080>`_ - Implement BaseRequest.get_extra_info() to access a protocol transports' extra info. `4189 <https://github.com/aio-libs/aiohttp/issues/4189>`_ - Added `ClientSession.timeout` property. `4191 <https://github.com/aio-libs/aiohttp/issues/4191>`_ - allow use of SameSite in cookies. `4224 <https://github.com/aio-libs/aiohttp/issues/4224>`_ - Use ``loop.sendfile()`` instead of custom implementation if available. `4269 <https://github.com/aio-libs/aiohttp/issues/4269>`_ - Apply SO_REUSEADDR to test server's socket. `4393 <https://github.com/aio-libs/aiohttp/issues/4393>`_ - Use .raw_host instead of slower .host in client API `4402 <https://github.com/aio-libs/aiohttp/issues/4402>`_ - Allow configuring the buffer size of input stream by passing ``read_bufsize`` argument. `4453 <https://github.com/aio-libs/aiohttp/issues/4453>`_ - Pass tests on Python 3.8 for Windows. `4513 <https://github.com/aio-libs/aiohttp/issues/4513>`_ - Add `method` and `url` attributes to `TraceRequestChunkSentParams` and `TraceResponseChunkReceivedParams`. `4674 <https://github.com/aio-libs/aiohttp/issues/4674>`_ - Add ClientResponse.ok property for checking status code under 400. `4711 <https://github.com/aio-libs/aiohttp/issues/4711>`_ - Don't ceil timeouts that are smaller than 5 seconds. `4850 <https://github.com/aio-libs/aiohttp/issues/4850>`_ - TCPSite now listens by default on all interfaces instead of just IPv4 when `None` is passed in as the host. `4894 <https://github.com/aio-libs/aiohttp/issues/4894>`_ - Bump ``http_parser`` to 2.9.4 `5070 <https://github.com/aio-libs/aiohttp/issues/5070>`_ Bugfixes -------- - Fix keepalive connections not being closed in time `3296 <https://github.com/aio-libs/aiohttp/issues/3296>`_ - Fix failed websocket handshake leaving connection hanging. `3380 <https://github.com/aio-libs/aiohttp/issues/3380>`_ - Fix tasks cancellation order on exit. The run_app task needs to be cancelled first for cleanup hooks to run with all tasks intact. `3805 <https://github.com/aio-libs/aiohttp/issues/3805>`_ - Don't start heartbeat until _writer is set `4062 <https://github.com/aio-libs/aiohttp/issues/4062>`_ - Fix handling of multipart file uploads without a content type. `4089 <https://github.com/aio-libs/aiohttp/issues/4089>`_ - Preserve view handler function attributes across middlewares `4174 <https://github.com/aio-libs/aiohttp/issues/4174>`_ - Fix the string representation of ``ServerDisconnectedError``. `4175 <https://github.com/aio-libs/aiohttp/issues/4175>`_ - Raising RuntimeError when trying to get encoding from not read body `4214 <https://github.com/aio-libs/aiohttp/issues/4214>`_ - Remove warning messages from noop. `4282 <https://github.com/aio-libs/aiohttp/issues/4282>`_ - Raise ClientPayloadError if FormData re-processed. `4345 <https://github.com/aio-libs/aiohttp/issues/4345>`_ - Fix a warning about unfinished task in ``web_protocol.py`` `4408 <https://github.com/aio-libs/aiohttp/issues/4408>`_ - Fixed 'deflate' compression. According to RFC 2616 now. `4506 <https://github.com/aio-libs/aiohttp/issues/4506>`_ - Fixed OverflowError on platforms with 32-bit time_t `4515 <https://github.com/aio-libs/aiohttp/issues/4515>`_ - Fixed request.body_exists returns wrong value for methods without body. `4528 <https://github.com/aio-libs/aiohttp/issues/4528>`_ - Fix connecting to link-local IPv6 addresses. `4554 <https://github.com/aio-libs/aiohttp/issues/4554>`_ - Fix a problem with connection waiters that are never awaited. `4562 <https://github.com/aio-libs/aiohttp/issues/4562>`_ - Always make sure transport is not closing before reuse a connection. Reuse a protocol based on keepalive in headers is unreliable. For example, uWSGI will not support keepalive even it serves a HTTP 1.1 request, except explicitly configure uWSGI with a ``--http-keepalive`` option. Servers designed like uWSGI could cause aiohttp intermittently raise a ConnectionResetException when the protocol poll runs out and some protocol is reused. `4587 <https://github.com/aio-libs/aiohttp/issues/4587>`_ - Handle the last CRLF correctly even if it is received via separate TCP segment. `4630 <https://github.com/aio-libs/aiohttp/issues/4630>`_ - Fix the register_resource function to validate route name before splitting it so that route name can include python keywords. `4691 <https://github.com/aio-libs/aiohttp/issues/4691>`_ - Improve typing annotations for ``web.Request``, ``aiohttp.ClientResponse`` and ``multipart`` module. `4736 <https://github.com/aio-libs/aiohttp/issues/4736>`_ - Fix resolver task is not awaited when connector is cancelled `4795 <https://github.com/aio-libs/aiohttp/issues/4795>`_ - Fix a bug "Aiohttp doesn't return any error on invalid request methods" `4798 <https://github.com/aio-libs/aiohttp/issues/4798>`_ - Fix HEAD requests for static content. `4809 <https://github.com/aio-libs/aiohttp/issues/4809>`_ - Fix incorrect size calculation for memoryview `4890 <https://github.com/aio-libs/aiohttp/issues/4890>`_ - Add HTTPMove to _all__. `4897 <https://github.com/aio-libs/aiohttp/issues/4897>`_ - Fixed the type annotations in the ``tracing`` module. `4912 <https://github.com/aio-libs/aiohttp/issues/4912>`_ - Fix typing for multipart ``__aiter__``. `4931 <https://github.com/aio-libs/aiohttp/issues/4931>`_ - Fix for race condition on connections in BaseConnector that leads to exceeding the connection limit. `4936 <https://github.com/aio-libs/aiohttp/issues/4936>`_ - Add forced UTF-8 encoding for ``application/rdap+json`` responses. `4938 <https://github.com/aio-libs/aiohttp/issues/4938>`_ - Fix inconsistency between Python and C http request parsers in parsing pct-encoded URL. `4972 <https://github.com/aio-libs/aiohttp/issues/4972>`_ - Fix connection closing issue in HEAD request. `5012 <https://github.com/aio-libs/aiohttp/issues/5012>`_ - Fix type hint on BaseRunner.addresses (from ``List[str]`` to ``List[Any]``) `5086 <https://github.com/aio-libs/aiohttp/issues/5086>`_ - Make `web.run_app()` more responsive to Ctrl+C on Windows for Python < 3.8. It slightly increases CPU load as a side effect. `5098 <https://github.com/aio-libs/aiohttp/issues/5098>`_ Improved Documentation ---------------------- - Fix example code in client quick-start `3376 <https://github.com/aio-libs/aiohttp/issues/3376>`_ - Updated the docs so there is no contradiction in ``ttl_dns_cache`` default value `3512 <https://github.com/aio-libs/aiohttp/issues/3512>`_ - Add 'Deploy with SSL' to docs. `4201 <https://github.com/aio-libs/aiohttp/issues/4201>`_ - Change typing of the secure argument on StreamResponse.set_cookie from ``Optional[str]`` to ``Optional[bool]`` `4204 <https://github.com/aio-libs/aiohttp/issues/4204>`_ - Changes ``ttl_dns_cache`` type from int to Optional[int]. `4270 <https://github.com/aio-libs/aiohttp/issues/4270>`_ - Simplify README hello word example and add a documentation page for people coming from requests. `4272 <https://github.com/aio-libs/aiohttp/issues/4272>`_ - Improve some code examples in the documentation involving websockets and starting a simple HTTP site with an AppRunner. `4285 <https://github.com/aio-libs/aiohttp/issues/4285>`_ - Fix typo in code example in Multipart docs `4312 <https://github.com/aio-libs/aiohttp/issues/4312>`_ - Fix code example in Multipart section. `4314 <https://github.com/aio-libs/aiohttp/issues/4314>`_ - Update contributing guide so new contributors read the most recent version of that guide. Update command used to create test coverage reporting. `4810 <https://github.com/aio-libs/aiohttp/issues/4810>`_ - Spelling: Change "canonize" to "canonicalize". `4986 <https://github.com/aio-libs/aiohttp/issues/4986>`_ - Add ``aiohttp-sse-client`` library to third party usage list. `5084 <https://github.com/aio-libs/aiohttp/issues/5084>`_ Misc ---- - `2856 <https://github.com/aio-libs/aiohttp/issues/2856>`_, `#4218 <https://github.com/aio-libs/aiohttp/issues/4218>`_, `#4250 <https://github.com/aio-libs/aiohttp/issues/4250>`_ ```
Links - PyPI: https://pypi.org/project/aiohttp - Changelog: https://data.safetycli.com/changelogs/aiohttp/ - Repo: https://github.com/aio-libs/aiohttp
pyup-bot commented 5 months ago

Closing this in favor of #631