Require brotli 1.2.0 in the brotli extra - #1141
Conversation
|
Docs preview: https://3a00219f-httpx2-docs.pydantic.workers.dev |
Merging this PR will not alter performance
Comparing Footnotes
|
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: a7090a98ed
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
## 2.12.0 (August 18th, 2026) ### Changed * Use `backports.zstd` for Zstandard decoding on Python 3.13 and earlier. ([#1146](pydantic/httpx2#1146)) ### Fixed * Bound peak memory while streaming compressed responses and close response streams when decoding fails. ([#1126](pydantic/httpx2#1126)) ## 2.11.0 (August 18th, 2026) ### Added * Add the public `Origin` value object and `URL.origin` property for normalized, hashable origin comparisons. ([#1134](pydantic/httpx2#1134)) ### Changed * Require Brotli 1.2.0 or later for the `brotli` extra. ([#1141](pydantic/httpx2#1141)) ### Fixed * Restore deprecated status code aliases. ([#1135](pydantic/httpx2#1135)) * Extract HTTP/2 release notes from changelog headings correctly. ([#1136](pydantic/httpx2#1136)) * Respect explicit `Transfer-Encoding` headers and expose buffered request body lengths to WSGI applications. ([#1137](pydantic/httpx2#1137)) * Validate multipart part header names and values before serialization. ([#1142](pydantic/httpx2#1142))
Summary
Raise the minimum
brotli/brotlicffiin thebrotliextra to the first release that can bound decompression output.brotli 1.2.0(2025-11-05) adds anoutput_buffer_limitargument toDecompressor.process(), along with a companioncan_accept_more_data()method:Without it, a single
process()call inflates a whole chunk in one allocation, so there is no way to decode a brotli body in bounded pieces. Requiring1.2.0lets the decoders rely on that argument being present rather than probing for it at runtime.This is split out from #1126 so the packaging change lands on its own, ahead of the decoder work that depends on it.
Wheel coverage is not reduced for any supported interpreter:
1.2.0ships wheels for cp310–cp314, whereas1.1.0stopped at cp313.Validation
pytest tests/httpx2 -q— 1721 passed, 1 skippedscripts/check— passedChecklist