acoustic-carpenter-78188
12/06/2025, 5:25 AM## 2.6.0
## 🚀 urllib3 is fundraising for HTTP/2 support
urllib3 is raising ~$40,000 USD to release HTTP/2 support and ensure long-term sustainable maintenance of the project after a sharp decline in financial support. If your company or organization uses Python and would benefit from HTTP/2 support in Requests, pip, cloud SDKs, and thousands of other projects please consider contributing financially to ensure HTTP/2 support is developed sustainably and maintained for the long-haul.
Thank you for your support.
## Security
• Fixed a security issue where streaming API could improperly handle highly compressed HTTP content ("decompression bombs") leading to excessive resource consumption even when a small amount of data was requested. Reading small chunks of compressed data is safer and much more efficient now. (CVE-2025-66471 reported by `@​Cycloctane`, 8.9 High, GHSA-2xpw-w6gg-jr37)
• Fixed a security issue where an attacker could compose an HTTP response with virtually unlimited links in theheader, potentially leading to a denial of service (DoS) attack by exhausting system resources during decoding. The number of allowed chained encodings is now limited to 5. (CVE-2025-66418 reported by `@​illia-v`, 8.9 High, GHSA-gm62-xv2j-4w53)Content-Encoding
> [!IMPORTANT]
>
> • If urllib3 is not installed with the optionalextra, but your environment contains a Brotli/brotlicffi/brotlipy package anyway, make sure to upgrade it to at least Brotli 1.2.0 or brotlicffi 1.2.0.0 to benefit from the security fixes and avoid warnings. Prefer usingurllib3[brotli]to install a compatible Brotli package automatically.urllib3[brotli]
> • If you use custom decompressors, please make sure to update them to respect the changed API of.urllib3.response.ContentDecoder
## Features
• Enabled retrieval, deletion, and membership testing inusing bytes keys. (#3653)HTTPHeaderDict
• Added host and port information to string representations of. (#3666)HTTPConnection
• Added support for Python 3.14 free-threading builds explicitly. (#3696)
## Removals
• Removed themethod in favor ofHTTPResponse.getheaders(). Removed theHTTPResponse.headersmethod in favor ofHTTPResponse.getheader(name, default). (#3622)HTTPResponse.headers.get(name, default)
## Bugfixes
• Fixed redirect handling inwhen an integer is passed for the retries parameter. (#3649)urllib3.PoolManager
• Fixedwhen used in Emscripten with no explicit port. (#3664)HTTPConnectionPool
• Fixed handling ofwith expandable variables. (#3700)SSLKEYLOGFILE
## Misc
• Changed theextra to installzstdinstead ofbackports.zstdon Python 3.13 and before. (#3693)zstandard
• Improved the performance of content decoding by optimizingclass. (#3710)BytesQueueBuffer
• Allowed building the urllib3 package with newer setuptools-scm v9.x. (#3652)
• Ensured successful urllib3 builds by setting Hatchling requirement to ≥ 1.27.0. (#3638)Changelog Sourced from urllib3's changelog.
# 2.6.0 (2025-12-05)
## Security
• Fixed a security issue where streaming API could improperly handle highly compressed HTTP content ("decompression bombs") leading to excessive resource consumption even when a small amount of data was requested. Reading small chunks of compressed data is safer and much more efficient now. (`GHSA-2xpw-w6gg-jr37 https://github.com/urllib3/urllib3/security/advisories/GHSA-2xpw-w6gg-jr37`__)
• Fixed a security issue where an attacker could compose an HTTP response with virtually unlimited links in theheader, potentially leading to a denial of service (DoS) attack by exhausting system resources during decoding. The number of allowed chained encodings is now limited to 5. (`GHSA-gm62-xv2j-4w53 https://github.com/urllib3/urllib3/security/advisories/GHSA-gm62-xv2j-4w53`__)Content-Encoding
.. caution::
• If urllib3 is not installed with the optionalextra, but your environment contains a Brotli/brotlicffi/brotlipy package anyway, make sure to upgrade it to at least Brotli 1.2.0 or brotlicffi 1.2.0.0 to benefit from the security fixes and avoid warnings. Prefer using`urllib3[brotli]` to install a compatible Brotli package automatically.urllib3[brotli]
• If you use custom decompressors, please make sure to update them to respect the changed API of.urllib3.response.ContentDecoder
## Features
• Enabled retrieval, deletion, and membership testing inusing bytes keys. (`[#3653](https://github.com/urllib3/urllib3/issues/3653) https://github.com/urllib3/urllib3/issues/3653`__)HTTPHeaderDict
• Added host and port information to string representations of. (`[#3666](https://github.com/urllib3/urllib3/issues/3666) https://github.com/urllib3/urllib3/issues/3666`__)HTTPConnection
• Added support for Python 3.14 free-threading builds explicitly. (`[#3696](https://github.com/urllib3/urllib3/issues/3696) https://github.com/urllib3/urllib3/issues/3696`__)
## Removals
• Removed themethod in favor ofHTTPResponse.getheaders(). Removed theHTTPResponse.headersmethod in favor ofHTTPResponse.getheader(name, default). (`[#3622](https://github.com/urllib3/urllib3/issues/3622) https://github.com/urllib3/urllib3/issues/3622`__)HTTPResponse.headers.get(name, default)
## Bugfixes
• Fixed redirect handling inwhen an integer is passed for the retries parameter. (`[#3649](https://github.com/urllib3/urllib3/issues/3649) https://github.com/urllib3/urllib3/issues/3649`__)urllib3.PoolManager
• Fixedwhen used in Emscripten with no explicit port. (`[#3664](https://github.com/urllib3/urllib3/issues/3664) https://github.com/urllib3/urllib3/issues/3664`__)HTTPConnectionPool
• Fixed handling of... (truncated) Commits • `720f484` Release 2.6.0 • `24d7b67` Merge commit from fork • `c19571d` Merge commit from fork • <https://github.com/urllib3/urllib3/commit/816fcf04528bc0f89672e13398eb813dcc892490|`816fc… flyteorg/flytewith expandable variables. (`[#3700](https://github.com/urllib3/urllib3/issues/3700) https://github.com/urllib3/urllib3/issues/3700`__)SSLKEYLOGFILE
acoustic-carpenter-78188
12/07/2025, 9:52 PM