What changed
views-frames 2.0.0 is the package's first MAJOR. A falsification audit found that the three
frame constructors never type-checked index — they read one attribute off it, n_rows,
and a frame has one. So PredictionFrame(values, another_frame) constructed silently, and the
published assert_summarizer_contract then certified the result: a contract checker
issuing a false pass.
That now raises TypeError. Full decision and migration: ADR-028.
What you need to do
Change the constraint and re-lock. If you pass a real SpatioTemporalIndex — which is what
the type hint has always said — nothing else changes.
What actually breaks
| If your code… |
Before |
Now |
passes a SpatioTemporalIndex as index |
works |
works, unchanged |
passes a frame or other object as index |
silently constructed |
TypeError |
passes a non-index to reindex/reindex_fill |
AttributeError on _level |
TypeError |
mutates frame.values in place |
silently corrupted buffer-sharing frames |
ValueError: read-only |
calls map_estimate on inf/NaN draws |
bare IndexError |
ValueError naming the cause |
Only row 4 can plausibly break working code, and ADR-025 already documented that operation as
unsupported. A quick check: grep -rn "\.values\[" src/ — assignments are the ones to look at,
comparisons are fine.
CONFORMANCE_FLOOR moves to 2.0.0
First move since the v1.0.0 freeze. If you assert the floor anywhere, update the expected value.
You are also two releases behind on a real fix
You are pinned to 1.10.2, so you never picked up 1.11.0, which fixed a defect in the
published MAP-containment law: it was wrong on tied draws, failing ~6% of rows on
zero-inflated integer count posteriors — this platform's primary data shape. Moving to 2.0.0
picks that up too.
🤖 Filed as part of the coordinated MAJOR bump process (views-frames GOVERNANCE.md, register C-13).
Specific to this repo
pyproject.toml:20:
-views-frames = ">=1.10.2,<2"
+views-frames = ">=2.0.0,<3"
Then poetry lock (your poetry.lock currently pins 1.10.2).
This repo volunteered to adopt the C-88 MAP-containment fix first; that fix shipped in 1.11.0
and this is the release that brings it to you.
What changed
views-frames2.0.0 is the package's first MAJOR. A falsification audit found that the threeframe constructors never type-checked
index— they read one attribute off it,n_rows,and a frame has one. So
PredictionFrame(values, another_frame)constructed silently, and thepublished
assert_summarizer_contractthen certified the result: a contract checkerissuing a false pass.
That now raises
TypeError. Full decision and migration: ADR-028.What you need to do
Change the constraint and re-lock. If you pass a real
SpatioTemporalIndex— which is whatthe type hint has always said — nothing else changes.
What actually breaks
SpatioTemporalIndexasindexindexTypeErrorreindex/reindex_fillAttributeErroron_levelTypeErrorframe.valuesin placeValueError: read-onlymap_estimateoninf/NaNdrawsIndexErrorValueErrornaming the causeOnly row 4 can plausibly break working code, and ADR-025 already documented that operation as
unsupported. A quick check:
grep -rn "\.values\[" src/— assignments are the ones to look at,comparisons are fine.
CONFORMANCE_FLOORmoves to2.0.0First move since the v1.0.0 freeze. If you assert the floor anywhere, update the expected value.
You are also two releases behind on a real fix
You are pinned to 1.10.2, so you never picked up 1.11.0, which fixed a defect in the
published MAP-containment law: it was wrong on tied draws, failing ~6% of rows on
zero-inflated integer count posteriors — this platform's primary data shape. Moving to 2.0.0
picks that up too.
🤖 Filed as part of the coordinated MAJOR bump process (views-frames GOVERNANCE.md, register C-13).
Specific to this repo
pyproject.toml:20:Then
poetry lock(yourpoetry.lockcurrently pins1.10.2).This repo volunteered to adopt the C-88 MAP-containment fix first; that fix shipped in 1.11.0
and this is the release that brings it to you.