aio-libs/aiohttp
### [`v3.8.1`](https://togithub.com/aio-libs/aiohttp/blob/HEAD/CHANGES.rst#381-2021-11-14)
[Compare Source](https://togithub.com/aio-libs/aiohttp/compare/v3.8.0...v3.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 `\_
- Do not install "examples" as a top-level package.
`#6189 `\_
- Restored ability to connect IPv6-only host.
`#6195 `\_
- Remove `Signal` from `__all__`, replace `aiohttp.Signal` with `aiosignal.Signal` in docs
`#6201 `\_
- Made chunked encoding HTTP header check stricter.
`#6305 `\_
## Improved Documentation
- update quick starter demo codes.
`#6240 `\_
- Added an explanation of how tiny timeouts affect performance to the client reference document.
`#6274 `\_
- Add flake8-docstrings to flake8 configuration, enable subset of checks.
`#6276 `\_
- Added information on running complex applications with additional tasks/processes -- :user:`Dreamsorcerer`.
`#6278 `\_
## Misc
- `#6205 `\_
***
### [`v3.8.0`](https://togithub.com/aio-libs/aiohttp/blob/HEAD/CHANGES.rst#380-2021-10-31)
[Compare Source](https://togithub.com/aio-libs/aiohttp/compare/v3.7.4.post0...v3.8.0)
\==================
## Features
- Added a `GunicornWebWorker` feature for extending the aiohttp server configuration by allowing the 'wsgi' coroutine to return `web.AppRunner` object.
`#2988 `\_
- Switch from `http-parser` to `llhttp`
`#3561 `\_
- Use Brotli instead of brotlipy
`#3803 `\_
- Disable implicit switch-back to pure python mode. The build fails loudly if aiohttp
cannot be compiled with C Accelerators. Use AIOHTTP_NO_EXTENSIONS=1 to explicitly
disable C Extensions complication and switch to Pure-Python mode. Note that Pure-Python
mode is significantly slower than compiled one.
`#3828 `\_
- Make access log use local time with timezone
`#3853 `\_
- Implemented `readuntil` in `StreamResponse`
`#4054 `\_
- FileResponse now supports ETag.
`#4594 `\_
- Add a request handler type alias `aiohttp.typedefs.Handler`.
`#4686 `\_
- `AioHTTPTestCase` is more async friendly now.
For people who use unittest and are used to use :py:exc:`~unittest.TestCase`
it will be easier to write new test cases like the sync version of the :py:exc:`~unittest.TestCase` class,
without using the decorator `@unittest_run_loop`, just `async def test_*`.
The only difference is that for the people using python3.7 and below a new dependency is needed, it is `asynctestcase`.
`#4700 `\_
- Add validation of HTTP header keys and values to prevent header injection.
`#4818 `\_
- Add predicate to `AbstractCookieJar.clear`.
Add `AbstractCookieJar.clear_domain` to clean all domain and subdomains cookies only.
`#4942 `\_
- Add keepalive_timeout parameter to web.run_app.
`#5094 `\_
- Tracing for client sent headers
`#5105 `\_
- Make type hints for http parser stricter
`#5267 `\_
- Add final declarations for constants.
`#5275 `\_
- Switch to external frozenlist and aiosignal libraries.
`#5293 `\_
- Don't send secure cookies by insecure transports.
By default, the transport is secure if https or wss scheme is used.
Use `CookieJar(treat_as_secure_origin="http://127.0.0.1")` to override the default security checker.
`#5571 `\_
- Always create a new event loop in `aiohttp.web.run_app()`.
This adds better compatibility with `asyncio.run()` or if trying to run multiple apps in sequence.
`#5572 `\_
- Add `aiohttp.pytest_plugin.AiohttpClient` for static typing of pytest plugin.
`#5585 `\_
- Added a `socket_factory` argument to `BaseTestServer`.
`#5844 `\_
- Add compression strategy parameter to enable_compression method.
`#5909 `\_
- Added support for Python 3.10 to Github Actions CI/CD workflows and fix the related deprecation warnings -- :user:`Hanaasagi`.
`#5927 `\_
- Switched `chardet` to `charset-normalizer` for guessing the HTTP payload body encoding -- :user:`Ousret`.
`#5930 `\_
- Added optional auto_decompress argument for HttpRequestParser
`#5957 `\_
- Added support for HTTPS proxies to the extent CPython's
:py:mod:`asyncio` supports it -- by :user:`bmbouter`,
:user:`jborean93` and :user:`webknjaz`.
`#5992 `\_
- Added `base_url` parameter to the initializer of :class:`~aiohttp.ClientSession`.
`#6013 `\_
- Add Trove classifier and create binary wheels for 3.10. -- :user:`hugovk`.
`#6079 `\_
- Started shipping platform-specific wheels with the `musl` tag targeting typical Alpine Linux runtimes β :user:`asvetlov`.
`#6139 `\_
- Started shipping platform-specific arm64 wheels for Apple Silicon β :user:`asvetlov`.
`#6139 `\_
## Bugfixes
- Modify *drain_helper() to handle concurrent `await resp.write(...)` or `ws.send_json(...)` calls without race-condition.
`#2934 `*
- Started using `MultiLoopChildWatcher` when it's available under POSIX while setting up the test I/O loop.
`#3450 `\_
- Only encode content-disposition filename parameter using percent-encoding.
Other parameters are encoded to quoted-string or RFC2231 extended parameter
value.
`#4012 `\_
- Fixed HTTP client requests to honor `no_proxy` environment variables.
`#4431 `\_
- Fix supporting WebSockets proxies configured via environment variables.
`#4648 `\_
- Change return type on URLDispatcher to UrlMappingMatchInfo to improve type annotations.
`#4748 `\_
- Ensure a cleanup context is cleaned up even when an exception occurs during startup.
`#4799 `\_
- Added a new exception type for Unix socket client errors which provides a more useful error message.
`#4984 `\_
- Remove Transfer-Encoding and Content-Type headers for 204 in StreamResponse
`#5106 `\_
- Only depend on typing_extensions for Python <3.8
`#5107 `\_
- Add ABNORMAL_CLOSURE and BAD_GATEWAY to WSCloseCode
`#5192 `\_
- Fix cookies disappearing from HTTPExceptions.
`#5233 `\_
- StaticResource prefixes no longer match URLs with a non-folder prefix. For example `routes.static('/foo', '/foo')` no longer matches the URL `/foobar`. Previously, this would attempt to load the file `/foo/ar`.
`#5250 `\_
- Acquire the connection before running traces to prevent race condition.
`#5259 `\_
- Add missing slots to \`\`\`\_RequestContextManager`and`*WSRequestContextManager\`\`
`#5329 `*
- Ensure sending a zero byte file does not throw an exception (round 2)
`#5380 `\_
- Set "text/plain" when data is an empty string in client requests.
`#5392 `\_
- Stop automatically releasing the `ClientResponse` object on calls to the `ok` property for the failed requests.
`#5403 `\_
- Include query parameters from `params` keyword argument in tracing `URL`.
`#5432 `\_
- Fix annotations
`#5466 `\_
- Fixed the multipart POST requests processing to always release file
descriptors for the `tempfile.Temporaryfile`-created
`_io.BufferedRandom` instances of files sent within multipart request
bodies via HTTP POST requests -- by :user:`webknjaz`.
`#5494 `\_
- Fix 0 being incorrectly treated as an immediate timeout.
`#5527 `\_
- Fixes failing tests when an environment variable *proxy is set.
`#5554 `*
- Replace deprecated app handler design in `tests/autobahn/server.py` with call to `web.run_app`; replace deprecated `aiohttp.ws_connect` calls in `tests/autobahn/client.py` with `aiohttp.ClienSession.ws_connect`.
`#5606 `\_
- Fixed test for `HTTPUnauthorized` that access the `text` argument. This is not used in any part of the code, so it's removed now.
`#5657 `\_
- Remove incorrect default from docs
`#5727 `\_
- Remove external test dependency to http://httpbin.org
`#5840 `\_
- Don't cancel current task when entering a cancelled timer.
`#5853 `\_
- Added `params` keyword argument to `ClientSession.ws_connect`. -- :user:`hoh`.
`#5868 `\_
- Uses :py:class:`~asyncio.ThreadedChildWatcher` under POSIX to allow setting up test loop in non-main thread.
`#5877 `\_
- Fix the error in handling the return value of `getaddrinfo`.
`getaddrinfo` will return an `(int, bytes)` tuple, if CPython could not handle the address family.
It will cause a index out of range error in aiohttp. For example, if user compile CPython with
`--disable-ipv6` option but his system enable the ipv6.
`#5901 `\_
- Removed the deprecated `loop` argument from the `asyncio.sleep`/`gather` calls
`#5905 `\_
- Return `None` from `request.if_modified_since`, `request.if_unmodified_since`, `request.if_range` and `response.last_modified` when corresponding http date headers are invalid.
`#5925 `\_
- Fix resetting `SIGCHLD` signals in Gunicorn aiohttp Worker to fix `subprocesses` that capture output having an incorrect `returncode`.
`#6130 `\_
- Raise `400: Content-Length can't be present with Transfer-Encoding` if both `Content-Length` and `Transfer-Encoding` are sent by peer by both C and Python implementations
`#6182 `\_
## Improved Documentation
- Refactored OpenAPI/Swagger aiohttp addons, added `aio-openapi`
`#5326 `\_
- Fixed docs on request cookies type, so it matches what is actually used in the code (a
read-only dictionary-like object).
`#5725 `\_
- Documented that the HTTP client `Authorization` header is removed
on redirects to a different host or protocol.
`#5850 `\_
## Misc
- `#3927 `*, `#4247 `*, `#4247 `*, `#5389 `*, `#5457 `*, `#5486 `*, `#5494 `*, `#5515 `*, `#5625 `*, `#5635 `*, `#5648 `*, `#5657 `*, `#5890 `*, `#5914 `*, `#5932 `*, `#6002 `*, `#6045 `*, `#6131 `*, `#6156 `*, `#6165 `*, `#6166 `\_
***
### [`v3.7.4.post0`](https://togithub.com/aio-libs/aiohttp/blob/HEAD/CHANGES.rst#374post0-2021-03-06)
[Compare Source](https://togithub.com/aio-libs/aiohttp/compare/v3.7.4...v3.7.4.post0)
\========================
## Misc
- Bumped upper bound of the `chardet` runtime dependency
to allow their v4.0 version stream.
`#5366 `\_
***
Configuration
π Schedule: At any time (no schedule defined).
π¦ Automerge: Disabled by config. Please merge this manually once you are satisfied.
β» Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
π Ignore: Close this PR and you won't be reminded about this update again.
[ ] If you want to rebase/retry this PR, click this checkbox.
This PR contains the following updates:
==3.7.4
->==3.8.1
Release Notes
aio-libs/aiohttp
### [`v3.8.1`](https://togithub.com/aio-libs/aiohttp/blob/HEAD/CHANGES.rst#381-2021-11-14) [Compare Source](https://togithub.com/aio-libs/aiohttp/compare/v3.8.0...v3.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. `#5901Configuration
π Schedule: At any time (no schedule defined).
π¦ Automerge: Disabled by config. Please merge this manually once you are satisfied.
β» Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
π Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by WhiteSource Renovate. View repository job log here.