Release Notes
v2.3.0
Section titled “v2.3.0”Type: compatible minor release.
Main points:
missing_policy="merge"adds auditable missing-value merge for pandas workflowsmissing_merge_criterion="nearest_event_rate"selects the closest regular bin by fit-time event-rate distancemissing_merge_criterion="nearest_woe"selects the closest regular bin by fit-time WoE distancemissing_merge_fallbacksupportsseparate_binandraisemissing_profile_,missing_decision_log_,missing_merge_candidates_, andmissing_merge_map_preserve the audit trailreturn_woe=Trueroutes merged missing values to the learned destination bin before mapping WoE- bundle and reporting exports persist merge criterion, fallback, candidates, decision log, and merge map
standard,separate_bin,forbid,legacyalias compatibility, andRiskBands is Binnerare preserved- pt-BR/en docs and examples describe both merge criteria
Notes:
missing_policy="standard"remains the default- PySpark merge is not implemented; PySpark raises an explicit boundary for
missing_policy="merge" - no
temporal_stable,monotonic_neighbor, custom merge criteria, opaque imputation, or PySpark 4.x support is added
Documentation update after v2.2.0
Section titled “Documentation update after v2.2.0”Type: docs-only preparation.
Status: documentation update after v2.2.0; no package version bump.
Main points:
- adds a focused missing-policy guide for
standard,separate_bin, andforbid - adds small pandas and PySpark missing-policy demos
- improves docs-site navigation for missing values, bundle fields, and audit logs
- keeps PySpark documented as optional through
riskbands[spark] - does not change core behavior, package version, publish status, tag, or release artifacts
Historical notes:
- at that documentation point, merge policies remained future work
- no opaque intelligent imputation is added
- i18n is handled as a later docs-site sprint, without changing package release status
v2.2.0
Section titled “v2.2.0”Compatible minor release focused on auditable missing-value policy and compatibility.
Main points:
missing_policy="standard"is the default and preserves the Sprint A baseline behaviormissing_policy="separate_bin"is opt-in and creates explicitMissingbins, including categorical missing valuesmissing_policy="forbid"raises duringfitortransformwhen selected features contain missing valuesstandardis the canonical name for the historical maximize-oriented score strategylegacyremains accepted as a compatibility alias forstandard- pandas and PySpark inputs are supported by the missing-policy contract
- bundles persist
missing_policy,effective_missing_policy,missing_profile, andmissing_decision_log - old bundles without these fields continue to load as
standard - PySpark remains optional through
riskbands[spark]withpyspark>=3.5,<4
Notes:
- merge policies such as
merge_nearest_woeandmerge_nearest_event_rateare not part of this target - no opaque intelligent imputation is added
- a full distributed Spark fitting backend is not part of this target
v2.1.0
Section titled “v2.1.0”Compatible minor release focused on the preferred RiskBands name, optional
PySpark paths, and validation profiles.
Main points:
RiskBandsis the preferred public estimator name;Binnerremains compatiblemin_n_binsrecords a soft quality status without forcing artificial cutssample_sizecontrols PySpark fit sampling- pandas/PySpark inputs are detected automatically in
fitandtransform - pandas outputs remain pandas; PySpark outputs remain PySpark
fit(validate=True)andtransform(validate=True)create validation profiles with separate fit and transform reports- v2.1.0 bundles persist schema/version metadata, profiles, separate validation reports, sampling/backend metadata, and data schema when available
- PySpark remains optional through
riskbands[spark]withpyspark>=3.5,<4
Notes:
- PySpark fit uses controlled sampling plus the current pandas engine
- PySpark transform and validation profiles use native Spark expressions and aggregated profiles
- A full distributed Spark fitting backend is not part of this release
v2.0.3
Section titled “v2.0.3”Patch release focused on release hardening and deterministic operational behavior.
Main points:
- stronger categorical handling for rare categories, missing values, and unknown categories
- safer
export_bundle(...)outputs with sanitized names and a traceable manifest - explicit
force_numericsupport - stronger quality gates with
ruff, coverage-enabledpytest,pip check,bandit, andpip-audit - supply-chain constraints to avoid the vulnerable
ortools 9.11.4210 -> protobuf 5.26.1resolver path - README and release governance updates for pandas, Spark/Databricks usage, overrides, auditable export, assets, and local prompts
v2.0.2
Section titled “v2.0.2”Release focused on real auditability, friendlier inspection, and a more robust public experience.
Main points:
- new public export layer with
export_binnings_json(...) - new auditable bundle with
export_bundle(...) - stronger
metadata_, including score weights and effective fit context - new public tables
score_table()andaudit_table() - more discoverable aliases for bin inspection
- new public plot layer for bad rate, heatmap, temporal share, and score components
- fix to temporal alignment in the supervised strategy, improving diagnostics and visualizations
- documentation benchmark assets regenerated with wider charts and fewer empty traces
- docs site reinforced for onboarding, audit, and visual interpretation
v2.0.1
Section titled “v2.0.1”Patch release to close the public publication with consistency:
- fixes
riskbands.__version__resolution in the installed package outside the source tree - adds regression test for distributed metadata version reading
- fully preserves the rename to
stable, the new documentation, and the release flow for thev2series
v2.0.0
Section titled “v2.0.0”Public consolidation release:
- definitive rename of the public
score_strategyvalue fromgeneralization_v1tostable - removal of the old name from the public API, examples, smoke tests, labels, and main documentation
- docs site reorganized for onboarding, first steps, and clearer navigation for new users
- dedicated pages for
score_strategy,normalization_strategy,woe_shrinkage_strength, Optuna, and output interpretation - notebooks and examples aligned with the friendly sklearn/pandas-style flow
- explicit release flow preparation for validation, GitHub Pages, and PyPI publication through Trusted Publishing
v1.2.0
Section titled “v1.2.0”Important evolution of public API ergonomics:
Binnermore aligned with sklearn and pandas conventions- friendly support for
fit(df, y="target", column="feature") transform(...)andfit_transform(...)with more predictable behavior forDataFrameandSeries- public aliases such as
max_n_binsandmonotonic_trend - new inspection methods:
binning_table(),summary(),report(),score_details(),diagnostics(), andplot_stability() - easier-to-discover post-fit attributes
- new Plotly notebook with synthetic data for library onboarding
v1.1.0
Section titled “v1.1.0”Important evolution of the scoring layer:
- legacy path preserved explicitly as
legacy - new temporal objective introduced and now exposed publicly as
stable - configurable weights,
absolutenormalization, and WoE shrinkage - consistent integration with
Binner,BinComparator, auditable reports, and Optuna - new minimal example comparing
legacyversusstable
v1.0.0
Section titled “v1.0.0”Important structural changes already reflected in the repository:
- destructive rename to
riskbands Binnerestablished as the main public class- legacy
nasabinningnamespace removed - documentation direction oriented toward benchmarks established in repository examples