aio-libs
aiohttp
Blog
Docs
Changelog
Blog
Docs
Changelog
Overview
Branches
Benchmarks
Runs
Performance History
Latest Results
Bound the quoted-printable partial-line buffer while streaming The per-line encoder held a partial line in memory until a newline arrived, so a newline-free payload segment accumulated in full and nothing reached the transport until EOF, defeating backpressure. Encode each line in fixed 4096-byte blocks joined by soft line breaks, with block boundaries at fixed offsets from the start of the line, and flush every complete block of the pending partial line as it arrives. Block-wise output differs from a single b2a_qp call (each call restarts its soft-break column counter), so as_bytes() uses the same block segmentation: the wire bytes stay a pure function of the payload bytes regardless of chunking and still decode to the original body, while the writer retains at most one block between write() calls.
2sumtech:fix/multipart-as-bytes-encodings
4 hours ago
Cover a multibyte character split across three sections A three-octet character can land in three different extended sections; exercise that the whole run is still joined before decoding.
2sumtech:fix/rfc2231-continuation-order
4 hours ago
Cover the continuation decode-failure and non-numeric paths Adds tests for octets that stay undecodable once the sections are joined, an unknown charset, and a non-numeric section index, so the new branches are exercised.
2sumtech:fix/rfc2231-continuation-order
5 hours ago
Reference the changelog fragment by PR number AGENTS.md asks for the issue-numbered fragment plus a symlink named after the PR, so towncrier credits both.
2sumtech:fix/multipart-as-bytes-encodings
5 hours ago
Decode adjacent RFC 2231 continuations as a single value Percent-decoding each extended section on its own dropped the whole filename when a multibyte character straddled a section boundary. Join the octets of adjacent extended sections before decoding, and reference the changelog fragment by PR number via a symlink. The changelog fragment no longer uses a :func: role, because content_disposition_filename is not in the API docs and the dangling reference failed the docs build.
2sumtech:fix/rfc2231-continuation-order
5 hours ago
Rename 13495.bugfix.rst to 13501.bugfix.rst
fix-tail-cap
5 hours ago
sort RFC 2231 filename continuations numerically content_disposition_filename() assembled filename*N continuation sections with a lexicographic sort, so filename*10 sorted before filename*2 and any filename split into 10 or more sections was silently truncated after the first two. RFC 2231 Section 3 requires numeric ordering of continuation sections. Sort the sections by their integer index and decode each section according to its own extended (*N*, percent-encoded) or quoted (*N, literal) marker per RFC 2231 Section 4.1, using the charset declared by the initial extended section. This also stops apostrophes inside quoted sections from being misread as an RFC 5987 charset prefix, which previously raised ValueError or dropped parts of the name.
2sumtech:fix/rfc2231-continuation-order
6 hours ago
Document the route metadata change
loonister1:fix/13433-dynamic-routes-with-percent-encodable-fi
9 hours ago
Latest Branches
CodSpeed Performance Gauge
0%
Apply part encodings in MultipartWriter.as_bytes()
#13496
5 hours ago
126ba04
2sumtech:fix/multipart-as-bytes-encodings
CodSpeed Performance Gauge
+1%
Sort RFC 2231 filename continuations numerically
#13500
5 hours ago
dcfbad1
2sumtech:fix/rfc2231-continuation-order
CodSpeed Performance Gauge
0%
Fix limit on message tail
#13501
6 hours ago
d029481
fix-tail-cap
© 2026 CodSpeed Technology
Home
Terms
Privacy
Docs