Repository navigation
Bump urllib3, idna, pygments and virtualenv to fixed versions - #32
Merged
vpetersson merged 1 commit intoOct 21, 2026
Merged
Conversation
urllib3 2.6.3 -> 2.8.0 (GHSA-gh4c-6fx4-qh6g, GHSA-vxq7-64xx-v4gw, GHSA-mf9v-mfxr-j63j, GHSA-8988-9cw3-xx77, GHSA-qccp-gfcp-xxvc). libtea imports urllib3 directly (urllib3.util.retry.Retry in _http.py) and streams responses through it, so declare it as a runtime dependency with a >=2.8.0 floor. idna 3.11 -> 3.15 (GHSA-65pc-fj4g-8rjx). requests passes non-ASCII hosts to idna.encode(), and endpoint URLs from a server's .well-known/tea document reach requests unvalidated, so add a >=3.15 floor so installs pick up the fix. pygments 2.19.2 -> 2.20.0 (GHSA-5239-wwwm-4pmq) and virtualenv 20.39.0 -> 21.7.13 (GHSA-p58f-9548-mpm2, GHSA-94p9-xgh2-xp45, GHSA-x78j-v8h9-3j2q, GHSA-9h9j-4vrj-gf7g) are lockfile-only bumps; virtualenv is a dev-only dependency (via pre-commit) and pygments is only pulled in by rich/pytest. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
Copilot encountered an error: Your billing is not configured or you have Copilot licenses from multiple standalone organizations or enterprises. To use AI Credits, select a billing entity via the GitHub site, under Settings > Copilot > Features.
An organization owner can choose the repository organization as the billing source for reviews requested by members with a paid Copilot license. Learn about Copilot code review billing. Review the Copilot code review billing settings.
vpetersson
approved these changes
Oct 21, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Bumps four packages to the first release that fixes their published advisories:
pyproject.toml+uv.lockpyproject.toml+uv.lockuv.lockonlyuv.lockonly (dev group, via pre-commit)virtualenv 21 adds
python-discovery1.6.4 to the lockfile. No other packages change, and the lockfile revision stays the same.Why the two new runtime floors
_http.pyimportsurllib3.util.retry.Retrydirectly, so urllib3 was already a direct dependency that only came in through requests.download_with_hashes()streams artifact bodies withiter_content(), which uses urllib3'sstream()/read_chunked(). A malicious or compromised artifact server can use that path to trigger the chunked-Deflate infinite loop (GHSA-gh4c-6fx4-qh6g) and the unbounded chunk-size buffering (GHSA-vxq7-64xx-v4gw).idna.encode()on non-ASCII hostnames. Endpoint URLs from a domain's.well-known/teadocument (TeaEndpoint.url, a plainstr) go toprobe_endpoint()without hostname validation. With idna 3.11, preparing a request to a host made of 50,000 copies of٠took about 146 s of CPU. With 3.15 it took about 0.01 s.Without these floors, installing libtea from PyPI could leave users on a vulnerable urllib3 or idna, depending on what else is in their environment.
pygments and virtualenv are not in the wheel's
Requires-Dist(virtualenv is dev-only; pygments only comes in through rich/pytest), so they only need lockfile bumps. This also keeps the lockfile-based SBOM clean.How I checked
uv sync --extra cli,ruff check .,ruff format --check .all pass.uv run pytest --cov-fail-under=90: 877 passed on Python 3.11, 3.12 and 3.13 (coverage 94.61%).uv build: the wheel metadata now listsRequires-Dist: idna<4,>=3.15andurllib3<3,>=2.8.0.pre-commit run --all-files: the ruff hooks pass, and their environment builds with virtualenv 21.7.13. The mypy hook reports_cli_fmt.py:635: Unused "type: ignore". It fails the same way on currentmaster, so this change didn't cause it.🤖 Generated with Claude Code