Skip to content

fix(deps): cap river below 0.26 on Python 3.11 - #452

Merged
fu351 merged 1 commit into
mainfrom
fix/deps/river-py311-cap
Aug 24, 2026
Merged

fix(deps): cap river below 0.26 on Python 3.11#452
fu351 merged 1 commit into
mainfrom
fix/deps/river-py311-cap

Conversation

@fu351

@fu351 fu351 commented Aug 24, 2026

Copy link
Copy Markdown
Collaborator

What

Splits the river dependency by Python version: 3.12+ keeps the unpinned >=0.21 floor; 3.11 gets >=0.21,<0.26.

Why

river 0.26.0's stream/iter_csv.py declares class DictReader(csv.DictReader["FeatureName"]) — a class-level subscript that csv.DictReader only supports on Python >= 3.12. On 3.11 the import dies with TypeError: type 'DictReader' is not subscriptable, which takes down every import of doberman.subjective and, with it, test collection for the whole suite (~230 modules, 2,860 collection errors).

The 3.11 CI leg already fails on every fresh-cache run — see the red legs on #445, #446, #447 (all pre-diagnosed as unrelated to those diffs). main itself is one pip-cache miss away from the same failure.

Root cause was diagnosed by @blackcoderx on #447 — this PR just lands the pin.

Verification

  • CI on this PR is the test: the 3.11 leg resolves river<0.26 and collects again; 3.12/3.13 stay on the current floor.
  • No code changes; CHANGELOG bullet included.

Lift the cap when river ships a 3.11-safe release.

river 0.26.0's iter_csv subscripts csv.DictReader at class level, which
only Python >= 3.12 supports, so importing doberman's subjective layer on
3.11 dies with 'TypeError: type DictReader is not subscriptable' the
moment pip resolves the new release (the 3.11 CI leg already fails on
every fresh-cache run; main is one cache miss away). Environment-marker
split keeps 3.12+ on the unpinned floor.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant