Originally created by: fu351
Splits the river dependency by Python version: 3.12+ keeps the unpinned >=0.21 floor; 3.11 gets >=0.21,<0.26.
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.
river<0.26 and collects again; 3.12/3.13 stay on the current floor.Lift the cap when river ships a 3.11-safe release.
Ticket changed by: fu351