Changelog
### 1.6
```
================
- Switch to ``aiohttp.web.AppKey``, and deprecate the old 'static_root_url' key.
- Drop Python 3.7, add Python 3.12.
```
### 1.5.1
```
==================
- Add support for Python 3.11.
- Drop support for decorating non-async functions with template (deprecated since 0.16).
```
Links
- PyPI: https://pypi.org/project/aiohttp-jinja2
- Changelog: https://data.safetycli.com/changelogs/aiohttp-jinja2/
- Repo: https://github.com/aio-libs/aiohttp_jinja2/
Changelog
### 0.0.5
```
This fixes when oauth2 resource providers are more technically correct in validating the content-type they receive, specifically for form data.
```
Links
- PyPI: https://pypi.org/project/aiohttp-oauth2
- Changelog: https://data.safetycli.com/changelogs/aiohttp-oauth2/
- Repo: https://github.com/mrasband/aiohttp-oauth2
Changelog
### 3.9.5
```
==================
Bug fixes
---------
- Fixed "Unclosed client session" when initialization of
:py:class:`~aiohttp.ClientSession` fails -- by :user:`NewGlad`.
*Related issues and pull requests on GitHub:*
:issue:`8253`.
- Fixed regression (from :pr:`8280`) with adding ``Content-Disposition`` to the ``form-data``
part after appending to writer -- by :user:`Dreamsorcerer`/:user:`Olegt0rr`.
*Related issues and pull requests on GitHub:*
:issue:`8332`.
- Added default ``Content-Disposition`` in ``multipart/form-data`` responses to avoid broken
form-data responses -- by :user:`Dreamsorcerer`.
*Related issues and pull requests on GitHub:*
:issue:`8335`.
----
```
### 3.9.4
```
==================
Bug fixes
---------
- The asynchronous internals now set the underlying causes
when assigning exceptions to the future objects
-- by :user:`webknjaz`.
*Related issues and pull requests on GitHub:*
:issue:`8089`.
- Treated values of ``Accept-Encoding`` header as case-insensitive when checking
for gzip files -- by :user:`steverep`.
*Related issues and pull requests on GitHub:*
:issue:`8104`.
- Improved the DNS resolution performance on cache hit -- by :user:`bdraco`.
This is achieved by avoiding an :mod:`asyncio` task creation in this case.
*Related issues and pull requests on GitHub:*
:issue:`8163`.
- Changed the type annotations to allow ``dict`` on :meth:`aiohttp.MultipartWriter.append`,
:meth:`aiohttp.MultipartWriter.append_json` and
:meth:`aiohttp.MultipartWriter.append_form` -- by :user:`cakemanny`
*Related issues and pull requests on GitHub:*
:issue:`7741`.
- Ensure websocket transport is closed when client does not close it
-- by :user:`bdraco`.
The transport could remain open if the client did not close it. This
change ensures the transport is closed when the client does not close
it.
*Related issues and pull requests on GitHub:*
:issue:`8200`.
- Leave websocket transport open if receive times out or is cancelled
-- by :user:`bdraco`.
This restores the behavior prior to the change in 7978.
*Related issues and pull requests on GitHub:*
:issue:`8251`.
- Fixed content not being read when an upgrade request was not supported with the pure Python implementation.
-- by :user:`bdraco`.
*Related issues and pull requests on GitHub:*
:issue:`8252`.
- Fixed a race condition with incoming connections during server shutdown -- by :user:`Dreamsorcerer`.
*Related issues and pull requests on GitHub:*
:issue:`8271`.
- Fixed ``multipart/form-data`` compliance with :rfc:`7578` -- by :user:`Dreamsorcerer`.
*Related issues and pull requests on GitHub:*
:issue:`8280`.
- Fixed blocking I/O in the event loop while processing files in a POST request
-- by :user:`bdraco`.
*Related issues and pull requests on GitHub:*
:issue:`8283`.
- Escaped filenames in static view -- by :user:`bdraco`.
*Related issues and pull requests on GitHub:*
:issue:`8317`.
- Fixed the pure python parser to mark a connection as closing when a
response has no length -- by :user:`Dreamsorcerer`.
*Related issues and pull requests on GitHub:*
:issue:`8320`.
Features
--------
- Upgraded *llhttp* to 9.2.1, and started rejecting obsolete line folding
in Python parser to match -- by :user:`Dreamsorcerer`.
*Related issues and pull requests on GitHub:*
:issue:`8146`, :issue:`8292`.
Deprecations (removal in next major release)
--------------------------------------------
- Deprecated ``content_transfer_encoding`` parameter in :py:meth:`FormData.add_field()
<aiohttp.FormData.add_field>` -- by :user:`Dreamsorcerer`.
*Related issues and pull requests on GitHub:*
:issue:`8280`.
Improved documentation
----------------------
- Added a note about canceling tasks to avoid delaying server shutdown -- by :user:`Dreamsorcerer`.
*Related issues and pull requests on GitHub:*
:issue:`8267`.
Contributor-facing changes
--------------------------
- The pull request template is now asking the contributors to
answer a question about the long-term maintenance challenges
they envision as a result of merging their patches
-- by :user:`webknjaz`.
*Related issues and pull requests on GitHub:*
:issue:`8099`.
- Updated CI and documentation to use NPM clean install and upgrade
node to version 18 -- by :user:`steverep`.
*Related issues and pull requests on GitHub:*
:issue:`8116`.
- A pytest fixture ``hello_txt`` was introduced to aid
static file serving tests in
:file:`test_web_sendfile_functional.py`. It dynamically
provisions ``hello.txt`` file variants shared across the
tests in the module.
-- by :user:`steverep`
*Related issues and pull requests on GitHub:*
:issue:`8136`.
Packaging updates and notes for downstreams
-------------------------------------------
- Added an ``internal`` pytest marker for tests which should be skipped
by packagers (use ``-m 'not internal'`` to disable them) -- by :user:`Dreamsorcerer`.
*Related issues and pull requests on GitHub:*
:issue:`8299`.
----
```
### 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:*
:issue:`8097`, :issue:`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:*
:issue:`3957`.
----
```
### 3.9.2
```
==================
Bug fixes
---------
- Fixed server-side websocket connection leak.
*Related issues and pull requests on GitHub:*
:issue:`7978`.
- Fixed ``web.FileResponse`` doing blocking I/O in the event loop.
*Related issues and pull requests on GitHub:*
:issue:`8012`.
- Fixed double compress when compression enabled and compressed file exists in server file responses.
*Related issues and pull requests on GitHub:*
:issue:`8014`.
- Added runtime type check for ``ClientSession`` ``timeout`` parameter.
*Related issues and pull requests on GitHub:*
:issue:`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:*
:issue:`8074`.
- Improved validation of paths for static resources requests to the server -- by :user:`bdraco`.
*Related issues and pull requests on GitHub:*
:issue:`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:*
:issue:`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:*
:issue:`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:*
:issue:`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:*
:issue:`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:*
:issue:`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:*
:issue:`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:*
:issue:`8066`.
Miscellaneous internal changes
------------------------------
- Replaced all ``tmpdir`` fixtures with ``tmp_path`` in test suite.
*Related issues and pull requests on GitHub:*
:issue:`3551`.
----
```
### 3.9.1
```
==================
Bugfixes
--------
- Fixed importing aiohttp under PyPy on Windows.
`7848 <https://github.com/aio-libs/aiohttp/issues/7848>`_
- Fixed async concurrency safety in websocket compressor.
`7865 <https://github.com/aio-libs/aiohttp/issues/7865>`_
- Fixed ``ClientResponse.close()`` releasing the connection instead of closing.
`7869 <https://github.com/aio-libs/aiohttp/issues/7869>`_
- Fixed a regression where connection may get closed during upgrade. -- by :user:`Dreamsorcerer`
`7879 <https://github.com/aio-libs/aiohttp/issues/7879>`_
- Fixed messages being reported as upgraded without an Upgrade header in Python parser. -- by :user:`Dreamsorcerer`
`7895 <https://github.com/aio-libs/aiohttp/issues/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 <https://github.com/aio-libs/aiohttp/issues/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 <https://github.com/aio-libs/aiohttp/issues/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 <https://github.com/aio-libs/aiohttp/issues/7056>`_
- Added support for setting response header parameters ``max_line_size`` and ``max_field_size``.
`2304 <https://github.com/aio-libs/aiohttp/issues/2304>`_
- Added ``auto_decompress`` parameter to ``ClientSession.request`` to override ``ClientSession._auto_decompress``. -- by :user:`Daste745`
`3751 <https://github.com/aio-libs/aiohttp/issues/3751>`_
- Changed ``raise_for_status`` to allow a coroutine.
`3892 <https://github.com/aio-libs/aiohttp/issues/3892>`_
- Added client brotli compression support (optional with runtime check).
`5219 <https://github.com/aio-libs/aiohttp/issues/5219>`_
- Added ``client_max_size`` to ``BaseRequest.clone()`` to allow overriding the request body size. -- :user:`anesabml`.
`5704 <https://github.com/aio-libs/aiohttp/issues/5704>`_
- Added a middleware type alias ``aiohttp.typedefs.Middleware``.
`5898 <https://github.com/aio-libs/aiohttp/issues/5898>`_
- Exported ``HTTPMove`` which can be used to catch any redirection request
that has a location -- :user:`dreamsorcerer`.
`6594 <https://github.com/aio-libs/aiohttp/issues/6594>`_
- Changed the ``path`` parameter in ``web.run_app()`` to accept a ``pathlib.Path`` object.
`6839 <https://github.com/aio-libs/aiohttp/issues/6839>`_
- Performance: Skipped filtering ``CookieJar`` when the jar is empty or all cookies have expired.
`7819 <https://github.com/aio-libs/aiohttp/issues/7819>`_
- Performance: Only check origin if insecure scheme and there are origins to treat as secure, in ``CookieJar.filter_cookies()``.
`7821 <https://github.com/aio-libs/aiohttp/issues/7821>`_
- Performance: Used timestamp instead of ``datetime`` to achieve faster cookie expiration in ``CookieJar``.
`7824 <https://github.com/aio-libs/aiohttp/issues/7824>`_
- Added support for passing a custom server name parameter to HTTPS connection.
`7114 <https://github.com/aio-libs/aiohttp/issues/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 <https://github.com/aio-libs/aiohttp/issues/7131>`_
- Turned access log into no-op when the logger is disabled.
`7240 <https://github.com/aio-libs/aiohttp/issues/7240>`_
- Added typing information to ``RawResponseMessage``. -- by :user:`Gobot1234`
`7365 <https://github.com/aio-libs/aiohttp/issues/7365>`_
- Removed ``async-timeout`` for Python 3.11+ (replaced with ``asyncio.timeout()`` on newer releases).
`7502 <https://github.com/aio-libs/aiohttp/issues/7502>`_
- Added support for ``brotlicffi`` as an alternative to ``brotli`` (fixing Brotli support on PyPy).
`7611 <https://github.com/aio-libs/aiohttp/issues/7611>`_
- Added ``WebSocketResponse.get_extra_info()`` to access a protocol transport's extra info.
`7078 <https://github.com/aio-libs/aiohttp/issues/7078>`_
- Allow ``link`` argument to be set to None/empty in HTTP 451 exception.
`7689 <https://github.com/aio-libs/aiohttp/issues/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 <https://github.com/aio-libs/aiohttp/issues/3636>`_
- Fixed client timeout not working when incoming data is always available without waiting. -- by :user:`Dreamsorcerer`.
`5854 <https://github.com/aio-libs/aiohttp/issues/5854>`_
- Fixed ``readuntil`` to work with a delimiter of more than one character.
`6701 <https://github.com/aio-libs/aiohttp/issues/6701>`_
- Added ``__repr__`` to ``EmptyStreamReader`` to avoid ``AttributeError``.
`6916 <https://github.com/aio-libs/aiohttp/issues/6916>`_
- Fixed bug when using ``TCPConnector`` with ``ttl_dns_cache=0``.
`7014 <https://github.com/aio-libs/aiohttp/issues/7014>`_
- Fixed response returned from expect handler being thrown away. -- by :user:`Dreamsorcerer`
`7025 <https://github.com/aio-libs/aiohttp/issues/7025>`_
- Avoided raising ``UnicodeDecodeError`` in multipart and in HTTP headers parsing.
`7044 <https://github.com/aio-libs/aiohttp/issues/7044>`_
- Changed ``sock_read`` timeout to start after writing has finished, avoiding read timeouts caused by an unfinished write. -- by :user:`dtrifiro`
`7149 <https://github.com/aio-libs/aiohttp/issues/7149>`_
- Fixed missing query in tracing method URLs when using ``yarl`` 1.9+.
`7259 <https://github.com/aio-libs/aiohttp/issues/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 <https://github.com/aio-libs/aiohttp/issues/7302>`_
- Fixed ``EmptyStreamReader.iter_chunks()`` never ending. -- by :user:`mind1m`
`7616 <https://github.com/aio-libs/aiohttp/issues/7616>`_
- Fixed a rare ``RuntimeError: await wasn't used with future`` exception. -- by :user:`stalkerg`
`7785 <https://github.com/aio-libs/aiohttp/issues/7785>`_
- Fixed issue with insufficient HTTP method and version validation.
`7700 <https://github.com/aio-libs/aiohttp/issues/7700>`_
- Added check to validate that absolute URIs have schemes.
`7712 <https://github.com/aio-libs/aiohttp/issues/7712>`_
- Fixed unhandled exception when Python HTTP parser encounters unpaired Unicode surrogates.
`7715 <https://github.com/aio-libs/aiohttp/issues/7715>`_
- Updated parser to disallow invalid characters in header field names and stop accepting LF as a request line separator.
`7719 <https://github.com/aio-libs/aiohttp/issues/7719>`_
- Fixed Python HTTP parser not treating 204/304/1xx as an empty body.
`7755 <https://github.com/aio-libs/aiohttp/issues/7755>`_
- Ensure empty body response for 1xx/204/304 per RFC 9112 sec 6.3.
`7756 <https://github.com/aio-libs/aiohttp/issues/7756>`_
- Fixed an issue when a client request is closed before completing a chunked payload. -- by :user:`Dreamsorcerer`
`7764 <https://github.com/aio-libs/aiohttp/issues/7764>`_
- Edge Case Handling for ResponseParser for missing reason value.
`7776 <https://github.com/aio-libs/aiohttp/issues/7776>`_
- Fixed ``ClientWebSocketResponse.close_code`` being erroneously set to ``None`` when there are concurrent async tasks receiving data and closing the connection.
`7306 <https://github.com/aio-libs/aiohttp/issues/7306>`_
- Added HTTP method validation.
`6533 <https://github.com/aio-libs/aiohttp/issues/6533>`_
- Fixed arbitrary sequence types being allowed to inject values via version parameter. -- by :user:`Dreamsorcerer`
`7835 <https://github.com/aio-libs/aiohttp/issues/7835>`_
- Performance: Fixed increase in latency with small messages from websocket compression changes.
`7797 <https://github.com/aio-libs/aiohttp/issues/7797>`_
Improved Documentation
----------------------
- Fixed the `ClientResponse.release`'s type in the doc. Changed from `comethod` to `method`.
`5836 <https://github.com/aio-libs/aiohttp/issues/5836>`_
- Added information on behavior of base_url parameter in `ClientSession`.
`6647 <https://github.com/aio-libs/aiohttp/issues/6647>`_
- Fixed `ClientResponseError` docs.
`6700 <https://github.com/aio-libs/aiohttp/issues/6700>`_
- Updated Redis code examples to follow the latest API.
`6907 <https://github.com/aio-libs/aiohttp/issues/6907>`_
- Added a note about possibly needing to update headers when using ``on_response_prepare``. -- by :user:`Dreamsorcerer`
`7283 <https://github.com/aio-libs/aiohttp/issues/7283>`_
- Completed ``trust_env`` parameter description to honor ``wss_proxy``, ``ws_proxy`` or ``no_proxy`` env.
`7325 <https://github.com/aio-libs/aiohttp/issues/7325>`_
- Expanded SSL documentation with more examples (e.g. how to use certifi). -- by :user:`Dreamsorcerer`
`7334 <https://github.com/aio-libs/aiohttp/issues/7334>`_
- Fix, update, and improve client exceptions documentation.
`7733 <https://github.com/aio-libs/aiohttp/issues/7733>`_
Deprecations and Removals
-------------------------
- Added ``shutdown_timeout`` parameter to ``BaseRunner``, while
deprecating ``shutdown_timeout`` parameter from ``BaseSite``. -- by :user:`Dreamsorcerer`
`7718 <https://github.com/aio-libs/aiohttp/issues/7718>`_
- Dropped Python 3.6 support.
`6378 <https://github.com/aio-libs/aiohttp/issues/6378>`_
- Dropped Python 3.7 support. -- by :user:`Dreamsorcerer`
`7336 <https://github.com/aio-libs/aiohttp/issues/7336>`_
- Removed support for abandoned ``tokio`` event loop. -- by :user:`Dreamsorcerer`
`7281 <https://github.com/aio-libs/aiohttp/issues/7281>`_
Misc
----
- Made ``print`` argument in ``run_app()`` optional.
`3690 <https://github.com/aio-libs/aiohttp/issues/3690>`_
- Improved performance of ``ceil_timeout`` in some cases.
`6316 <https://github.com/aio-libs/aiohttp/issues/6316>`_
- Changed importing Gunicorn to happen on-demand, decreasing import time by ~53%. -- :user:`Dreamsorcerer`
`6591 <https://github.com/aio-libs/aiohttp/issues/6591>`_
- Improved import time by replacing ``http.server`` with ``http.HTTPStatus``.
`6903 <https://github.com/aio-libs/aiohttp/issues/6903>`_
- Fixed annotation of ``ssl`` parameter to disallow ``True``. -- by :user:`Dreamsorcerer`.
`7335 <https://github.com/aio-libs/aiohttp/issues/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 <https://github.com/aio-libs/aiohttp/issues/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 <https://github.com/aio-libs/aiohttp/issues/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 <https://github.com/aio-libs/aiohttp/issues/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 <https://github.com/aio-libs/aiohttp/issues/7490>`_
Bugfixes
--------
- Fixed ``PermissionError`` when ``.netrc`` is unreadable due to permissions.
`7237 <https://github.com/aio-libs/aiohttp/issues/7237>`_
- Fixed output of parsing errors pointing to a ``\n``. -- by :user:`Dreamsorcerer`
`7468 <https://github.com/aio-libs/aiohttp/issues/7468>`_
- Fixed ``GunicornWebWorker`` max_requests_jitter not working.
`7518 <https://github.com/aio-libs/aiohttp/issues/7518>`_
- Fixed sorting in ``filter_cookies`` to use cookie with longest path. -- by :user:`marq24`.
`7577 <https://github.com/aio-libs/aiohttp/issues/7577>`_
- Fixed display of ``BadStatusLine`` messages from llhttp_. -- by :user:`Dreamsorcerer`
`7651 <https://github.com/aio-libs/aiohttp/issues/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 <https://github.com/aio-libs/aiohttp/issues/7346>`_
Features
--------
- Added information to C parser exceptions to show which character caused the error. -- by :user:`Dreamsorcerer`
`7366 <https://github.com/aio-libs/aiohttp/issues/7366>`_
Bugfixes
--------
- Fixed a transport is :data:`None` error -- by :user:`Dreamsorcerer`.
`3355 <https://github.com/aio-libs/aiohttp/issues/3355>`_
----
```
### 3.8.4
```
==================
Bugfixes
--------
- Fixed incorrectly overwriting cookies with the same name and domain, but different path.
`6638 <https://github.com/aio-libs/aiohttp/issues/6638>`_
- Fixed ``ConnectionResetError`` not being raised after client disconnection in SSL environments.
`7180 <https://github.com/aio-libs/aiohttp/issues/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 <https://github.com/aio-libs/aiohttp/issues/6950>`_
----
```
### 3.8.2
```
=====================================================
Bugfixes
--------
- Support registering OPTIONS HTTP method handlers via RouteTableDef.
`4663 <https://github.com/aio-libs/aiohttp/issues/4663>`_
- Started supporting ``authority-form`` and ``absolute-form`` URLs on the server-side.
`6227 <https://github.com/aio-libs/aiohttp/issues/6227>`_
- Fix Python 3.11 alpha incompatibilities by using Cython 0.29.25
`6396 <https://github.com/aio-libs/aiohttp/issues/6396>`_
- Remove a deprecated usage of pytest.warns(None)
`6663 <https://github.com/aio-libs/aiohttp/issues/6663>`_
- Fix regression where ``asyncio.CancelledError`` occurs on client disconnection.
`6719 <https://github.com/aio-libs/aiohttp/issues/6719>`_
- Export :py:class:`~aiohttp.web.PrefixedSubAppResource` under
:py:mod:`aiohttp.web` -- by :user:`Dreamsorcerer`.
This fixes a regression introduced by :pr:`3469`.
`6889 <https://github.com/aio-libs/aiohttp/issues/6889>`_
- Dropped the :class:`object` type possibility from
the :py:attr:`aiohttp.ClientSession.timeout`
property return type declaration.
`6917 <https://github.com/aio-libs/aiohttp/issues/6917>`_,
`6923 <https://github.com/aio-libs/aiohttp/issues/6923>`_
Improved Documentation
----------------------
- Added clarification on configuring the app object with settings such as a db connection.
`4137 <https://github.com/aio-libs/aiohttp/issues/4137>`_
- Edited the web.run_app declaration.
`6401 <https://github.com/aio-libs/aiohttp/issues/6401>`_
- Dropped the :class:`object` type possibility from
the :py:attr:`aiohttp.ClientSession.timeout`
property return type declaration.
`6917 <https://github.com/aio-libs/aiohttp/issues/6917>`_,
`6923 <https://github.com/aio-libs/aiohttp/issues/6923>`_
Deprecations and Removals
-------------------------
- Drop Python 3.5 support, aiohttp works on 3.6+ now.
`4046 <https://github.com/aio-libs/aiohttp/issues/4046>`_
Misc
----
- `6369 <https://github.com/aio-libs/aiohttp/issues/6369>`_, `#6399 <https://github.com/aio-libs/aiohttp/issues/6399>`_, `#6550 <https://github.com/aio-libs/aiohttp/issues/6550>`_, `#6708 <https://github.com/aio-libs/aiohttp/issues/6708>`_, `#6757 <https://github.com/aio-libs/aiohttp/issues/6757>`_, `#6857 <https://github.com/aio-libs/aiohttp/issues/6857>`_, `#6872 <https://github.com/aio-libs/aiohttp/issues/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 an index out of range error in aiohttp. For example, if user compile CPython with
`--disable-ipv6` option, but his system enable the ipv6.
`5901 <https://github.com/aio-libs/aiohttp/issues/5901>`_
- Do not install "examples" as a top-level package.
`6189 <https://github.com/aio-libs/aiohttp/issues/6189>`_
- Restored ability to connect IPv6-only host.
`6195 <https://github.com/aio-libs/aiohttp/issues/6195>`_
- Remove ``Signal`` from ``__all__``, replace ``aiohttp.Signal`` with ``aiosignal.Signal`` in docs
`6201 <https://github.com/aio-libs/aiohttp/issues/6201>`_
- Made chunked encoding HTTP header check stricter.
`6305 <https://github.com/aio-libs/aiohttp/issues/6305>`_
Improved Documentation
----------------------
- update quick starter demo codes.
`6240 <https://github.com/aio-libs/aiohttp/issues/6240>`_
- Added an explanation of how tiny timeouts affect performance to the client reference document.
`6274 <https://github.com/aio-libs/aiohttp/issues/6274>`_
- Add flake8-docstrings to flake8 configuration, enable subset of checks.
`6276 <https://github.com/aio-libs/aiohttp/issues/6276>`_
- Added information on running complex applications with additional tasks/processes -- :user:`Dreamsorcerer`.
`6278 <https://github.com/aio-libs/aiohttp/issues/6278>`_
Misc
----
- `6205 <https://github.com/aio-libs/aiohttp/issues/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 <https://github.com/aio-libs/aiohttp/issues/2988>`_
- Switch from ``http-parser`` to ``llhttp``
`3561 <https://github.com/aio-libs/aiohttp/issues/3561>`_
- Use Brotli instead of brotlipy
`3803 <https://github.com/aio-libs/aiohttp/issues/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 <https://github.com/aio-libs/aiohttp/issues/3828>`_
- Make access log use local time with timezone
`3853 <https://github.com/aio-libs/aiohttp/issues/3853>`_
- Implemented ``readuntil`` in ``StreamResponse``
`4054 <https://github.com/aio-libs/aiohttp/issues/4054>`_
- FileResponse now supports ETag.
`4594 <https://github.com/aio-libs/aiohttp/issues/4594>`_
- Add a request handler type alias ``aiohttp.typedefs.Handler``.
`4686 <https://github.com/aio-libs/aiohttp/issues/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 <https://github.com/aio-libs/aiohttp/issues/4700>`_
- Add validation of HTTP header keys and values to prevent header injection.
`4818 <https://github.com/aio-libs/aiohttp/issues/4818>`_
- Add predicate to ``AbstractCookieJar.clear``.
Add ``AbstractCookieJar.clear_domain`` to clean all domain and subdomains cookies only.
`4942 <https://github.com/aio-libs/aiohttp/issues/4942>`_
- Add keepalive_timeout parameter to web.run_app.
`5094 <https://github.com/aio-libs/aiohttp/issues/5094>`_
- Tracing for client sent headers
`5105 <https://github.com/aio-libs/aiohttp/issues/5105>`_
- Make type hints for http parser stricter
`5267 <https://github.com/aio-libs/aiohttp/issues/5267>`_
- Add final declarations for constants.
`5275 <https://github.com/aio-libs/aiohttp/issues/5275>`_
- Switch to external frozenlist and aiosignal libraries.
`5293 <https://github.com/aio-libs/aiohttp/issues/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 <https://github.com/aio-libs/aiohttp/issues/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 <https://github.com/aio-libs/aiohttp/issues/5572>`_
- Add ``aiohttp.pytest_plugin.AiohttpClient`` for static typing of pytest plugin.
`5585 <https://github.com/aio-libs/aiohttp/issues/5585>`_
- Added a ``socket_factory`` argument to ``BaseTestServer``.
`5844 <https://github.com/aio-libs/aiohttp/issues/5844>`_
- Add compression strategy parameter to enable_compression method.
`5909 <https://github.com/aio-libs/aiohttp/issues/5909>`_
- Added support for Python 3.10 to Github Actions CI/CD workflows and fix the related deprecation warnings -- :user:`Hanaasagi`.
`5927 <https://github.com/aio-libs/aiohttp/issues/5927>`_
- Switched ``chardet`` to ``charset-normalizer`` for guessing the HTTP payload body encoding -- :user:`Ousret`.
`5930 <https://github.com/aio-libs/aiohttp/issues/5930>`_
- Added optional auto_decompress argument for HttpRequestParser
`5957 <https://github.com/aio-libs/aiohttp/issues/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 <https://github.com/aio-libs/aiohttp/issues/5992>`_
- Added ``base_url`` parameter to the initializer of :class:`~aiohttp.ClientSession`.
`6013 <https://github.com/aio-libs/aiohttp/issues/6013>`_
- Add Trove classifier and create binary wheels for 3.10. -- :user:`hugovk`.
`6079 <https://github.com/aio-libs/aiohttp/issues/6079>`_
- Started shipping platform-specific wheels with the ``musl`` tag targeting typical Alpine Linux runtimes — :user:`asvetlov`.
`6139 <https://github.com/aio-libs/aiohttp/issues/6139>`_
- Started shipping platform-specific arm64 wheels for Apple Silicon — :user:`asvetlov`.
`6139 <https://github.com/aio-libs/aiohttp/issues/6139>`_
Bugfixes
--------
- Modify _drain_helper() to handle concurrent `await resp.write(...)` or `ws.send_json(...)` calls without race-condition.
`2934 <https://github.com/aio-libs/aiohttp/issues/2934>`_
- Started using `MultiLoopChildWatcher` when it's available under POSIX while setting up the test I/O loop.
`3450 <https://github.com/aio-libs/aiohttp/issues/3450>`_
- Only encode content-disposition filename parameter using percent-encoding.
Other parameters are encoded to quoted-string or RFC2231 extended parameter
value.
`4012 <https://github.com/aio-libs/aiohttp/issues/4012>`_
- Fixed HTTP client requests to honor ``no_proxy`` environment variables.
`4431 <https://github.com/aio-libs/aiohttp/issues/4431>`_
- Fix supporting WebSockets proxies configured via environment variables.
`4648 <https://github.com/aio-libs/aiohttp/issues/4648>`_
- Change return type on URLDispatcher to UrlMappingMatchInfo to improve type annotations.
`4748 <https://github.com/aio-libs/aiohttp/issues/4748>`_
- Ensure a cleanup context is cleaned up even when an exception occurs during startup.
`4799 <https://github.com/aio-libs/aiohttp/issues/4799>`_
- Added a new exception type for Unix socket client errors which provides a more useful error message.
`4984 <https://github.com/aio-libs/aiohttp/issues/4984>`_
- Remove Transfer-Encoding and Content-Type headers for 204 in StreamResponse
`5106 <https://github.com/aio-libs/aiohttp/issues/5106>`_
- Only depend on typing_extensions for Python <3.8
`5107 <https://github.com/aio-libs/aiohttp/issues/5107>`_
- Add ABNORMAL_CLOSURE and BAD_GATEWAY to WSCloseCode
`5192 <https://github.com/aio-libs/aiohttp/issues/5192>`_
- Fix cookies disappearing from HTTPExceptions.
`5233 <https://github.com/aio-libs/aiohttp/issues/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 <https://github.com/aio-libs/aiohttp/issues/5250>`_
- Acquire the connection before running traces to prevent race condition.
`5259 <https://github.com/aio-libs/aiohttp/issues/5259>`_
- Add missing slots to _RequestContextManager`` and ``_WSRequestContextManager``
`5329 <https://github.com/aio-libs/aiohttp/issues/5329>`_
- Ensure sending a zero byte file does not throw an exception (round 2)
`5380 <https://github.com/aio-libs/aiohttp/issues/5380>`_
- Set "text/plain" when data is an empty string in client requests.
`5392 <https://github.com/aio-libs/aiohttp/issues/5392>`_
- Stop automatically releasing the ``ClientResponse`` object on calls to the ``ok`` property for the failed requests.
`5403 <https://github.com/aio-libs/aiohttp/issues/5403>`_
- Include query parameters from `params` keyword argument in tracing `URL`.
`5432 <https://github.com/aio-libs/aiohttp/issues/5432>`_
- Fix annotations
`5466 <https://github.com/aio-libs/aiohttp/issues/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 <https://github.com/aio-libs/aiohttp/issues/5494>`_
- Fix 0 being incorrectly treated as an immediate timeout.
`5527 <https://github.com/aio-libs/aiohttp/issues/5527>`_
- Fixes failing tests when an environment variable <scheme>_proxy is set.
`5554 <https://github.com/aio-libs/aiohttp/issues/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 <https://github.com/aio-libs/aiohttp/issues/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 <https://github.com/aio-libs/aiohttp/issues/5657>`_
- Remove incorrect default from docs
`5727 <https://github.com/aio-libs/aiohttp/issues/5727>`_
- Remove external test dependency to http://httpbin.org
`5840 <https://github.com/aio-libs/aiohttp/issues/5840>`_
- Don't cancel current task when entering a cancelled timer.
`5853 <https://github.com/aio-libs/aiohttp/issues/5853>`_
- Added ``params`` keyword argument to ``ClientSession.ws_connect``. -- :user:`hoh`.
`5868 <https://github.com/aio-libs/aiohttp/issues/5868>`_
- Uses :py:class:`~asyncio.ThreadedChildWatcher` under POSIX to allow setting up test loop in non-main thread.
`5877 <https://github.com/aio-libs/aiohttp/issues/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 <https://github.com/aio-libs/aiohttp/issues/5901>`_
- Removed the deprecated ``loop`` argument from the ``asyncio.sleep``/``gather`` calls
`5905 <https://github.com/aio-libs/aiohttp/issues/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 <https://github.com/aio-libs/aiohttp/issues/5925>`_
- Fix resetting `SIGCHLD` signals in Gunicorn aiohttp Worker to fix `subprocesses` that capture output having an incorrect `returncode`.
`6130 <https://github.com/aio-libs/aiohttp/issues/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 <https://github.com/aio-libs/aiohttp/issues/6182>`_
Improved Documentation
----------------------
- Refactored OpenAPI/Swagger aiohttp addons, added ``aio-openapi``
`5326 <https://github.com/aio-libs/aiohttp/issues/5326>`_
- Fixed docs on request cookies type, so it matches what is actually used in the code (a
read-only dictionary-like object).
`5725 <https://github.com/aio-libs/aiohttp/issues/5725>`_
- Documented that the HTTP client ``Authorization`` header is removed
on redirects to a different host or protocol.
`5850 <https://github.com/aio-libs/aiohttp/issues/5850>`_
Misc
----
- `3927 <https://github.com/aio-libs/aiohttp/issues/3927>`_, `#4247 <https://github.com/aio-libs/aiohttp/issues/4247>`_, `#4247 <https://github.com/aio-libs/aiohttp/issues/4247>`_, `#5389 <https://github.com/aio-libs/aiohttp/issues/5389>`_, `#5457 <https://github.com/aio-libs/aiohttp/issues/5457>`_, `#5486 <https://github.com/aio-libs/aiohttp/issues/5486>`_, `#5494 <https://github.com/aio-libs/aiohttp/issues/5494>`_, `#5515 <https://github.com/aio-libs/aiohttp/issues/5515>`_, `#5625 <https://github.com/aio-libs/aiohttp/issues/5625>`_, `#5635 <https://github.com/aio-libs/aiohttp/issues/5635>`_, `#5648 <https://github.com/aio-libs/aiohttp/issues/5648>`_, `#5657 <https://github.com/aio-libs/aiohttp/issues/5657>`_, `#5890 <https://github.com/aio-libs/aiohttp/issues/5890>`_, `#5914 <https://github.com/aio-libs/aiohttp/issues/5914>`_, `#5932 <https://github.com/aio-libs/aiohttp/issues/5932>`_, `#6002 <https://github.com/aio-libs/aiohttp/issues/6002>`_, `#6045 <https://github.com/aio-libs/aiohttp/issues/6045>`_, `#6131 <https://github.com/aio-libs/aiohttp/issues/6131>`_, `#6156 <https://github.com/aio-libs/aiohttp/issues/6156>`_, `#6165 <https://github.com/aio-libs/aiohttp/issues/6165>`_, `#6166 <https://github.com/aio-libs/aiohttp/issues/6166>`_
----
```
Links
- PyPI: https://pypi.org/project/aiohttp
- Changelog: https://data.safetycli.com/changelogs/aiohttp/
- Repo: https://github.com/aio-libs/aiohttp
Changelog
### 2.0.1
```
Features
- Added Python 3.10 to CI & Updated the Docs
(see 1160)
- Enable mypy in CI (see 1101)
- Synchronized reading the responses from a connection
(see 1106)
Fixes
- Remove __del__ from Redis (Fixes 1115)
(see 1227)
- fix socket.error raises (see 1129)
- Fix buffer is closed error when using PythonParser class
(see 1213)
```
### 2.0.0
```
Features
- Port redis-py's client implementation to aioredis.
(see 891)
- Make hiredis an optional dependency.
(see 917)
```
Links
- PyPI: https://pypi.org/project/aioredis
- Changelog: https://data.safetycli.com/changelogs/aioredis/
- Repo: https://github.com/aio-libs/aioredis-py
Changelog
### 3.9.1
```
* Removed a leftover check for pytz ``localize()`` and ``normalize()`` methods
```
### 3.9.0
```
- Added support for PySide6 to the Qt scheduler
- No longer enforce pytz time zones (support for others is experimental in the 3.x series)
- Fixed compatibility with PyMongo 4
- Fixed pytz deprecation warnings
- Fixed RuntimeError when shutting down the scheduler from a scheduled job
```
### 3.8.1
```
- Allowed the use of tzlocal v4.0+ in addition to v2.*
```
### 3.8.0
```
- Allowed passing through keyword arguments to the underlying stdlib executors in the
thread/process pool executors (PR by Albert Xu)
```
Links
- PyPI: https://pypi.org/project/apscheduler
- Changelog: https://data.safetycli.com/changelogs/apscheduler/
- Repo: https://github.com/agronholm/apscheduler
- Docs: https://pythonhosted.org/APScheduler/
Changelog
### 3.21.3
```
*******************
Bug fixes:
- Fix memory leak that prevented schema instances from getting GC'd (:pr:`2277`).
Thanks :user:`mrcljx` for the PR.
```
### 3.21.2
```
*******************
Bug fixes:
- Allow timestamp 0 in ``fields.DateTime`` (:issue:`2133`).
Thanks :user:`flydzen` for reporting.
```
### 3.21.1
```
*******************
Bug fixes:
- Fix error message when field is declared as a class and not an instance (:issue:`2245`).
Thanks :user:`travnick` for reporting.
```
### 3.21.0
```
*******************
Bug fixes:
- Fix validation of ``URL`` fields to allow missing user field,
per NWG RFC 3986 (:issue:`2232`). Thanks :user:`ddennerline3` for reporting
and :user:`deckar01` for the PR.
Other changes:
- *Backwards-incompatible*: ``__version__``, ``__parsed_version__``, and ``__version_info__``
attributes are deprecated (:issue:`2227`). Use feature detection or
``importlib.metadata.version("marshmallow")`` instead.
```
### 3.20.2
```
*******************
Bug fixes:
- Fix ``Nested`` field type hint for lambda ``Schema`` types (:pr:`2164`).
Thanks :user:`somethingnew2-0` for the PR.
Other changes:
- Officially support Python 3.12 (:pr:`2188`).
Thanks :user:`hugovk` for the PR.
```
### 3.20.1
```
*******************
Bug fixes:
- Fix call to ``get_declared_fields``: pass ``dict_cls`` again (:issue:`2152`).
Thanks :user:`Cheaterman` for reporting.
```
### 3.20.0
```
*******************
Features:
- Add ``absolute`` parameter to ``URL`` validator and ``Url`` field (:pr:`2123`).
Thanks :user:`sirosen` for the PR.
- Use Abstract Base Classes to define ``FieldABC`` and ``SchemaABC``
(:issue:`1449`). Thanks :user:`aditkumar72` for the PR.
- Use `OrderedSet` as default `set_class`. Schemas are now ordered by default.
(:issue:`1744`)
Bug fixes:
- Handle ``OSError`` and ``OverflowError`` in ``utils.from_timestamp`` (:pr:`2102`).
Thanks :user:`TheBigRoomXXL` for the PR.
- Fix the default inheritance of nested partial schemas (:issue:`2149`).
Thanks :user:`matejsp` for reporting.
Other changes:
- Officially support Python 3.11 (:pr:`2067`).
- Drop support for Python 3.7 (:pr:`2135`).
```
### 3.19.0
```
*******************
Features:
- Add ``timestamp`` and ``timestamp_ms`` formats to ``fields.DateTime``
(:issue:`612`).
Thanks :user:`vgavro` for the suggestion and thanks :user:`vanHoi` for
the PR.
```
### 3.18.0
```
*******************
Features:
- Add ``Enum`` field (:pr:`2017`) and (:pr:`2044`).
Bug fixes:
- Fix typing in ``Field._serialize`` signature (:pr:`2046`).
```
### 3.17.1
```
*******************
Bug fixes:
- Add return type to ``fields.Email.__init__`` (:pr:`2018`).
Thanks :user:`kkirsche` for the PR.
- Add missing type hint to IPInterface __init__ (:pr:`2036`).
```
### 3.17.0
```
*******************
Features:
- Support serialization as float in ``TimeDelta`` field (:pr:`1998`).
Thanks :user:`marcosatti` for the PR.
- Add ``messages_dict`` property to ``ValidationError`` to facilitate type checking
(:pr:`1976`).
Thanks :user:`sirosen` for the PR.
```
### 3.16.0
```
*******************
Features:
- Raise ``ValueError`` if an invalid value is passed to the ``unknown``
argument (:issue:`1721`, :issue:`1732`).
Thanks :user:`sirosen` for the PR.
Other changes:
- Set lower bound for ``packaging`` requirement (:issue:`1957`).
Thanks :user:`MatthewNicolTR` for reporting and thanks :user:`sirosen` for the PR.
- Improve warning messages by passing ``stacklevel`` (:pr:`1986`).
Thanks :user:`tirkarthi` for the PR.
```
### 3.15.0
```
*******************
Features:
- Allow passing a ``dict`` to ``fields.Nested`` (:pr:`1935`).
Thanks :user:`sirosen` for the PR.
Other changes:
- Address distutils deprecation warning in Python 3.10 (:pr:`1903`).
Thanks :user:`kkirsche` for the PR.
- Add py310 to black target-version (:pr:`1921`).
- Drop support for Python 3.6 (:pr:`1923`).
- Use postponed evaluation of annotations (:pr:`1932`).
Thanks :user:`Isira-Seneviratne` for the PR.
```
### 3.14.1
```
*******************
Bug fixes:
- Fix publishing type hints per `PEP-561 <https://www.python.org/dev/peps/pep-0561/>`_
(:pr:`1905`). Thanks :user:`bwindsor` for the catch and patch.
```
### 3.14.0
```
*******************
Bug fixes:
- Fix ``fields.TimeDelta`` serialization precision (:issue:`1865`).
Thanks :user:`yarsanich` for reporting.
Other changes:
- Fix type-hints for ``data`` arg in ``Schema.validate`` to accept
list of dictionaries (:issue:`1790`, :pr:`1868`).
Thanks :user:`yourun-proger` for PR.
- Improve warning when passing metadata as keyword arguments (:pr:`1882`).
Thanks :user:`traherom` for the PR.
- Don't build universal wheels. We don't support Python 2 anymore.
(:issue:`1860`) Thanks :user:`YKdvd` for reporting.
- Make the build reproducible (:pr:`1862`).
- Drop support for Python 3.5 (:pr:`1863`).
- Test against Python 3.10 (:pr:`1888`).
```
### 3.13.0
```
*******************
Features:
- Replace ``missing``/``default`` field parameters with
``load_default``/``dump_default`` (:pr:`1742`).
Thanks :user:`sirosen` for the PR.
Deprecations:
- The use of ``missing``/``default`` field parameters is deprecated and will be
removed in marshmallow 4. ``load_default``/``dump_default`` should be used
instead.
```
### 3.12.2
```
*******************
Bug fixes:
- Don't expose ``Field``\s as ``Schema`` attributes. This reverts a change
introduced in 3.12.0 that causes issues when field names conflict with
``Schema`` attributes or methods. ``Fields``\s are still accessible on a
``Schema`` instance through the ``fields`` attribute. (:pr:`1843`)
```
### 3.12.1
```
*******************
Bug fixes:
- Fix bug that raised an ``AttributeError`` when instantiating a
``Schema`` with a field named ``parent`` (:issue:`1808`).
Thanks :user:`flying-sheep` for reporting and helping with the fix.
```
### 3.12.0
```
*******************
Features:
- Add ``validate.And`` (:issue:`1768`).
Thanks :user:`rugleb` for the suggestion.
- Add type annotations to ``marshmallow.decorators`` (:issue:`1788`, :pr:`1789`).
Thanks :user:`michaeldimchuk` for the PR.
- Let ``Field``\s be accessed by name as ``Schema`` attributes (:pr:`1631`).
Other changes:
- Improve types in ``marshmallow.validate`` (:pr:`1786`).
- Make ``marshmallow.validate.Validator`` an abstract base class (:pr:`1786`).
- Remove unnecessary list cast (:pr:`1785`).
```
Links
- PyPI: https://pypi.org/project/marshmallow
- Changelog: https://data.safetycli.com/changelogs/marshmallow/
Changelog
### 0.19.0
```
Changes
=======
* Drop support of Python 3.7 and update CI (578)
(by fantix in ee5ad26a for 578)
Fixes
=====
* Restore uvloop.new_event_loop and other missing uvloop members to typing (573)
(by graingert in 5c500ee2 for 573)
* Fix docstring of loop.shutdown_default_executor (535)
(by Gelbpunkt in 919da567 for 535)
* Fix CI status badge (522)
(by shuuji3 in 0e9ff6cd for 522)
```
### 0.18.0
```
Fixes
=====
* CI fixes (520, 553)
(by altendky in 7783f1c5, dulmandakh in 1dd40f17)
* Make extract_stack resilient to lacking frames. (563)
(by jhance in 06876434 for 563)
* Port uvloop to Python 3.12 (570)
(by 1st1, fantix in 9f82bd74 for 569)
```
### 0.17.0
```
This release adds Python 3.11 support, updates bundled libuv to 1.43.0
and fixes a handful of issues.
Changes
=======
* Expose uv_loop_t pointer for integration with other C-extensions (310)
(by pranavtbhat in b332eb85 for 310)
* Support python 3.11+ (473)
(by zeroday0619 in 8e42921d for 473)
* Expose libuv uv_fs_event functionality (474)
(by jensbjorgensen fantix in 74d381e8 for 474)
* Activate debug mode when `-X dev` is used
(by jack1142 in 637a77a3)
* Expose uv_version() for libuv API compatibility (491)
(by fantix in 089f6cbf for 491)
* Fix loop.getaddrinfo() and tests (495)
(by fantix in 598b16fd for 495)
* Bump to libuv 1.43.0
(by fantix in 94e5e535)
Fixes
=====
* _TransProtPair is no longer defined in asyncio.events
(by jensbjorgensen in fae5f7fb)
* use a TypeVar for asyncio.BaseProtocol (478)
(by graingert in 3aacb352 for 478)
* Fix segfault in TimerHandle.when() after cleared
(by jensbjorgensen in c39afff8 for 469)
* Avoid self._errpipe_write double close (466)
(by graingert in 72140d7e for 466)
* Fix typo in test (456)
(by kianmeng in 033d52d0 for 456)
* Fix potential infinite loop (446)
(by kfur in ada43c06 for 446)
* use a stack of self._fds_to_close to prevent double closes (481)
(by graingert in 3214cf68 for 481)
* Fix incorrect main thread id value forking from a thread (453)
(by horpto fantix in e7934c88 for 453)
* create_subprocess_exec should treat env={} as empty environment (439) (454)
(by byllyfish in e04637e0 for 439)
* Queue write only after processing all buffers (445)
(by jakirkham fantix in 9c6ecb62 for 445)
* Drop Python 3.6 support for thread ident
(by fantix in 9c37930e)
* bugfix: write to another transport in resume_writing() fails (498)
(by fantix in d2deffef for 498)
Build
=====
* Upgrade GitHub Actions (477) (480)
(by cclauss in fcbf422d for 477, 10086942 for 480)
* typo `same as same`
(by YoSTEALTH in fedba80a)
* setup.py: allow to override extra_compile_args (443)
(by giuliobenetti in a130375f for 443)
* Drop hack in setup.py in finalize_options (492)
(by fantix in 2f1bc83c for 492)
* Fix tests invocation on release CI worklow (489)
(by ben9923 in d6a2b597 for 489)
Documentation
=============
* use asyncio.Runner loop_factory on 3.11+ (472)
(by graingert in 31ba48ca for 472)
* Fix CI badge in docs, remove remaining Travis CI references from docs
(by Nothing4You in c6901a74)
* Fix typo in README
(by monosans in 73d7253b)
```
### 0.16.0
```
This release adds Python 3.10 support, updates bundled libuv to 1.42.0
and fixes a handful of issues.
Changes
=======
* Python 3.10 support (432)
(by elprans in 2519e2df for 432)
* Bump vendored libuv to 1.42.0 (433)
(by elprans in a62f7818 for 433)
* Use cibuildwheel to build wheels (435)
(by elprans in 20febe0b for 435)
* Add support for `<timer handle>.when()`
(by Jens Jorgensen in 62b2af9c)
Fixes
=====
* Fix ref issue when protocol is in Cython
(by fantix in 70cafc82 for 2222)
* Set `python_requires` in setup.py
(by graingert in c808a663)
* SSL: schedule first data after waiter wakeup
(by fantix in 2081db89)
* Fix a possible race condition in sslproto test
(by fantix in b0526cd5 for 412)
* Fix `call_soon_threadsafe` thread safety
(by fantix in 4b803b15)
```
### 0.15.3
```
Bug Fixes
* SSL: schedule first data after waiter wakeup
(by fantix in 0df12282)
* Fix a possible race condition in sslproto test
(by fantix in 2e71c4c2 for 412)
* Fix `call_soon_threadsafe` thread safety
(by fantix and hehaha in 6387a4e4 for 408)
```
Links
- PyPI: https://pypi.org/project/uvloop
- Changelog: https://data.safetycli.com/changelogs/uvloop/
Changelog
### 2.0.31
```
:released: June 18, 2024
.. change::
:tags: usecase, reflection, mysql
:tickets: 11285
Added missing foreign key reflection option ``SET DEFAULT``
in the MySQL and MariaDB dialects.
Pull request courtesy of Quentin Roche.
.. change::
:tags: usecase, orm
:tickets: 11361
Added missing parameter :paramref:`_orm.with_polymorphic.name` that
allows specifying the name of returned :class:`_orm.AliasedClass`.
.. change::
:tags: bug, orm
:tickets: 11365
Fixed issue where a :class:`.MetaData` collection would not be
serializable, if an :class:`.Enum` or :class:`.Boolean` datatype were
present which had been adapted. This specific scenario in turn could occur
when using the :class:`.Enum` or :class:`.Boolean` within ORM Annotated
Declarative form where type objects frequently get copied.
.. change::
:tags: schema, usecase
:tickets: 11374
Added :paramref:`_schema.Column.insert_default` as an alias of
:paramref:`_schema.Column.default` for compatibility with
:func:`_orm.mapped_column`.
.. change::
:tags: bug, general
:tickets: 11417
Set up full Python 3.13 support to the extent currently possible, repairing
issues within internal language helpers as well as the serializer extension
module.
.. change::
:tags: bug, sql
:tickets: 11422
Fixed issue when serializing an :func:`_sql.over` clause with
unbounded range or rows.
.. change::
:tags: bug, sql
:tickets: 11423
Added missing methods :meth:`_sql.FunctionFilter.within_group`
and :meth:`_sql.WithinGroup.filter`
.. change::
:tags: bug, sql
:tickets: 11426
Fixed bug in :meth:`_sql.FunctionFilter.filter` that would mutate
the existing function in-place. It now behaves like the rest of the
SQLAlchemy API, returning a new instance instead of mutating the
original one.
.. change::
:tags: bug, orm
:tickets: 11446
Fixed issue where the :func:`_orm.selectinload` and
:func:`_orm.subqueryload` loader options would fail to take effect when
made against an inherited subclass that itself included a subclass-specific
:paramref:`_orm.Mapper.with_polymorphic` setting.
.. change::
:tags: bug, orm
:tickets: 11449
Fixed very old issue involving the :paramref:`_orm.joinedload.innerjoin`
parameter where making use of this parameter mixed into a query that also
included joined eager loads along a self-referential or other cyclical
relationship, along with complicating factors l
Update aiohttp-jinja2 from 1.5 to 1.6.
Changelog
### 1.6 ``` ================ - Switch to ``aiohttp.web.AppKey``, and deprecate the old 'static_root_url' key. - Drop Python 3.7, add Python 3.12. ``` ### 1.5.1 ``` ================== - Add support for Python 3.11. - Drop support for decorating non-async functions with template (deprecated since 0.16). ```Links
- PyPI: https://pypi.org/project/aiohttp-jinja2 - Changelog: https://data.safetycli.com/changelogs/aiohttp-jinja2/ - Repo: https://github.com/aio-libs/aiohttp_jinja2/Update aiohttp-oauth2 from 0.0.3 to 0.0.5.
Changelog
### 0.0.5 ``` This fixes when oauth2 resource providers are more technically correct in validating the content-type they receive, specifically for form data. ```Links
- PyPI: https://pypi.org/project/aiohttp-oauth2 - Changelog: https://data.safetycli.com/changelogs/aiohttp-oauth2/ - Repo: https://github.com/mrasband/aiohttp-oauth2Update aiohttp-remotes from 1.0.0 to 1.2.0.
Changelog
### 1.2.0 ``` ================== Bugfixes -------- - Raise a ``HTTPBadRequest`` instead of ``ValueError`` when ``X-Forwarded-For`` header is not a valid IP. (`311 <https://github.com/aio-libs/aiohttp-remotes/issues/311>`_) Deprecations and Removals ------------------------- - Dropped Python 3.6 support, the minimal supported aiohttp is 3.8.1 (`331 <https://github.com/aio-libs/aiohttp-remotes/issues/331>`_) ``` ### 1.1.0 ``` ================== * Added support for Python 3.10 ```Links
- PyPI: https://pypi.org/project/aiohttp-remotes - Changelog: https://data.safetycli.com/changelogs/aiohttp-remotes/ - Repo: https://github.com/aio-libs/aiohttp-remotesUpdate aiohttp from 3.7.4.post0 to 3.9.5.
Changelog
### 3.9.5 ``` ================== Bug fixes --------- - Fixed "Unclosed client session" when initialization of :py:class:`~aiohttp.ClientSession` fails -- by :user:`NewGlad`. *Related issues and pull requests on GitHub:* :issue:`8253`. - Fixed regression (from :pr:`8280`) with adding ``Content-Disposition`` to the ``form-data`` part after appending to writer -- by :user:`Dreamsorcerer`/:user:`Olegt0rr`. *Related issues and pull requests on GitHub:* :issue:`8332`. - Added default ``Content-Disposition`` in ``multipart/form-data`` responses to avoid broken form-data responses -- by :user:`Dreamsorcerer`. *Related issues and pull requests on GitHub:* :issue:`8335`. ---- ``` ### 3.9.4 ``` ================== Bug fixes --------- - The asynchronous internals now set the underlying causes when assigning exceptions to the future objects -- by :user:`webknjaz`. *Related issues and pull requests on GitHub:* :issue:`8089`. - Treated values of ``Accept-Encoding`` header as case-insensitive when checking for gzip files -- by :user:`steverep`. *Related issues and pull requests on GitHub:* :issue:`8104`. - Improved the DNS resolution performance on cache hit -- by :user:`bdraco`. This is achieved by avoiding an :mod:`asyncio` task creation in this case. *Related issues and pull requests on GitHub:* :issue:`8163`. - Changed the type annotations to allow ``dict`` on :meth:`aiohttp.MultipartWriter.append`, :meth:`aiohttp.MultipartWriter.append_json` and :meth:`aiohttp.MultipartWriter.append_form` -- by :user:`cakemanny` *Related issues and pull requests on GitHub:* :issue:`7741`. - Ensure websocket transport is closed when client does not close it -- by :user:`bdraco`. The transport could remain open if the client did not close it. This change ensures the transport is closed when the client does not close it. *Related issues and pull requests on GitHub:* :issue:`8200`. - Leave websocket transport open if receive times out or is cancelled -- by :user:`bdraco`. This restores the behavior prior to the change in 7978. *Related issues and pull requests on GitHub:* :issue:`8251`. - Fixed content not being read when an upgrade request was not supported with the pure Python implementation. -- by :user:`bdraco`. *Related issues and pull requests on GitHub:* :issue:`8252`. - Fixed a race condition with incoming connections during server shutdown -- by :user:`Dreamsorcerer`. *Related issues and pull requests on GitHub:* :issue:`8271`. - Fixed ``multipart/form-data`` compliance with :rfc:`7578` -- by :user:`Dreamsorcerer`. *Related issues and pull requests on GitHub:* :issue:`8280`. - Fixed blocking I/O in the event loop while processing files in a POST request -- by :user:`bdraco`. *Related issues and pull requests on GitHub:* :issue:`8283`. - Escaped filenames in static view -- by :user:`bdraco`. *Related issues and pull requests on GitHub:* :issue:`8317`. - Fixed the pure python parser to mark a connection as closing when a response has no length -- by :user:`Dreamsorcerer`. *Related issues and pull requests on GitHub:* :issue:`8320`. Features -------- - Upgraded *llhttp* to 9.2.1, and started rejecting obsolete line folding in Python parser to match -- by :user:`Dreamsorcerer`. *Related issues and pull requests on GitHub:* :issue:`8146`, :issue:`8292`. Deprecations (removal in next major release) -------------------------------------------- - Deprecated ``content_transfer_encoding`` parameter in :py:meth:`FormData.add_field() <aiohttp.FormData.add_field>` -- by :user:`Dreamsorcerer`. *Related issues and pull requests on GitHub:* :issue:`8280`. Improved documentation ---------------------- - Added a note about canceling tasks to avoid delaying server shutdown -- by :user:`Dreamsorcerer`. *Related issues and pull requests on GitHub:* :issue:`8267`. Contributor-facing changes -------------------------- - The pull request template is now asking the contributors to answer a question about the long-term maintenance challenges they envision as a result of merging their patches -- by :user:`webknjaz`. *Related issues and pull requests on GitHub:* :issue:`8099`. - Updated CI and documentation to use NPM clean install and upgrade node to version 18 -- by :user:`steverep`. *Related issues and pull requests on GitHub:* :issue:`8116`. - A pytest fixture ``hello_txt`` was introduced to aid static file serving tests in :file:`test_web_sendfile_functional.py`. It dynamically provisions ``hello.txt`` file variants shared across the tests in the module. -- by :user:`steverep` *Related issues and pull requests on GitHub:* :issue:`8136`. Packaging updates and notes for downstreams ------------------------------------------- - Added an ``internal`` pytest marker for tests which should be skipped by packagers (use ``-m 'not internal'`` to disable them) -- by :user:`Dreamsorcerer`. *Related issues and pull requests on GitHub:* :issue:`8299`. ---- ``` ### 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:* :issue:`8097`, :issue:`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:* :issue:`3957`. ---- ``` ### 3.9.2 ``` ================== Bug fixes --------- - Fixed server-side websocket connection leak. *Related issues and pull requests on GitHub:* :issue:`7978`. - Fixed ``web.FileResponse`` doing blocking I/O in the event loop. *Related issues and pull requests on GitHub:* :issue:`8012`. - Fixed double compress when compression enabled and compressed file exists in server file responses. *Related issues and pull requests on GitHub:* :issue:`8014`. - Added runtime type check for ``ClientSession`` ``timeout`` parameter. *Related issues and pull requests on GitHub:* :issue:`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:* :issue:`8074`. - Improved validation of paths for static resources requests to the server -- by :user:`bdraco`. *Related issues and pull requests on GitHub:* :issue:`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:* :issue:`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:* :issue:`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:* :issue:`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:* :issue:`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:* :issue:`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:* :issue:`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:* :issue:`8066`. Miscellaneous internal changes ------------------------------ - Replaced all ``tmpdir`` fixtures with ``tmp_path`` in test suite. *Related issues and pull requests on GitHub:* :issue:`3551`. ---- ``` ### 3.9.1 ``` ================== Bugfixes -------- - Fixed importing aiohttp under PyPy on Windows. `7848 <https://github.com/aio-libs/aiohttp/issues/7848>`_ - Fixed async concurrency safety in websocket compressor. `7865 <https://github.com/aio-libs/aiohttp/issues/7865>`_ - Fixed ``ClientResponse.close()`` releasing the connection instead of closing. `7869 <https://github.com/aio-libs/aiohttp/issues/7869>`_ - Fixed a regression where connection may get closed during upgrade. -- by :user:`Dreamsorcerer` `7879 <https://github.com/aio-libs/aiohttp/issues/7879>`_ - Fixed messages being reported as upgraded without an Upgrade header in Python parser. -- by :user:`Dreamsorcerer` `7895 <https://github.com/aio-libs/aiohttp/issues/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 <https://github.com/aio-libs/aiohttp/issues/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 <https://github.com/aio-libs/aiohttp/issues/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 <https://github.com/aio-libs/aiohttp/issues/7056>`_ - Added support for setting response header parameters ``max_line_size`` and ``max_field_size``. `2304 <https://github.com/aio-libs/aiohttp/issues/2304>`_ - Added ``auto_decompress`` parameter to ``ClientSession.request`` to override ``ClientSession._auto_decompress``. -- by :user:`Daste745` `3751 <https://github.com/aio-libs/aiohttp/issues/3751>`_ - Changed ``raise_for_status`` to allow a coroutine. `3892 <https://github.com/aio-libs/aiohttp/issues/3892>`_ - Added client brotli compression support (optional with runtime check). `5219 <https://github.com/aio-libs/aiohttp/issues/5219>`_ - Added ``client_max_size`` to ``BaseRequest.clone()`` to allow overriding the request body size. -- :user:`anesabml`. `5704 <https://github.com/aio-libs/aiohttp/issues/5704>`_ - Added a middleware type alias ``aiohttp.typedefs.Middleware``. `5898 <https://github.com/aio-libs/aiohttp/issues/5898>`_ - Exported ``HTTPMove`` which can be used to catch any redirection request that has a location -- :user:`dreamsorcerer`. `6594 <https://github.com/aio-libs/aiohttp/issues/6594>`_ - Changed the ``path`` parameter in ``web.run_app()`` to accept a ``pathlib.Path`` object. `6839 <https://github.com/aio-libs/aiohttp/issues/6839>`_ - Performance: Skipped filtering ``CookieJar`` when the jar is empty or all cookies have expired. `7819 <https://github.com/aio-libs/aiohttp/issues/7819>`_ - Performance: Only check origin if insecure scheme and there are origins to treat as secure, in ``CookieJar.filter_cookies()``. `7821 <https://github.com/aio-libs/aiohttp/issues/7821>`_ - Performance: Used timestamp instead of ``datetime`` to achieve faster cookie expiration in ``CookieJar``. `7824 <https://github.com/aio-libs/aiohttp/issues/7824>`_ - Added support for passing a custom server name parameter to HTTPS connection. `7114 <https://github.com/aio-libs/aiohttp/issues/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 <https://github.com/aio-libs/aiohttp/issues/7131>`_ - Turned access log into no-op when the logger is disabled. `7240 <https://github.com/aio-libs/aiohttp/issues/7240>`_ - Added typing information to ``RawResponseMessage``. -- by :user:`Gobot1234` `7365 <https://github.com/aio-libs/aiohttp/issues/7365>`_ - Removed ``async-timeout`` for Python 3.11+ (replaced with ``asyncio.timeout()`` on newer releases). `7502 <https://github.com/aio-libs/aiohttp/issues/7502>`_ - Added support for ``brotlicffi`` as an alternative to ``brotli`` (fixing Brotli support on PyPy). `7611 <https://github.com/aio-libs/aiohttp/issues/7611>`_ - Added ``WebSocketResponse.get_extra_info()`` to access a protocol transport's extra info. `7078 <https://github.com/aio-libs/aiohttp/issues/7078>`_ - Allow ``link`` argument to be set to None/empty in HTTP 451 exception. `7689 <https://github.com/aio-libs/aiohttp/issues/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 <https://github.com/aio-libs/aiohttp/issues/3636>`_ - Fixed client timeout not working when incoming data is always available without waiting. -- by :user:`Dreamsorcerer`. `5854 <https://github.com/aio-libs/aiohttp/issues/5854>`_ - Fixed ``readuntil`` to work with a delimiter of more than one character. `6701 <https://github.com/aio-libs/aiohttp/issues/6701>`_ - Added ``__repr__`` to ``EmptyStreamReader`` to avoid ``AttributeError``. `6916 <https://github.com/aio-libs/aiohttp/issues/6916>`_ - Fixed bug when using ``TCPConnector`` with ``ttl_dns_cache=0``. `7014 <https://github.com/aio-libs/aiohttp/issues/7014>`_ - Fixed response returned from expect handler being thrown away. -- by :user:`Dreamsorcerer` `7025 <https://github.com/aio-libs/aiohttp/issues/7025>`_ - Avoided raising ``UnicodeDecodeError`` in multipart and in HTTP headers parsing. `7044 <https://github.com/aio-libs/aiohttp/issues/7044>`_ - Changed ``sock_read`` timeout to start after writing has finished, avoiding read timeouts caused by an unfinished write. -- by :user:`dtrifiro` `7149 <https://github.com/aio-libs/aiohttp/issues/7149>`_ - Fixed missing query in tracing method URLs when using ``yarl`` 1.9+. `7259 <https://github.com/aio-libs/aiohttp/issues/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 <https://github.com/aio-libs/aiohttp/issues/7302>`_ - Fixed ``EmptyStreamReader.iter_chunks()`` never ending. -- by :user:`mind1m` `7616 <https://github.com/aio-libs/aiohttp/issues/7616>`_ - Fixed a rare ``RuntimeError: await wasn't used with future`` exception. -- by :user:`stalkerg` `7785 <https://github.com/aio-libs/aiohttp/issues/7785>`_ - Fixed issue with insufficient HTTP method and version validation. `7700 <https://github.com/aio-libs/aiohttp/issues/7700>`_ - Added check to validate that absolute URIs have schemes. `7712 <https://github.com/aio-libs/aiohttp/issues/7712>`_ - Fixed unhandled exception when Python HTTP parser encounters unpaired Unicode surrogates. `7715 <https://github.com/aio-libs/aiohttp/issues/7715>`_ - Updated parser to disallow invalid characters in header field names and stop accepting LF as a request line separator. `7719 <https://github.com/aio-libs/aiohttp/issues/7719>`_ - Fixed Python HTTP parser not treating 204/304/1xx as an empty body. `7755 <https://github.com/aio-libs/aiohttp/issues/7755>`_ - Ensure empty body response for 1xx/204/304 per RFC 9112 sec 6.3. `7756 <https://github.com/aio-libs/aiohttp/issues/7756>`_ - Fixed an issue when a client request is closed before completing a chunked payload. -- by :user:`Dreamsorcerer` `7764 <https://github.com/aio-libs/aiohttp/issues/7764>`_ - Edge Case Handling for ResponseParser for missing reason value. `7776 <https://github.com/aio-libs/aiohttp/issues/7776>`_ - Fixed ``ClientWebSocketResponse.close_code`` being erroneously set to ``None`` when there are concurrent async tasks receiving data and closing the connection. `7306 <https://github.com/aio-libs/aiohttp/issues/7306>`_ - Added HTTP method validation. `6533 <https://github.com/aio-libs/aiohttp/issues/6533>`_ - Fixed arbitrary sequence types being allowed to inject values via version parameter. -- by :user:`Dreamsorcerer` `7835 <https://github.com/aio-libs/aiohttp/issues/7835>`_ - Performance: Fixed increase in latency with small messages from websocket compression changes. `7797 <https://github.com/aio-libs/aiohttp/issues/7797>`_ Improved Documentation ---------------------- - Fixed the `ClientResponse.release`'s type in the doc. Changed from `comethod` to `method`. `5836 <https://github.com/aio-libs/aiohttp/issues/5836>`_ - Added information on behavior of base_url parameter in `ClientSession`. `6647 <https://github.com/aio-libs/aiohttp/issues/6647>`_ - Fixed `ClientResponseError` docs. `6700 <https://github.com/aio-libs/aiohttp/issues/6700>`_ - Updated Redis code examples to follow the latest API. `6907 <https://github.com/aio-libs/aiohttp/issues/6907>`_ - Added a note about possibly needing to update headers when using ``on_response_prepare``. -- by :user:`Dreamsorcerer` `7283 <https://github.com/aio-libs/aiohttp/issues/7283>`_ - Completed ``trust_env`` parameter description to honor ``wss_proxy``, ``ws_proxy`` or ``no_proxy`` env. `7325 <https://github.com/aio-libs/aiohttp/issues/7325>`_ - Expanded SSL documentation with more examples (e.g. how to use certifi). -- by :user:`Dreamsorcerer` `7334 <https://github.com/aio-libs/aiohttp/issues/7334>`_ - Fix, update, and improve client exceptions documentation. `7733 <https://github.com/aio-libs/aiohttp/issues/7733>`_ Deprecations and Removals ------------------------- - Added ``shutdown_timeout`` parameter to ``BaseRunner``, while deprecating ``shutdown_timeout`` parameter from ``BaseSite``. -- by :user:`Dreamsorcerer` `7718 <https://github.com/aio-libs/aiohttp/issues/7718>`_ - Dropped Python 3.6 support. `6378 <https://github.com/aio-libs/aiohttp/issues/6378>`_ - Dropped Python 3.7 support. -- by :user:`Dreamsorcerer` `7336 <https://github.com/aio-libs/aiohttp/issues/7336>`_ - Removed support for abandoned ``tokio`` event loop. -- by :user:`Dreamsorcerer` `7281 <https://github.com/aio-libs/aiohttp/issues/7281>`_ Misc ---- - Made ``print`` argument in ``run_app()`` optional. `3690 <https://github.com/aio-libs/aiohttp/issues/3690>`_ - Improved performance of ``ceil_timeout`` in some cases. `6316 <https://github.com/aio-libs/aiohttp/issues/6316>`_ - Changed importing Gunicorn to happen on-demand, decreasing import time by ~53%. -- :user:`Dreamsorcerer` `6591 <https://github.com/aio-libs/aiohttp/issues/6591>`_ - Improved import time by replacing ``http.server`` with ``http.HTTPStatus``. `6903 <https://github.com/aio-libs/aiohttp/issues/6903>`_ - Fixed annotation of ``ssl`` parameter to disallow ``True``. -- by :user:`Dreamsorcerer`. `7335 <https://github.com/aio-libs/aiohttp/issues/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 <https://github.com/aio-libs/aiohttp/issues/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 <https://github.com/aio-libs/aiohttp/issues/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 <https://github.com/aio-libs/aiohttp/issues/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 <https://github.com/aio-libs/aiohttp/issues/7490>`_ Bugfixes -------- - Fixed ``PermissionError`` when ``.netrc`` is unreadable due to permissions. `7237 <https://github.com/aio-libs/aiohttp/issues/7237>`_ - Fixed output of parsing errors pointing to a ``\n``. -- by :user:`Dreamsorcerer` `7468 <https://github.com/aio-libs/aiohttp/issues/7468>`_ - Fixed ``GunicornWebWorker`` max_requests_jitter not working. `7518 <https://github.com/aio-libs/aiohttp/issues/7518>`_ - Fixed sorting in ``filter_cookies`` to use cookie with longest path. -- by :user:`marq24`. `7577 <https://github.com/aio-libs/aiohttp/issues/7577>`_ - Fixed display of ``BadStatusLine`` messages from llhttp_. -- by :user:`Dreamsorcerer` `7651 <https://github.com/aio-libs/aiohttp/issues/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 <https://github.com/aio-libs/aiohttp/issues/7346>`_ Features -------- - Added information to C parser exceptions to show which character caused the error. -- by :user:`Dreamsorcerer` `7366 <https://github.com/aio-libs/aiohttp/issues/7366>`_ Bugfixes -------- - Fixed a transport is :data:`None` error -- by :user:`Dreamsorcerer`. `3355 <https://github.com/aio-libs/aiohttp/issues/3355>`_ ---- ``` ### 3.8.4 ``` ================== Bugfixes -------- - Fixed incorrectly overwriting cookies with the same name and domain, but different path. `6638 <https://github.com/aio-libs/aiohttp/issues/6638>`_ - Fixed ``ConnectionResetError`` not being raised after client disconnection in SSL environments. `7180 <https://github.com/aio-libs/aiohttp/issues/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 <https://github.com/aio-libs/aiohttp/issues/6950>`_ ---- ``` ### 3.8.2 ``` ===================================================== Bugfixes -------- - Support registering OPTIONS HTTP method handlers via RouteTableDef. `4663 <https://github.com/aio-libs/aiohttp/issues/4663>`_ - Started supporting ``authority-form`` and ``absolute-form`` URLs on the server-side. `6227 <https://github.com/aio-libs/aiohttp/issues/6227>`_ - Fix Python 3.11 alpha incompatibilities by using Cython 0.29.25 `6396 <https://github.com/aio-libs/aiohttp/issues/6396>`_ - Remove a deprecated usage of pytest.warns(None) `6663 <https://github.com/aio-libs/aiohttp/issues/6663>`_ - Fix regression where ``asyncio.CancelledError`` occurs on client disconnection. `6719 <https://github.com/aio-libs/aiohttp/issues/6719>`_ - Export :py:class:`~aiohttp.web.PrefixedSubAppResource` under :py:mod:`aiohttp.web` -- by :user:`Dreamsorcerer`. This fixes a regression introduced by :pr:`3469`. `6889 <https://github.com/aio-libs/aiohttp/issues/6889>`_ - Dropped the :class:`object` type possibility from the :py:attr:`aiohttp.ClientSession.timeout` property return type declaration. `6917 <https://github.com/aio-libs/aiohttp/issues/6917>`_, `6923 <https://github.com/aio-libs/aiohttp/issues/6923>`_ Improved Documentation ---------------------- - Added clarification on configuring the app object with settings such as a db connection. `4137 <https://github.com/aio-libs/aiohttp/issues/4137>`_ - Edited the web.run_app declaration. `6401 <https://github.com/aio-libs/aiohttp/issues/6401>`_ - Dropped the :class:`object` type possibility from the :py:attr:`aiohttp.ClientSession.timeout` property return type declaration. `6917 <https://github.com/aio-libs/aiohttp/issues/6917>`_, `6923 <https://github.com/aio-libs/aiohttp/issues/6923>`_ Deprecations and Removals ------------------------- - Drop Python 3.5 support, aiohttp works on 3.6+ now. `4046 <https://github.com/aio-libs/aiohttp/issues/4046>`_ Misc ---- - `6369 <https://github.com/aio-libs/aiohttp/issues/6369>`_, `#6399 <https://github.com/aio-libs/aiohttp/issues/6399>`_, `#6550 <https://github.com/aio-libs/aiohttp/issues/6550>`_, `#6708 <https://github.com/aio-libs/aiohttp/issues/6708>`_, `#6757 <https://github.com/aio-libs/aiohttp/issues/6757>`_, `#6857 <https://github.com/aio-libs/aiohttp/issues/6857>`_, `#6872 <https://github.com/aio-libs/aiohttp/issues/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 an index out of range error in aiohttp. For example, if user compile CPython with `--disable-ipv6` option, but his system enable the ipv6. `5901 <https://github.com/aio-libs/aiohttp/issues/5901>`_ - Do not install "examples" as a top-level package. `6189 <https://github.com/aio-libs/aiohttp/issues/6189>`_ - Restored ability to connect IPv6-only host. `6195 <https://github.com/aio-libs/aiohttp/issues/6195>`_ - Remove ``Signal`` from ``__all__``, replace ``aiohttp.Signal`` with ``aiosignal.Signal`` in docs `6201 <https://github.com/aio-libs/aiohttp/issues/6201>`_ - Made chunked encoding HTTP header check stricter. `6305 <https://github.com/aio-libs/aiohttp/issues/6305>`_ Improved Documentation ---------------------- - update quick starter demo codes. `6240 <https://github.com/aio-libs/aiohttp/issues/6240>`_ - Added an explanation of how tiny timeouts affect performance to the client reference document. `6274 <https://github.com/aio-libs/aiohttp/issues/6274>`_ - Add flake8-docstrings to flake8 configuration, enable subset of checks. `6276 <https://github.com/aio-libs/aiohttp/issues/6276>`_ - Added information on running complex applications with additional tasks/processes -- :user:`Dreamsorcerer`. `6278 <https://github.com/aio-libs/aiohttp/issues/6278>`_ Misc ---- - `6205 <https://github.com/aio-libs/aiohttp/issues/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 <https://github.com/aio-libs/aiohttp/issues/2988>`_ - Switch from ``http-parser`` to ``llhttp`` `3561 <https://github.com/aio-libs/aiohttp/issues/3561>`_ - Use Brotli instead of brotlipy `3803 <https://github.com/aio-libs/aiohttp/issues/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 <https://github.com/aio-libs/aiohttp/issues/3828>`_ - Make access log use local time with timezone `3853 <https://github.com/aio-libs/aiohttp/issues/3853>`_ - Implemented ``readuntil`` in ``StreamResponse`` `4054 <https://github.com/aio-libs/aiohttp/issues/4054>`_ - FileResponse now supports ETag. `4594 <https://github.com/aio-libs/aiohttp/issues/4594>`_ - Add a request handler type alias ``aiohttp.typedefs.Handler``. `4686 <https://github.com/aio-libs/aiohttp/issues/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 <https://github.com/aio-libs/aiohttp/issues/4700>`_ - Add validation of HTTP header keys and values to prevent header injection. `4818 <https://github.com/aio-libs/aiohttp/issues/4818>`_ - Add predicate to ``AbstractCookieJar.clear``. Add ``AbstractCookieJar.clear_domain`` to clean all domain and subdomains cookies only. `4942 <https://github.com/aio-libs/aiohttp/issues/4942>`_ - Add keepalive_timeout parameter to web.run_app. `5094 <https://github.com/aio-libs/aiohttp/issues/5094>`_ - Tracing for client sent headers `5105 <https://github.com/aio-libs/aiohttp/issues/5105>`_ - Make type hints for http parser stricter `5267 <https://github.com/aio-libs/aiohttp/issues/5267>`_ - Add final declarations for constants. `5275 <https://github.com/aio-libs/aiohttp/issues/5275>`_ - Switch to external frozenlist and aiosignal libraries. `5293 <https://github.com/aio-libs/aiohttp/issues/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 <https://github.com/aio-libs/aiohttp/issues/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 <https://github.com/aio-libs/aiohttp/issues/5572>`_ - Add ``aiohttp.pytest_plugin.AiohttpClient`` for static typing of pytest plugin. `5585 <https://github.com/aio-libs/aiohttp/issues/5585>`_ - Added a ``socket_factory`` argument to ``BaseTestServer``. `5844 <https://github.com/aio-libs/aiohttp/issues/5844>`_ - Add compression strategy parameter to enable_compression method. `5909 <https://github.com/aio-libs/aiohttp/issues/5909>`_ - Added support for Python 3.10 to Github Actions CI/CD workflows and fix the related deprecation warnings -- :user:`Hanaasagi`. `5927 <https://github.com/aio-libs/aiohttp/issues/5927>`_ - Switched ``chardet`` to ``charset-normalizer`` for guessing the HTTP payload body encoding -- :user:`Ousret`. `5930 <https://github.com/aio-libs/aiohttp/issues/5930>`_ - Added optional auto_decompress argument for HttpRequestParser `5957 <https://github.com/aio-libs/aiohttp/issues/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 <https://github.com/aio-libs/aiohttp/issues/5992>`_ - Added ``base_url`` parameter to the initializer of :class:`~aiohttp.ClientSession`. `6013 <https://github.com/aio-libs/aiohttp/issues/6013>`_ - Add Trove classifier and create binary wheels for 3.10. -- :user:`hugovk`. `6079 <https://github.com/aio-libs/aiohttp/issues/6079>`_ - Started shipping platform-specific wheels with the ``musl`` tag targeting typical Alpine Linux runtimes — :user:`asvetlov`. `6139 <https://github.com/aio-libs/aiohttp/issues/6139>`_ - Started shipping platform-specific arm64 wheels for Apple Silicon — :user:`asvetlov`. `6139 <https://github.com/aio-libs/aiohttp/issues/6139>`_ Bugfixes -------- - Modify _drain_helper() to handle concurrent `await resp.write(...)` or `ws.send_json(...)` calls without race-condition. `2934 <https://github.com/aio-libs/aiohttp/issues/2934>`_ - Started using `MultiLoopChildWatcher` when it's available under POSIX while setting up the test I/O loop. `3450 <https://github.com/aio-libs/aiohttp/issues/3450>`_ - Only encode content-disposition filename parameter using percent-encoding. Other parameters are encoded to quoted-string or RFC2231 extended parameter value. `4012 <https://github.com/aio-libs/aiohttp/issues/4012>`_ - Fixed HTTP client requests to honor ``no_proxy`` environment variables. `4431 <https://github.com/aio-libs/aiohttp/issues/4431>`_ - Fix supporting WebSockets proxies configured via environment variables. `4648 <https://github.com/aio-libs/aiohttp/issues/4648>`_ - Change return type on URLDispatcher to UrlMappingMatchInfo to improve type annotations. `4748 <https://github.com/aio-libs/aiohttp/issues/4748>`_ - Ensure a cleanup context is cleaned up even when an exception occurs during startup. `4799 <https://github.com/aio-libs/aiohttp/issues/4799>`_ - Added a new exception type for Unix socket client errors which provides a more useful error message. `4984 <https://github.com/aio-libs/aiohttp/issues/4984>`_ - Remove Transfer-Encoding and Content-Type headers for 204 in StreamResponse `5106 <https://github.com/aio-libs/aiohttp/issues/5106>`_ - Only depend on typing_extensions for Python <3.8 `5107 <https://github.com/aio-libs/aiohttp/issues/5107>`_ - Add ABNORMAL_CLOSURE and BAD_GATEWAY to WSCloseCode `5192 <https://github.com/aio-libs/aiohttp/issues/5192>`_ - Fix cookies disappearing from HTTPExceptions. `5233 <https://github.com/aio-libs/aiohttp/issues/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 <https://github.com/aio-libs/aiohttp/issues/5250>`_ - Acquire the connection before running traces to prevent race condition. `5259 <https://github.com/aio-libs/aiohttp/issues/5259>`_ - Add missing slots to _RequestContextManager`` and ``_WSRequestContextManager`` `5329 <https://github.com/aio-libs/aiohttp/issues/5329>`_ - Ensure sending a zero byte file does not throw an exception (round 2) `5380 <https://github.com/aio-libs/aiohttp/issues/5380>`_ - Set "text/plain" when data is an empty string in client requests. `5392 <https://github.com/aio-libs/aiohttp/issues/5392>`_ - Stop automatically releasing the ``ClientResponse`` object on calls to the ``ok`` property for the failed requests. `5403 <https://github.com/aio-libs/aiohttp/issues/5403>`_ - Include query parameters from `params` keyword argument in tracing `URL`. `5432 <https://github.com/aio-libs/aiohttp/issues/5432>`_ - Fix annotations `5466 <https://github.com/aio-libs/aiohttp/issues/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 <https://github.com/aio-libs/aiohttp/issues/5494>`_ - Fix 0 being incorrectly treated as an immediate timeout. `5527 <https://github.com/aio-libs/aiohttp/issues/5527>`_ - Fixes failing tests when an environment variable <scheme>_proxy is set. `5554 <https://github.com/aio-libs/aiohttp/issues/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 <https://github.com/aio-libs/aiohttp/issues/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 <https://github.com/aio-libs/aiohttp/issues/5657>`_ - Remove incorrect default from docs `5727 <https://github.com/aio-libs/aiohttp/issues/5727>`_ - Remove external test dependency to http://httpbin.org `5840 <https://github.com/aio-libs/aiohttp/issues/5840>`_ - Don't cancel current task when entering a cancelled timer. `5853 <https://github.com/aio-libs/aiohttp/issues/5853>`_ - Added ``params`` keyword argument to ``ClientSession.ws_connect``. -- :user:`hoh`. `5868 <https://github.com/aio-libs/aiohttp/issues/5868>`_ - Uses :py:class:`~asyncio.ThreadedChildWatcher` under POSIX to allow setting up test loop in non-main thread. `5877 <https://github.com/aio-libs/aiohttp/issues/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 <https://github.com/aio-libs/aiohttp/issues/5901>`_ - Removed the deprecated ``loop`` argument from the ``asyncio.sleep``/``gather`` calls `5905 <https://github.com/aio-libs/aiohttp/issues/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 <https://github.com/aio-libs/aiohttp/issues/5925>`_ - Fix resetting `SIGCHLD` signals in Gunicorn aiohttp Worker to fix `subprocesses` that capture output having an incorrect `returncode`. `6130 <https://github.com/aio-libs/aiohttp/issues/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 <https://github.com/aio-libs/aiohttp/issues/6182>`_ Improved Documentation ---------------------- - Refactored OpenAPI/Swagger aiohttp addons, added ``aio-openapi`` `5326 <https://github.com/aio-libs/aiohttp/issues/5326>`_ - Fixed docs on request cookies type, so it matches what is actually used in the code (a read-only dictionary-like object). `5725 <https://github.com/aio-libs/aiohttp/issues/5725>`_ - Documented that the HTTP client ``Authorization`` header is removed on redirects to a different host or protocol. `5850 <https://github.com/aio-libs/aiohttp/issues/5850>`_ Misc ---- - `3927 <https://github.com/aio-libs/aiohttp/issues/3927>`_, `#4247 <https://github.com/aio-libs/aiohttp/issues/4247>`_, `#4247 <https://github.com/aio-libs/aiohttp/issues/4247>`_, `#5389 <https://github.com/aio-libs/aiohttp/issues/5389>`_, `#5457 <https://github.com/aio-libs/aiohttp/issues/5457>`_, `#5486 <https://github.com/aio-libs/aiohttp/issues/5486>`_, `#5494 <https://github.com/aio-libs/aiohttp/issues/5494>`_, `#5515 <https://github.com/aio-libs/aiohttp/issues/5515>`_, `#5625 <https://github.com/aio-libs/aiohttp/issues/5625>`_, `#5635 <https://github.com/aio-libs/aiohttp/issues/5635>`_, `#5648 <https://github.com/aio-libs/aiohttp/issues/5648>`_, `#5657 <https://github.com/aio-libs/aiohttp/issues/5657>`_, `#5890 <https://github.com/aio-libs/aiohttp/issues/5890>`_, `#5914 <https://github.com/aio-libs/aiohttp/issues/5914>`_, `#5932 <https://github.com/aio-libs/aiohttp/issues/5932>`_, `#6002 <https://github.com/aio-libs/aiohttp/issues/6002>`_, `#6045 <https://github.com/aio-libs/aiohttp/issues/6045>`_, `#6131 <https://github.com/aio-libs/aiohttp/issues/6131>`_, `#6156 <https://github.com/aio-libs/aiohttp/issues/6156>`_, `#6165 <https://github.com/aio-libs/aiohttp/issues/6165>`_, `#6166 <https://github.com/aio-libs/aiohttp/issues/6166>`_ ---- ```Links
- PyPI: https://pypi.org/project/aiohttp - Changelog: https://data.safetycli.com/changelogs/aiohttp/ - Repo: https://github.com/aio-libs/aiohttpUpdate aioredis from 1.3.1 to 2.0.1.
Changelog
### 2.0.1 ``` Features - Added Python 3.10 to CI & Updated the Docs (see 1160) - Enable mypy in CI (see 1101) - Synchronized reading the responses from a connection (see 1106) Fixes - Remove __del__ from Redis (Fixes 1115) (see 1227) - fix socket.error raises (see 1129) - Fix buffer is closed error when using PythonParser class (see 1213) ``` ### 2.0.0 ``` Features - Port redis-py's client implementation to aioredis. (see 891) - Make hiredis an optional dependency. (see 917) ```Links
- PyPI: https://pypi.org/project/aioredis - Changelog: https://data.safetycli.com/changelogs/aioredis/ - Repo: https://github.com/aio-libs/aioredis-pyUpdate alembic from 1.5.8 to 1.13.2.
The bot wasn't able to find a changelog for this release. Got an idea?
Links
- PyPI: https://pypi.org/project/alembic - Homepage: https://alembic.sqlalchemy.org - Docs: https://pythonhosted.org/alembic/Update apscheduler from 3.7.0 to 3.10.4.
Changelog
### 3.9.1 ``` * Removed a leftover check for pytz ``localize()`` and ``normalize()`` methods ``` ### 3.9.0 ``` - Added support for PySide6 to the Qt scheduler - No longer enforce pytz time zones (support for others is experimental in the 3.x series) - Fixed compatibility with PyMongo 4 - Fixed pytz deprecation warnings - Fixed RuntimeError when shutting down the scheduler from a scheduled job ``` ### 3.8.1 ``` - Allowed the use of tzlocal v4.0+ in addition to v2.* ``` ### 3.8.0 ``` - Allowed passing through keyword arguments to the underlying stdlib executors in the thread/process pool executors (PR by Albert Xu) ```Links
- PyPI: https://pypi.org/project/apscheduler - Changelog: https://data.safetycli.com/changelogs/apscheduler/ - Repo: https://github.com/agronholm/apscheduler - Docs: https://pythonhosted.org/APScheduler/Update gunicorn from 20.1.0 to 22.0.0.
Changelog
### 21.2.0 ``` =================== - fix thread worker: revert change considering connection as idle . *** NOTE *** This is fixing the bad file description error. ``` ### 21.0.1 ``` =================== - fix documentation build ``` ### 21.0.0 ``` =================== - support python 3.11 - fix gevent and eventlet workers - fix threads support (gththread): improve performance and unblock requests - SSL: now use SSLContext object - HTTP parser: miscellaneous fixes - remove unnecessary setuid calls - fix testing - improve logging - miscellaneous fixes to core engine *** RELEASE NOTE *** We made this release major to start our new release cycle. More info will be provided on our discussion forum. ```Links
- PyPI: https://pypi.org/project/gunicorn - Changelog: https://data.safetycli.com/changelogs/gunicorn/Update marshmallow from 3.11.1 to 3.21.3.
Changelog
### 3.21.3 ``` ******************* Bug fixes: - Fix memory leak that prevented schema instances from getting GC'd (:pr:`2277`). Thanks :user:`mrcljx` for the PR. ``` ### 3.21.2 ``` ******************* Bug fixes: - Allow timestamp 0 in ``fields.DateTime`` (:issue:`2133`). Thanks :user:`flydzen` for reporting. ``` ### 3.21.1 ``` ******************* Bug fixes: - Fix error message when field is declared as a class and not an instance (:issue:`2245`). Thanks :user:`travnick` for reporting. ``` ### 3.21.0 ``` ******************* Bug fixes: - Fix validation of ``URL`` fields to allow missing user field, per NWG RFC 3986 (:issue:`2232`). Thanks :user:`ddennerline3` for reporting and :user:`deckar01` for the PR. Other changes: - *Backwards-incompatible*: ``__version__``, ``__parsed_version__``, and ``__version_info__`` attributes are deprecated (:issue:`2227`). Use feature detection or ``importlib.metadata.version("marshmallow")`` instead. ``` ### 3.20.2 ``` ******************* Bug fixes: - Fix ``Nested`` field type hint for lambda ``Schema`` types (:pr:`2164`). Thanks :user:`somethingnew2-0` for the PR. Other changes: - Officially support Python 3.12 (:pr:`2188`). Thanks :user:`hugovk` for the PR. ``` ### 3.20.1 ``` ******************* Bug fixes: - Fix call to ``get_declared_fields``: pass ``dict_cls`` again (:issue:`2152`). Thanks :user:`Cheaterman` for reporting. ``` ### 3.20.0 ``` ******************* Features: - Add ``absolute`` parameter to ``URL`` validator and ``Url`` field (:pr:`2123`). Thanks :user:`sirosen` for the PR. - Use Abstract Base Classes to define ``FieldABC`` and ``SchemaABC`` (:issue:`1449`). Thanks :user:`aditkumar72` for the PR. - Use `OrderedSet` as default `set_class`. Schemas are now ordered by default. (:issue:`1744`) Bug fixes: - Handle ``OSError`` and ``OverflowError`` in ``utils.from_timestamp`` (:pr:`2102`). Thanks :user:`TheBigRoomXXL` for the PR. - Fix the default inheritance of nested partial schemas (:issue:`2149`). Thanks :user:`matejsp` for reporting. Other changes: - Officially support Python 3.11 (:pr:`2067`). - Drop support for Python 3.7 (:pr:`2135`). ``` ### 3.19.0 ``` ******************* Features: - Add ``timestamp`` and ``timestamp_ms`` formats to ``fields.DateTime`` (:issue:`612`). Thanks :user:`vgavro` for the suggestion and thanks :user:`vanHoi` for the PR. ``` ### 3.18.0 ``` ******************* Features: - Add ``Enum`` field (:pr:`2017`) and (:pr:`2044`). Bug fixes: - Fix typing in ``Field._serialize`` signature (:pr:`2046`). ``` ### 3.17.1 ``` ******************* Bug fixes: - Add return type to ``fields.Email.__init__`` (:pr:`2018`). Thanks :user:`kkirsche` for the PR. - Add missing type hint to IPInterface __init__ (:pr:`2036`). ``` ### 3.17.0 ``` ******************* Features: - Support serialization as float in ``TimeDelta`` field (:pr:`1998`). Thanks :user:`marcosatti` for the PR. - Add ``messages_dict`` property to ``ValidationError`` to facilitate type checking (:pr:`1976`). Thanks :user:`sirosen` for the PR. ``` ### 3.16.0 ``` ******************* Features: - Raise ``ValueError`` if an invalid value is passed to the ``unknown`` argument (:issue:`1721`, :issue:`1732`). Thanks :user:`sirosen` for the PR. Other changes: - Set lower bound for ``packaging`` requirement (:issue:`1957`). Thanks :user:`MatthewNicolTR` for reporting and thanks :user:`sirosen` for the PR. - Improve warning messages by passing ``stacklevel`` (:pr:`1986`). Thanks :user:`tirkarthi` for the PR. ``` ### 3.15.0 ``` ******************* Features: - Allow passing a ``dict`` to ``fields.Nested`` (:pr:`1935`). Thanks :user:`sirosen` for the PR. Other changes: - Address distutils deprecation warning in Python 3.10 (:pr:`1903`). Thanks :user:`kkirsche` for the PR. - Add py310 to black target-version (:pr:`1921`). - Drop support for Python 3.6 (:pr:`1923`). - Use postponed evaluation of annotations (:pr:`1932`). Thanks :user:`Isira-Seneviratne` for the PR. ``` ### 3.14.1 ``` ******************* Bug fixes: - Fix publishing type hints per `PEP-561 <https://www.python.org/dev/peps/pep-0561/>`_ (:pr:`1905`). Thanks :user:`bwindsor` for the catch and patch. ``` ### 3.14.0 ``` ******************* Bug fixes: - Fix ``fields.TimeDelta`` serialization precision (:issue:`1865`). Thanks :user:`yarsanich` for reporting. Other changes: - Fix type-hints for ``data`` arg in ``Schema.validate`` to accept list of dictionaries (:issue:`1790`, :pr:`1868`). Thanks :user:`yourun-proger` for PR. - Improve warning when passing metadata as keyword arguments (:pr:`1882`). Thanks :user:`traherom` for the PR. - Don't build universal wheels. We don't support Python 2 anymore. (:issue:`1860`) Thanks :user:`YKdvd` for reporting. - Make the build reproducible (:pr:`1862`). - Drop support for Python 3.5 (:pr:`1863`). - Test against Python 3.10 (:pr:`1888`). ``` ### 3.13.0 ``` ******************* Features: - Replace ``missing``/``default`` field parameters with ``load_default``/``dump_default`` (:pr:`1742`). Thanks :user:`sirosen` for the PR. Deprecations: - The use of ``missing``/``default`` field parameters is deprecated and will be removed in marshmallow 4. ``load_default``/``dump_default`` should be used instead. ``` ### 3.12.2 ``` ******************* Bug fixes: - Don't expose ``Field``\s as ``Schema`` attributes. This reverts a change introduced in 3.12.0 that causes issues when field names conflict with ``Schema`` attributes or methods. ``Fields``\s are still accessible on a ``Schema`` instance through the ``fields`` attribute. (:pr:`1843`) ``` ### 3.12.1 ``` ******************* Bug fixes: - Fix bug that raised an ``AttributeError`` when instantiating a ``Schema`` with a field named ``parent`` (:issue:`1808`). Thanks :user:`flying-sheep` for reporting and helping with the fix. ``` ### 3.12.0 ``` ******************* Features: - Add ``validate.And`` (:issue:`1768`). Thanks :user:`rugleb` for the suggestion. - Add type annotations to ``marshmallow.decorators`` (:issue:`1788`, :pr:`1789`). Thanks :user:`michaeldimchuk` for the PR. - Let ``Field``\s be accessed by name as ``Schema`` attributes (:pr:`1631`). Other changes: - Improve types in ``marshmallow.validate`` (:pr:`1786`). - Make ``marshmallow.validate.Validator`` an abstract base class (:pr:`1786`). - Remove unnecessary list cast (:pr:`1785`). ```Links
- PyPI: https://pypi.org/project/marshmallow - Changelog: https://data.safetycli.com/changelogs/marshmallow/Update sentry-sdk from 1.0.0 to 2.10.0.
The bot wasn't able to find a changelog for this release. Got an idea?
Links
- PyPI: https://pypi.org/project/sentry-sdk - Repo: https://github.com/getsentry/sentry-pythonUpdate psycopg2-binary from 2.8.6 to 2.9.9.
The bot wasn't able to find a changelog for this release. Got an idea?
Links
- PyPI: https://pypi.org/project/psycopg2-binary - Homepage: https://psycopg.org/Update pyyaml from 5.4.1 to 6.0.1.
The bot wasn't able to find a changelog for this release. Got an idea?
Links
- PyPI: https://pypi.org/project/pyyaml - Homepage: https://pyyaml.org/Update uvloop from 0.15.2 to 0.19.0.
Changelog
### 0.19.0 ``` Changes ======= * Drop support of Python 3.7 and update CI (578) (by fantix in ee5ad26a for 578) Fixes ===== * Restore uvloop.new_event_loop and other missing uvloop members to typing (573) (by graingert in 5c500ee2 for 573) * Fix docstring of loop.shutdown_default_executor (535) (by Gelbpunkt in 919da567 for 535) * Fix CI status badge (522) (by shuuji3 in 0e9ff6cd for 522) ``` ### 0.18.0 ``` Fixes ===== * CI fixes (520, 553) (by altendky in 7783f1c5, dulmandakh in 1dd40f17) * Make extract_stack resilient to lacking frames. (563) (by jhance in 06876434 for 563) * Port uvloop to Python 3.12 (570) (by 1st1, fantix in 9f82bd74 for 569) ``` ### 0.17.0 ``` This release adds Python 3.11 support, updates bundled libuv to 1.43.0 and fixes a handful of issues. Changes ======= * Expose uv_loop_t pointer for integration with other C-extensions (310) (by pranavtbhat in b332eb85 for 310) * Support python 3.11+ (473) (by zeroday0619 in 8e42921d for 473) * Expose libuv uv_fs_event functionality (474) (by jensbjorgensen fantix in 74d381e8 for 474) * Activate debug mode when `-X dev` is used (by jack1142 in 637a77a3) * Expose uv_version() for libuv API compatibility (491) (by fantix in 089f6cbf for 491) * Fix loop.getaddrinfo() and tests (495) (by fantix in 598b16fd for 495) * Bump to libuv 1.43.0 (by fantix in 94e5e535) Fixes ===== * _TransProtPair is no longer defined in asyncio.events (by jensbjorgensen in fae5f7fb) * use a TypeVar for asyncio.BaseProtocol (478) (by graingert in 3aacb352 for 478) * Fix segfault in TimerHandle.when() after cleared (by jensbjorgensen in c39afff8 for 469) * Avoid self._errpipe_write double close (466) (by graingert in 72140d7e for 466) * Fix typo in test (456) (by kianmeng in 033d52d0 for 456) * Fix potential infinite loop (446) (by kfur in ada43c06 for 446) * use a stack of self._fds_to_close to prevent double closes (481) (by graingert in 3214cf68 for 481) * Fix incorrect main thread id value forking from a thread (453) (by horpto fantix in e7934c88 for 453) * create_subprocess_exec should treat env={} as empty environment (439) (454) (by byllyfish in e04637e0 for 439) * Queue write only after processing all buffers (445) (by jakirkham fantix in 9c6ecb62 for 445) * Drop Python 3.6 support for thread ident (by fantix in 9c37930e) * bugfix: write to another transport in resume_writing() fails (498) (by fantix in d2deffef for 498) Build ===== * Upgrade GitHub Actions (477) (480) (by cclauss in fcbf422d for 477, 10086942 for 480) * typo `same as same` (by YoSTEALTH in fedba80a) * setup.py: allow to override extra_compile_args (443) (by giuliobenetti in a130375f for 443) * Drop hack in setup.py in finalize_options (492) (by fantix in 2f1bc83c for 492) * Fix tests invocation on release CI worklow (489) (by ben9923 in d6a2b597 for 489) Documentation ============= * use asyncio.Runner loop_factory on 3.11+ (472) (by graingert in 31ba48ca for 472) * Fix CI badge in docs, remove remaining Travis CI references from docs (by Nothing4You in c6901a74) * Fix typo in README (by monosans in 73d7253b) ``` ### 0.16.0 ``` This release adds Python 3.10 support, updates bundled libuv to 1.42.0 and fixes a handful of issues. Changes ======= * Python 3.10 support (432) (by elprans in 2519e2df for 432) * Bump vendored libuv to 1.42.0 (433) (by elprans in a62f7818 for 433) * Use cibuildwheel to build wheels (435) (by elprans in 20febe0b for 435) * Add support for `<timer handle>.when()` (by Jens Jorgensen in 62b2af9c) Fixes ===== * Fix ref issue when protocol is in Cython (by fantix in 70cafc82 for 2222) * Set `python_requires` in setup.py (by graingert in c808a663) * SSL: schedule first data after waiter wakeup (by fantix in 2081db89) * Fix a possible race condition in sslproto test (by fantix in b0526cd5 for 412) * Fix `call_soon_threadsafe` thread safety (by fantix in 4b803b15) ``` ### 0.15.3 ``` Bug Fixes * SSL: schedule first data after waiter wakeup (by fantix in 0df12282) * Fix a possible race condition in sslproto test (by fantix in 2e71c4c2 for 412) * Fix `call_soon_threadsafe` thread safety (by fantix and hehaha in 6387a4e4 for 408) ```Links
- PyPI: https://pypi.org/project/uvloop - Changelog: https://data.safetycli.com/changelogs/uvloop/Update sqlalchemy from 1.3.23 to 2.0.31.
Changelog
### 2.0.31 ``` :released: June 18, 2024 .. change:: :tags: usecase, reflection, mysql :tickets: 11285 Added missing foreign key reflection option ``SET DEFAULT`` in the MySQL and MariaDB dialects. Pull request courtesy of Quentin Roche. .. change:: :tags: usecase, orm :tickets: 11361 Added missing parameter :paramref:`_orm.with_polymorphic.name` that allows specifying the name of returned :class:`_orm.AliasedClass`. .. change:: :tags: bug, orm :tickets: 11365 Fixed issue where a :class:`.MetaData` collection would not be serializable, if an :class:`.Enum` or :class:`.Boolean` datatype were present which had been adapted. This specific scenario in turn could occur when using the :class:`.Enum` or :class:`.Boolean` within ORM Annotated Declarative form where type objects frequently get copied. .. change:: :tags: schema, usecase :tickets: 11374 Added :paramref:`_schema.Column.insert_default` as an alias of :paramref:`_schema.Column.default` for compatibility with :func:`_orm.mapped_column`. .. change:: :tags: bug, general :tickets: 11417 Set up full Python 3.13 support to the extent currently possible, repairing issues within internal language helpers as well as the serializer extension module. .. change:: :tags: bug, sql :tickets: 11422 Fixed issue when serializing an :func:`_sql.over` clause with unbounded range or rows. .. change:: :tags: bug, sql :tickets: 11423 Added missing methods :meth:`_sql.FunctionFilter.within_group` and :meth:`_sql.WithinGroup.filter` .. change:: :tags: bug, sql :tickets: 11426 Fixed bug in :meth:`_sql.FunctionFilter.filter` that would mutate the existing function in-place. It now behaves like the rest of the SQLAlchemy API, returning a new instance instead of mutating the original one. .. change:: :tags: bug, orm :tickets: 11446 Fixed issue where the :func:`_orm.selectinload` and :func:`_orm.subqueryload` loader options would fail to take effect when made against an inherited subclass that itself included a subclass-specific :paramref:`_orm.Mapper.with_polymorphic` setting. .. change:: :tags: bug, orm :tickets: 11449 Fixed very old issue involving the :paramref:`_orm.joinedload.innerjoin` parameter where making use of this parameter mixed into a query that also included joined eager loads along a self-referential or other cyclical relationship, along with complicating factors l