Skip to content

Adopt views-frames 2.0.0 — index type enforcement + CONFORMANCE_FLOOR 2.0.0 #286

Description

@Polichinel

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions