Skip to content

views-frames 2.0.0

Latest

Choose a tag to compare

@Polichinel Polichinel released this 18 Aug 12:55
· 2 commits to main since this release

A frame's index must actually be an index.

Until now you could hand a frame anything as its index — a different frame, or a bare object with an n_rows attribute — and it was accepted. The frame was built, it looked fine, and the published conformance suite said it was fine. That now raises TypeError.

If you pass a SpatioTemporalIndex, you will not notice this release. That is what the type hint has always required and what every example does. Change your constraint, re-lock, carry on:

- views-frames = ">=1.10.2,<2"
+ views-frames = ">=2.0.0,<3"

This is the package's first MAJOR and the first move of CONFORMANCE_FLOOR since the v1.0.0 freeze (1.0.02.0.0). Decision, reasoning and full migration: ADR-028.

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, naming what was expected
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.

Why it was worth a MAJOR

Every summarizer reads .values and never .index, so a frame built with a non-index returned numerically correct answers — and assert_summarizer_contract certified it. That checker is published under ADR-016 and consumers run it in their own CI, and docs/CICs/Conformance.md names "a checker that cannot detect a violation" as the failure mode it must never have. A false pass is worse than no checker, because it is evidence you are entitled to rely on.

Found by a falsification audit run against the claim that this package was finished.

Also in this release

  • frame.values is write-protected (register C-66) — as a read-only view, so zero-copy and mmap survive and your own array stays writeable.
  • map_estimate rejects non-finite draws (C-57), matching exceedance and expected_shortfall.
  • CONFORMANCE_FLOOR2.0.0. Your CI will assert a new contract version. First move in the package's history.

Adoption issues are open in views-faoapi, views-postprocessing and views-crafdapi.

Full detail in CHANGELOG.md.