Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
73 commits
Select commit Hold shift + click to select a range
8cf01ad
[3.8] Fix cookie handling (#6638) (#6974)
galaxyfeeder Sep 26, 2022
ed04b4d
[PR #7154/283861dd backport][3.8] fixed error in ContentDisposition d…
patchback[bot] Dec 30, 2022
9cde3b4
Update .pre-commit-config.yaml
Dreamsorcerer Feb 10, 2023
ba573e2
[3.8] Fix CI (#7143) (#7200)
Dreamsorcerer Feb 11, 2023
565cc21
Raise upper bound of charset-normalizer
Dreamsorcerer Feb 11, 2023
28854a4
Fix ConnectionResetError not being raised when the transport is close…
Dreamsorcerer Feb 11, 2023
33953f1
Release v3.8.4 (#7207)
Dreamsorcerer Feb 12, 2023
29b6f30
Post release bump
Dreamsorcerer Feb 12, 2023
e71432e
[PR #7309/28438834 backport][3.8] Fix a couple of typos in the docs (…
patchback[bot] Jun 4, 2023
81ba8aa
[PR #7316/6f3e7f46 backport][3.8] Update docs (#7317)
patchback[bot] Jun 9, 2023
b1fbb49
[3.8] Make the 3.10 related xfails non-strict (#7178)
hroncok Jul 7, 2023
9a41831
Upgrade chat links and badges to Matrix (#7345)
webknjaz Jul 7, 2023
a4bf0e8
[PR #7348/bf9d753e backport][3.8] 🐛 Fix RST in changelog template bef…
patchback[bot] Jul 8, 2023
4087410
[PR #7346/346fd202 backport][3.8]  Bump vendored llhttp to v8.1.1 (#…
patchback[bot] Jul 8, 2023
dd8e24e
[PR #7343/18057581 backport][3.8] Mention encoding in `yarl.URL` (#7355)
patchback[bot] Jul 9, 2023
8d45f9c
[PR #7333/3a54d378 backport][3.8] Fix TLS transport is `None` error (…
patchback[bot] Jul 9, 2023
3577b1e
[PR #7359/7911f1e9 backport][3.8]  Set up secretless publishing to P…
patchback[bot] Jul 9, 2023
01d9b70
[PR #7370/22c264ce backport][3.8] fix: Spelling error fixed (#7371)
patchback[bot] Jul 18, 2023
f07e9b4
[PR #7373/66e261a5 backport][3.8] Drop azure mention (#7374)
patchback[bot] Jul 18, 2023
9337fb3
Fix bump llhttp to v8.1.1 (#7367) (#7377)
Dreamsorcerer Jul 18, 2023
135a45e
Improve error messages from C parser (#7366) (#7380)
Dreamsorcerer Jul 18, 2023
7c02129
 Bump pypa/cibuildwheel to v2.14.1
webknjaz Jul 19, 2023
9c13a52
Bump aiohttp to v3.8.5 a security release
webknjaz Jul 9, 2023
8d701c3
Fix PermissionError when loading .netrc (#7237) (#7378) (#7395)
jgosmann Jul 22, 2023
8129d26
[PR #7480/1fb06bbc backport][3.8] Fix error pointer on linebreaks (#7…
patchback[bot] Aug 6, 2023
f92b27b
Update to LLHTTP 9 (#7485) (#7487)
Dreamsorcerer Aug 6, 2023
a0d234d
Use lenient headers for response parser (#7490) (#7492)
Dreamsorcerer Aug 7, 2023
8c4ec62
[PR #7518/8bd42e74 backport][3.8] Fix GunicornWebWorker max_requests_…
patchback[bot] Aug 12, 2023
5946c74
CookieJar - return 'best-match' and not LIFO (#7577) (#7588)
Dreamsorcerer Sep 7, 2023
b30c0cd
Remove chardet/charset-normalizer. (#7589)
john-parton Sep 9, 2023
bcc416e
[PR #7647/1303350e backport][3.8] Upgrade to llhttp 9.1.3 (#7648)
patchback[bot] Oct 3, 2023
8a3977a
[PR #7272/b2a7983a backport][3.8] Fix Read The Docs config (#7650)
patchback[bot] Oct 3, 2023
d5c12ba
[PR #7661/85713a48 backport][3.8] Update Python parser for RFCs 9110/…
patchback[bot] Oct 6, 2023
89b7df1
Allow lax response parsing on Py parser (#7663) (#7664)
Dreamsorcerer Oct 6, 2023
8c128d4
[PR #7651/45f98b7d backport][3.8] Fix BadStatusLine message (#7666)
patchback[bot] Oct 6, 2023
996de26
Release v3.8.6 (#7668)
Dreamsorcerer Oct 7, 2023
b51610b
[PR #7749/0dc39e46 backport][3.8] Enable testing merge queues @ GitHu…
patchback[bot] Oct 26, 2023
4ad78b3
Increment version to 3.12.14.dev0 (#11216)
bdraco Jun 14, 2025
7839460
Bump pydantic from 2.11.6 to 2.11.7 (#11219)
dependabot[bot] Jun 16, 2025
8264fce
Bump certifi from 2025.4.26 to 2025.6.15 (#11220)
dependabot[bot] Jun 16, 2025
2ad7568
Bump mypy from 1.16.0 to 1.16.1 (#11222)
dependabot[bot] Jun 17, 2025
ed11b39
Bump multidict from 6.4.4 to 6.5.0 (#11223)
dependabot[bot] Jun 17, 2025
5444eb6
Bump pytest from 8.4.0 to 8.4.1 (#11229)
dependabot[bot] Jun 18, 2025
6aea2ce
Bump urllib3 from 2.4.0 to 2.5.0 (#11230)
dependabot[bot] Jun 19, 2025
6179c76
Bump pygments from 2.19.1 to 2.19.2 (#11238)
dependabot[bot] Jun 23, 2025
39e2b77
Bump sigstore/gh-action-sigstore-python from 3.0.0 to 3.0.1 (#11239)
dependabot[bot] Jun 23, 2025
b7dadd9
Bump multidict from 6.5.0 to 6.5.1 (#11241)
dependabot[bot] Jun 25, 2025
ff09341
Patchback/backports/3.13/4872fce3426119e63e1a892c39b474786dafddac/pr …
KGuillaume-chaps Jun 26, 2025
9d61fc4
[PR #11243/f01cb5e1 backport][3.13] Ignore empty parts when parsing C…
patchback[bot] Jun 28, 2025
84a2bf1
Bump multidict from 6.5.1 to 6.6.2 (#11251)
dependabot[bot] Jun 30, 2025
1826cf0
Bump pytest-xdist from 3.7.0 to 3.8.0 (#11257)
dependabot[bot] Jul 2, 2025
4d078e0
Bump multidict from 6.6.2 to 6.6.3 (#11254)
dependabot[bot] Jul 2, 2025
7577668
Bump coverage from 7.9.1 to 7.9.2 (#11259)
dependabot[bot] Jul 3, 2025
30c44b3
Bump cryptography from 45.0.4 to 45.0.5 (#11260)
dependabot[bot] Jul 3, 2025
c9b8548
[PR #11234/a83597fa backport][3.13] Document exceptions raised by sen…
patchback[bot] Jul 3, 2025
133e254
[PR #11234/a83597fa backport][3.12] Document exceptions raised by sen…
patchback[bot] Jul 3, 2025
9571860
Bump aiosignal from 1.3.2 to 1.4.0 (#11267)
dependabot[bot] Jul 4, 2025
1f5c5a8
Bump typing-extensions from 4.14.0 to 4.14.1 (#11275)
dependabot[bot] Jul 7, 2025
2f9b899
Bump pypa/cibuildwheel from 3.0.0 to 3.0.1 (#11278)
dependabot[bot] Jul 7, 2025
ce3c0a7
Bump aiosignal from 1.3.2 to 1.4.0 (#11267) (#11279)
Dreamsorcerer Jul 7, 2025
5f4b36c
[PR #11280/91108c90 backport][3.13] Bump the minimum supported versio…
patchback[bot] Jul 7, 2025
0389371
[PR #11280/91108c90 backport][3.12] Bump the minimum supported versio…
patchback[bot] Jul 7, 2025
41115b7
Add trailer parsing logic (#11269) (#11286)
Dreamsorcerer Jul 9, 2025
e8d774f
Add trailer parsing logic (#11269) (#11287)
Dreamsorcerer Jul 9, 2025
8790eb0
[PR #11289/e38220fc backport][3.13] Fix ClientSession.close() hanging…
patchback[bot] Jul 9, 2025
edf2abd
[PR #11289/e38220fc backport][3.12] Fix ClientSession.close() hanging…
patchback[bot] Jul 9, 2025
d176905
Bump pytest-codspeed from 3.2.0 to 4.0.0 (#11295)
dependabot[bot] Jul 10, 2025
ffb9a33
[PR #11290/16703bb9 backport][3.13] Fix file uploads failing with HTT…
patchback[bot] Jul 10, 2025
13b20a1
[PR #11290/16703bb9 backport][3.12] Fix file uploads failing with HTT…
patchback[bot] Jul 10, 2025
90b6cf6
Release 3.12.14 (#11298)
Dreamsorcerer Jul 10, 2025
bc6d87d
Merge branch '3.8' into 3.12
Dreamsorcerer Jul 10, 2025
ebb2620
Merge branch '3.12' into 3.13
Dreamsorcerer Jul 10, 2025
3d969a3
Merge branch '3.13'
Dreamsorcerer Jul 10, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
59 changes: 59 additions & 0 deletions CHANGES.rst
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,65 @@

.. towncrier release notes start

3.12.14 (2025-07-10)
====================

Bug fixes
---------

- Fixed file uploads failing with HTTP 422 errors when encountering 307/308 redirects, and 301/302 redirects for non-POST methods, by preserving the request body when appropriate per :rfc:`9110#section-15.4.3-3.1` -- by :user:`bdraco`.


*Related issues and pull requests on GitHub:*
:issue:`11270`.



- Fixed :py:meth:`ClientSession.close() <aiohttp.ClientSession.close>` hanging indefinitely when using HTTPS requests through HTTP proxies -- by :user:`bdraco`.


*Related issues and pull requests on GitHub:*
:issue:`11273`.



- Bumped minimum version of aiosignal to 1.4+ to resolve typing issues -- by :user:`Dreamsorcerer`.


*Related issues and pull requests on GitHub:*
:issue:`11280`.




Features
--------

- Added initial trailer parsing logic to Python HTTP parser -- by :user:`Dreamsorcerer`.


*Related issues and pull requests on GitHub:*
:issue:`11269`.




Improved documentation
----------------------

- Clarified exceptions raised by ``WebSocketResponse.send_frame`` et al.
-- by :user:`DoctorJohn`.


*Related issues and pull requests on GitHub:*
:issue:`11234`.




----


3.12.13 (2025-06-14)
====================

Expand Down
2 changes: 0 additions & 2 deletions CHANGES/11234.doc.rst

This file was deleted.

1 change: 0 additions & 1 deletion CHANGES/11269.feature.rst

This file was deleted.

1 change: 0 additions & 1 deletion CHANGES/11270.bugfix.rst

This file was deleted.

1 change: 0 additions & 1 deletion CHANGES/11273.bugfix.rst

This file was deleted.

1 change: 0 additions & 1 deletion CHANGES/11280.misc.rst

This file was deleted.

6 changes: 3 additions & 3 deletions tests/test_client_functional.py
Original file line number Diff line number Diff line change
Expand Up @@ -5368,7 +5368,7 @@ async def test_file_upload_307_308_redirect(
This demonstrates the bug where file payloads get incorrect Content-Length
on redirect because the file position isn't reset.
"""
received_bodies: List[bytes] = []
received_bodies: list[bytes] = []

async def handler(request: web.Request) -> web.Response:
# Store the body content
Expand Down Expand Up @@ -5432,7 +5432,7 @@ async def test_file_upload_301_302_redirect_non_post(

Per RFC 9110, 301/302 redirects should preserve the method and body for non-POST requests.
"""
received_bodies: List[bytes] = []
received_bodies: list[bytes] = []

async def handler(request: web.Request) -> web.Response:
# Store the body content
Expand Down Expand Up @@ -5499,7 +5499,7 @@ async def test_file_upload_307_302_redirect_chain(
2. 302 changes POST to GET and drops the body
3. No body leaks to the final GET request
"""
received_requests: List[Dict[str, Any]] = []
received_requests: list[dict[str, Any]] = []

async def handler(request: web.Request) -> web.Response:
# Store request details
Expand Down
2 changes: 1 addition & 1 deletion tests/test_http_parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -1344,7 +1344,7 @@ async def test_request_chunked_reject_bad_trailer(parser: HttpRequestParser) ->
def test_parse_no_length_or_te_on_post(
loop: asyncio.AbstractEventLoop,
protocol: BaseProtocol,
request_cls: Type[HttpRequestParser],
request_cls: type[HttpRequestParser],
) -> None:
parser = request_cls(protocol, loop, limit=2**16)
text = b"POST /test HTTP/1.1\r\n\r\n"
Expand Down
Loading