Skip to content

datalets 1.0.0 — the stability release

Choose a tag to compare

@nashit8421 nashit8421 released this 30 Jul 03:57

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 integer cv now 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 previous ddof=0 understated 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 through groups=, accept NaN when members impute (missing=), and honor a member flag_rate objective 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 under clusterer="auto", empty candidate lists, string regression targets, zero/negative sample weights, bare-string exclude_candidates, unaffordable auto grids — all raise a named ValueError instead 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.