Release Notes
Type: compatible minor release preparation.
Main points:
- Spark transform supports
missing_policy="merge"when a merge decision was learned, using native Spark expressions andreturn_woe=False - Spark fit with missing merge uses a controlled sampled-to-pandas path and records that the merge decision was learned on the sample
- Spark validation/reporting adds
source_profile_, sample-vs-source diagnostics, andmissing_sampling_diagnostics - metadata, bundle outputs, and
audit_report.htmlcarry sampling caveats for Spark sampled fit audit_report.htmlis a narrative standalone HTML report with embedded CSS, print-friendly layout, missing policy explanations, bundle inventory, validation alerts, and limitationsexport_bundle(...)includesaudit_report.htmlby default- docs-site includes a Reveal.js presentation gallery and RiskBands overview deck
- pt-BR/en docs and examples cover missing policy, audit bundle/reporting, and Spark missing merge behavior
Notes:
missing_policy="standard"remains the default- Spark-native full fit is not part of this release target
- Spark
return_woe=Trueis still not supported - no
temporal_stable,monotonic_neighbor, custom merge criteria, opaque imputation, or PySpark 4.x support is added - the audit report supports review, but it does not replace independent formal validation or guarantee regulatory compliance
joblib/PYSEC-2024-277is handled as a documentedpip-auditexception with no fixed version available; only that advisory is ignored, and the decision is recorded indocs/security/pip_audit_exceptions.md
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- docs pt-BR/en 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
Seção intitulada “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 not part of this docs-only preparation
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
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
Patch release focused on release hardening and deterministic operational behaviour.
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
Release focada em auditabilidade real, inspeção mais amigável e experiência pública mais robusta.
Principais pontos:
- nova camada pública de export com
export_binnings_json(...) - novo bundle auditável com
export_bundle(...) metadata_mais forte, incluindo pesos do score e contexto efetivo do fit- novas tabelas públicas
score_table()eaudit_table() - aliases mais descobríveis para inspeção de bins
- nova camada pública de plots para bad rate, heatmap, share temporal e score components
- correção do alinhamento temporal da estratégia supervisionada, melhorando diagnostics e visualizações
- benchmark assets da documentação regenerados com charts mais largos e menos traces vazios
- docs-site reforçado para onboarding, auditoria e interpretação visual
Patch release para fechar a publicação pública com consistência:
- corrige a resolução de
riskbands.__version__no pacote instalado fora do source tree - adiciona teste de regressão para a leitura de versão via metadata distribuída
- preserva integralmente a renomeação para
stable, a documentação nova e o fluxo de release da sériev2
Release de consolidação pública:
- renomeação definitiva do valor público de
score_strategydegeneralization_v1parastable - remoção do nome antigo da API pública, exemplos, smoke tests, labels e documentação principal
- docs-site reorganizado para onboarding, primeiros passos e navegação mais clara para novos usuários
- páginas dedicadas para
score_strategy,normalization_strategy,woe_shrinkage_strength, Optuna e interpretação de outputs - notebooks e exemplos alinhados ao fluxo amigável no estilo sklearn e pandas
- preparação explícita do fluxo de release para validação, GitHub Pages e publicação em PyPI via Trusted Publishing
Evolução importante da ergonomia da API pública:
Binnermais alinhado a convenções de sklearn e pandas- suporte amigável a
fit(df, y="target", column="feature") transform(...)efit_transform(...)com comportamento mais previsível paraDataFrameeSeries- aliases públicos como
max_n_binsemonotonic_trend - novos métodos de inspeção:
binning_table(),summary(),report(),score_details(),diagnostics()eplot_stability() - atributos pós-fit mais fáceis de descobrir
- notebook novo com Plotly e dados sintéticos para onboarding da biblioteca
Evolução importante da camada de scoring:
- caminho legado preservado explicitamente como
legacy - novo objective temporal introduzido e hoje exposto publicamente como
stable - pesos configuráveis, normalização
absolutee shrink de WoE - integração consistente com
Binner,BinComparator, relatórios auditáveis e Optuna - novo exemplo mínimo comparando
legacyversusstable
Mudanças estruturais importantes já refletidas no repositório:
- rename destrutivo para
riskbands Binnerestabelecido como classe principal pública- namespace legado
nasabinningremovido - direção de documentação orientada a benchmark estabelecida nos exemplos do repositório