Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Update aiohttp to 3.9.3 #47

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
pyup-bot wants to merge 1 commit into master from pyup-update-aiohttp-2.2.0-to-3.9.3

Conversation

@pyup-bot
Copy link
Collaborator

@pyup-bot pyup-bot commented Jan 30, 2024

This PR updates aiohttp from 2.2.0 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>`_

3.6.2

It contains several bufixes.
Changes
------------
Features
--------
- Made exceptions pickleable. Also changed the repr of some exceptions.
`4077 <https://github.com/aio-libs/aiohttp/issues/4077>`_
- Use ``Iterable`` type hint instead of ``Sequence`` for ``Application`` *middleware*
parameter. `4125 <https://github.com/aio-libs/aiohttp/issues/4125>`_
Bugfixes
--------
- Reset the ``sock_read`` timeout each time data is received for a
``aiohttp.ClientResponse``. `3808
<https://github.com/aio-libs/aiohttp/issues/3808>`_
- Fix handling of expired cookies so they are not stored in CookieJar.
`4063 <https://github.com/aio-libs/aiohttp/issues/4063>`_
- Fix misleading message in the string representation of ``ClientConnectorError``;
``self.ssl == None`` means default SSL context, not SSL disabled

Copy link
Collaborator Author

Closing this in favor of #48

@csko csko deleted the pyup-update-aiohttp-2.2.0-to-3.9.3 branch April 12, 2024 05:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

No reviews

Assignees

No one assigned

Labels

None yet

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

2 participants

AltStyle によって変換されたページ (->オリジナル) /