security: require Python 3.10+, dropping a vulnerable resolution branch - #14
security: require Python 3.10+, dropping a vulnerable resolution branch#14cdbartholomew wants to merge 1 commit into
Conversation
#11 closed the critical langchain-core advisory, but had a side effect worth correcting. langchain-core 1.6.1 requires Python 3.10+, while this package still declared `requires-python = ">=3.9"`. uv therefore split the resolution, pinning an older set for the 3.9 branch: urllib3 2.6.3 (python < 3.10) vs 2.7.0 (>= 3.10) requests 2.32.5 (python < 3.10) vs 2.34.2 (>= 3.10) orjson 3.11.5 (python < 3.10) vs 3.12.0 (>= 3.10) Anyone installing under 3.9 got the left-hand column, which carries three high and one medium advisory: urllib3 2.6.3 GHSA-mf9v-mfxr-j63j decompression-bomb bypass high urllib3 2.6.3 GHSA-qccp-gfcp-xxvc headers forwarded cross-origin high orjson 3.11.5 GHSA-hx9q-6w63-j58v unbounded recursion high requests 2.32.5 GHSA-gc5v-m9x4-r6x2 insecure temp file reuse medium Raising `requires-python` to >=3.10 collapses the split. It is also honest: the package's primary dependency dropped 3.9, so claiming 3.9 support was already inaccurate. - `requires-python` >=3.9 -> >=3.10 - removed the `Programming Language :: Python :: 3.9` classifier - CI matrix 3.9-3.13 -> 3.10-3.13 ## Verification Every dual resolution is gone except `websockets` (16.1.1 / 17.1), and neither of those carries an advisory. Single resolutions now: langchain-core 1.6.1 urllib3 2.7.0 requests 2.34.2 orjson 3.12.0 h11 0.16.0 `uv sync --frozen --all-groups` clean; imports resolve and VectorizeRetriever still has BaseRetriever in its MRO; urllib3 2.7.0 and requests 2.34.2 confirmed at runtime. Claude-Session: https://claude.ai/code/session_01SK2htrNEFAj2VuxKWqFavo
Sweep 2026-09-05 — this PR now has alert numbers, and one real regressionTwo things changed since this PR was opened. 1. Dependabot alerts are live now, and this PR closes all 11The alerts endpoint returned an empty array in every state when #12 was filed. It no longer does — the repo is being scanned, and there are 11 open alerts, all on
The left column is the No competing PR was opened today — this branch already covers the whole queue. 2.
|
#11 closed the critical langchain-core advisory, but had a side effect worth correcting.
The problem
langchain-core1.6.1 requires Python 3.10+, while this package still declaredrequires-python = ">=3.9". uv therefore split the resolution, pinning an older set for the 3.9 branch:Anyone installing under 3.9 got the left-hand column, which carries three high and one medium advisory:
The 3.10+ path was clean throughout; only the 3.9 branch was affected. The CI matrix does test 3.9, so this was reachable.
The fix
Raising
requires-pythonto>=3.10collapses the split. It is also simply honest: the package's primary dependency dropped 3.9, so claiming 3.9 support was already inaccurate.requires-python>=3.9→>=3.10Programming Language :: Python :: 3.9classifier3.9–3.13→3.10–3.13Verification
Every dual resolution is gone except
websockets(16.1.1 / 17.1) — neither of those carries an advisory. Single resolutions now:uv sync --frozen --all-groupsclean. Imports resolve,VectorizeRetrieverstill hasBaseRetrieverin its MRO, andurllib3 2.7.0/requests 2.34.2confirmed at runtime.Note the repo's two tests still fail at setup on a
402fromapi.vectorize.io— unrelated to this change, and true on every run since at least 2025-08-19.