All notable changes to pickbuckets are documented here. The format follows
Keep a Changelog and the project uses
Semantic Versioning.
0.5.0 - 2026-06-03
Phase 5 — production and performance.
- Experimental streaming bucketing under
pickbuckets.experimental:StreamingEqualFrequencyBucketwith chunked.partial_fit()and a boundedStreamingHistogramquantile sketch. Fitting is approximate; the produced rule applies through the same pure-Python runtime as the exact bucketers. Approximation error is bounded bymax_centroidsand converges to exact edges as it grows. - Optional matplotlib plotting helpers under
pickbuckets.plotting(plot_bucket_counts,plot_target_rate,plot_woe), behind thepickbuckets[plot]extra. Each helper returns a matplotlibAxesfor further customisation and never forces display. - Reproducible benchmark suite in
benchmarks/run_benchmarks.pycovering fit/transform across sizes, the runtime apply path versus adapter paths, and high-cardinality categorical grouping, with--jsonoutput for before/after comparisons. Each benchmark also reports peak heap memory viatracemalloc, including a bounded-memory check for large streaming inputs (--no-memoryskips the memory pass). - API reference documentation in
docs/api-reference.md, leading with the export → apply-without-the-stack portability demo.
mypynow recognises matplotlib as an optional, stub-free dependency.
- The core package remains dependency-free; streaming is pure-Python and the no-heavy-deps CI gate is unchanged.
0.4.0 - 2026-06
Phase 4 — advanced and supervised binning.
DecisionTreeBucket,WoEBucket(with WoE/IV, smoothing, minimum-bin-size, and monotonic constraints),ChiMergeBucket, andExternalSplitBucket.- Supervised summaries (
summary_table(),iv_summary()) that expose target rates and counts without leaking raw targets into serialized rules.
0.3.0 - 2026
Phase 3 — real-world robustness.
- Missing-value strategies (
separate,most_frequent,propagate,error). - Numeric boundary strategies (
clip,underflow_overflow,error). - Unseen-category strategies (
other,missing,keep,error). - Typed exceptions and
.summary()rule inspection.
0.2.0 - 2026
Phase 2 — developer experience and integrations.
- Public bucketer classes and scikit-learn-compatible adapters.
- pandas
Series/DataFramesupport and first-class PolarsSeries/DataFrame/LazyFramesupport. AutoBucketsmart type dispatch.
0.1.0 - 2026
Phase 1 — core MVP and portable rule foundation.
- Unified, versioned
Rulemodel with dict/JSON serialization. - Pure-Python rule runtime and a no-heavy-deps CI gate.
- Equal-width, equal-frequency, custom-boundary, and rare-category bucketers.