Release 2.0.0 - #85
Merged
Merged
Conversation
Back-merge main into development after v1.1.0
…1 consequence live Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
…shed docs(register): record the 1.1.0 publish
…factories and the dataframe extra (C-40; #63) BREAKING (ships as 2.0.0, S8). After 1.1.0's DeprecationWarning: - `EvaluationReport.to_dataframe()` and `BaseEvaluationMetrics.evaluation_dict_to_dataframe()` (the `df.loc[:, df.notna().any()]` erasure, register C-40) are deleted, as are the three `make_*_evaluation_dict` factories (unused since 0.4.0; private cleanup). - The `dataframe` extra is gone. pandas moves to the dev group (`>=2.1.1,<3` — 1.5.x cannot install on 3.12, which pyproject declares supported) so the import-purity guard keeps something to prove. - Nothing under `views_evaluation/` mentions pandas; the package-wide AST guard forbids pandas, polars and sklearn imports under any name, the per-module guard now also covers `metrics` and `config_schema`, and a test pins the runtime dependency set to exactly {python, numpy, scipy, views-frames}. - CI: the runtime-only install step asserts pandas AND scikit-learn are absent, then evaluates a frame and emits a MetricFrame (an import-only probe executed no line of the lazy emit path). The verify step imports `views_frames` only. The held workflow text is stored in significant-line form. - tests/test_evaluation_report.py no longer import-skips: ten pandas tests deleted, a Red test pins the five removed names on class and instance, and the FM1 guard (metric with no dataclass field raises) finally has the Red test the CIC claimed. The extra-absent test is transplanted from `to_dataframe()` to `to_metric_frame()`'s views-frames branch (extra name, ImportError type, ERROR log). - Docs: README, integration guide, three CICs, ADR-041, the physical architecture standard. `tests/test_documentation_contracts.py` now registers the removed methods and fails a doc or docstring that shows one as current, with 2.0-era history markers and dated CHANGELOG sections treated as frozen. - Register: C-40 closed, C-15's rationale corrected (the dataclass consumer is `get_schema_results()`), Cluster A down to C-22, D-01's residual updated. 15 → 14. - `examples/benchmark_probabilistic_scaling.py` deleted (never imported this package). Every new or widened guard was observed red on an injected defect before being trusted (C-37): compat shim, `__getattr__` shim, pandas in metrics.py and profiles/, pandas back in runtime deps, extra renamed / type swapped / log deleted on the frames branch, `continue` in place of the FM1 raise, `to_dataframe` shown in a guide, in `[Unreleased]`, and in a docstring. Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
S7: remove to_dataframe(), the DataFrame helper, the dead factories and the dataframe extra (C-40; #63)
Version 1.1.0 → 2.0.0 (MAJOR, ADR-022 §5). CHANGELOG gains the `[2.0.0] —
2026-09-18` section with the §7 checklist worked through; the register gains the
dated release block. §3.2 notifications posted before the tag and cited by comment
ID (views-pipeline-core#515, views-reporting#289). Consumer state measured at the
cut: views-pipeline-core's released 3.2.0 still calls the removed method and pins
^1.0.0; views-reporting's main admits 2.0.0, its released v0.3.3 does not.
The release review found fifteen guard and doc defects, fixed here and each seen
red on an injected defect:
- Import purity: one walker, one path-keyed allowlist set to the measured census
(a stem key gave profiles/__init__.py the root package's allowance; a string
literal under ANY call made `float("nan")` an import whenever a `nan` package
was importable). Literals are read only under import machinery and its aliases,
`name=` included; `exec`/`eval` are forbidden everywhere; the runtime probe also
saves and loads a MetricFrame. The runtime-dependency pin reads both pyproject
layouts and the extras' contents.
- Logging: `metrics` and `config_schema` added to the logging guard's Level-0
list and to the standard's §5.1 list so the three classifications agree.
- Report: `to_dict()` documents and a test pins that `schemas` is the live
structure; `get_schema_results()` is tested on all three schemas; the public
surface is pinned as an allowlist (class and instance); the FM1 raise is
asserted silent.
- Doc guard: scans the CHANGELOG section of the version being cut (it had frozen
it as history), splits with the shared fence-aware parser, uses word-anchored
removal framings, and drops the five block-wide 2.0-era markers that had widened
the older guards' exemption.
- CI probe: passes an int `timestamp` and the ISO string as `evaluation_timestamp`
(the contract's field is int; the exemplar had mis-stamped provenance), asserts
the type, and derives the row count.
- Docs: README no longer attributes EvaluationReport to the emit layer; the CIC
scopes FM1 to `get_schema_results()`, cites the transplanted extra-absent test,
and is dated; the CHANGELOG states plainly that both releases were cut on the
same day.
Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
release: 2.0.0 — to_dataframe() and the dataframe extra removed (#72)
4 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Story S8 (#72) · Epic #66 · Tracking #73. Brings
developmenttomainfor the 2.0.0 release (MAJOR, ADR-022 §5); thev2.0.0tag and the draft GitHub Release are cut onmainafter this merge.Contents since
v1.1.0: S7 (#83, the removal ofto_dataframe(), its helper, the dead factories and thedataframeextra) and the release commit (#84). Release notes are the[2.0.0] — 2026-09-18section ofCHANGELOG.mdwith the ADR-022 §7 checklist. Consumer notifications (§3.2) were posted before the tag on views-pipeline-core#515 and views-reporting#289.Publishing to PyPI happens when the GitHub Release is published, through
publish_package.yml, which runs the full suite first.🤖 Generated with Claude Code