datalets 1.0.0 — the stability release
datalets is 1.0: a stable, production-hardened API for partition-then-fit machine learning.
No new surface in this release — 1.0 is the outcome of a rigorous pre-release audit. A 32-agent adversarial review swept eight dimensions (scikit-learn contract, serialization, statistical validity, degenerate inputs, concurrency, documentation truthfulness, API ergonomics, property-based fuzzing), and every finding was independently re-verified with a mandatory reproduction before being fixed. 21 code defects and 3 documentation defects fixed; every code fix carries a regression test.
Highlights
- Group safety everywhere:
fit(groups=)with the default integercvnow upgrades to a group-aware splitter per slice — previously groups were silently ignored and identity leakage went undetected (0.945 leaked → 0.71 honest OOF F1 on a group-memorisable benchmark). - Honest statistics: fold-score standard errors now use the sample standard deviation (
ddof=1); the previousddof=0understated every SE (and narrowed the one-SE simplicity band) by 10–18% at typical fold counts. - Exception-safe fit state: all six estimators leave themselves properly unfitted when a fit raises — no more silently mislabeled predictions after a caught refit failure — and a failed fit stops the progress heartbeat instead of printing "still working" forever.
- Ensemble parity:
DataletEnsemble*now pass throughgroups=, accept NaN when members impute (missing=), and honor a memberflag_rateobjective on the blended probabilities. - Hardened checkpointing: structurally-wrong cache entries cost one recompute instead of crashing; keys include the sklearn/numpy versions so cached scorings never survive an ML-stack upgrade.
- Clear errors for every foreseeable misuse: multiclass +
threshold_objective,cv < 2, unknown metrics underclusterer="auto", empty candidate lists, string regression targets, zero/negative sample weights, bare-stringexclude_candidates, unaffordable auto grids — all raise a namedValueErrorinstead of crashing later or passing silently. - Docs you can execute: every Python block in README and DOCUMENTATION runs as written; preset tables and parameter lists verified against the code.
602 passed, 13 xfailed, 4 xpassed. See CHANGELOG.md for the complete list.