gdax-python-api icon indicating copy to clipboard operation
gdax-python-api copied to clipboard

Update aiohttp to 3.9.3

Open pyup-bot opened this issue 2 years ago • 0 comments

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

pyup-bot avatar Jan 30 '24 07:01 pyup-bot