Skip to content

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[0.1.0-alpha.11] - 2026-07-20

This minor release includes 5 commits.

Breaking

  • BaseTransformer is removed; use BaseActualTransformer (#94)
  • The transformer base is split into _BaseTransformer (private), BaseActualTransformer, and BaseForecastTransformer (#94)
  • Mixed-kind compositions are rejected at fit (#94)
  • feature_transformer is renamed to actual_transformer, with no deprecation alias (#98)
  • The fitted attribute is now actual_transformer_ and the tag uses_actual_transformer (#98)
  • Nested paths become actual_transformer__*, so cv_results_ keys become param_actual_transformer__* (#98)
  • Constructor parameters after estimator are keyword-only on the seven slot-declaring classes (#98)

Features

  • Add BaseForecastTransformer, a base for transformers over X_forecast frames (vintage_time and time axes) (#94)
  • Add PerVintageActualTransformer, lifting an actual transformer onto the vintage axis (#94)
  • Add a kind tag ("actual" | "forecast") to TransformerTags (#94)
  • FeatureUnion, FeaturePipeline, and ColumnTransformer accept either kind and derive theirs from their children (#94)
  • ColumnTransformer treats vintage_time as a protected index column (#94)
  • Add an accepts_irregular_grid tag and representative_interval; Downsampler opts in (#94)
  • Warn at fit when an X_future step expansion is rank-deficient (#96)
  • Add a forecast_transformer slot, applied to X_forecast before step columns are derived (#98)
  • Split X_forecast per group under panel_strategy="global", so forecast_transformer_ is a dict keyed by group (#98)
  • Cache the transformed X_forecast frame; the raw schema stays the input contract (#98)
  • Add min_vintage_rows to BaseForecastTransformer, aggregated by forecast-kind compositions (#98)
  • Raise at fit unless forecasting_horizon >= min_vintage_rows (#98)
  • Warn at fit when a stateful inner empties the nearest-term step columns (#98)
  • Add a uses_forecast_transformer tag and metadata routing for the slot (#98)
  • DecompositionPipeline exposes both transformer slots (#98)

Documentation

  • Add a transformer-kinds explanation page and correct the exogenous-channel routing docs (#96)

Miscellaneous Tasks

  • Update from template v0.26.1 (#95)
  • Update from template v0.27.0 (#99)

Contributors

Thanks to all contributors for this release: - @gtauzin

[Unreleased]

[0.1.0-alpha.10] - 2026-07-02

This minor release includes 22 commits.

Features

  • Replace exact vintage matching with as-of selection (#74) by @gtauzin
  • Make y_test optional in plot_forecast and fix weighted_quantile normalization (#76) by @gtauzin
  • Add cross_validate, cross_val_score, cross_val_predict (#68) by @gtauzin
  • Make time-axis weighting estimator-based and tunable (#81) by @gtauzin
  • Make CompositeSimilarity a real composition; rename TemporalSimilarity (#82) by @gtauzin
  • Add weighter, similarity, and composition check harnesses (#83) by @gtauzin
  • Add quantile calibration mode with square [0,1] axes (#89) by @gtauzin
  • Add plot_nested_splits for nested CV visualization (#90) by @gtauzin
  • Add configurable line_shape for all line plots (#92) by @gtauzin

Bug Fixes

  • Remap vintage_time in _predict_with_step_override (#67) by @gtauzin
  • Clip forecast step columns to forecasting horizon window (#69) by @gtauzin
  • Override observe_predict_interval in SplitConformalForecaster (#73) by @gtauzin
  • Handle NaN features at predict time when nan_handling='drop' (#77) by @gtauzin
  • Handle Pipeline steps that lack set_fit_request for sample_weight (#78) by @gtauzin
  • Support scikit-learn 1.9.0 callback context and empty FeatureUnion by @gtauzin
  • Route forecasted features through X_forecast (#80) by @gtauzin
  • Correct CalibrationError to empirical-coverage deviation (#84) by @gtauzin
  • Remediate issues across codebase (#85) by @gtauzin
  • Remediate correctness findings (#86) by @gtauzin
  • Remediate remaining code quality issues (#87) by @gtauzin
  • Remediate more QA findings (#91) by @gtauzin

Refactoring

  • Remove pivot_forecasts (no longer used internally) (#75) by @gtauzin

Contributors

Thanks to all contributors for this release: - @gtauzin

[0.1.0-alpha.9] - 2026-05-19

This minor release includes 2 commits.

Bug Fixes

  • Use Polars binary serialization for WASM loading (#65) by @gtauzin

Miscellaneous Tasks

  • Add workflow to regenerate dataset parquets (#64) by @gtauzin

Contributors

Thanks to all contributors for this release: - @gtauzin

[0.1.0-alpha.8] - 2026-05-19

This minor release includes 3 commits.

Features

  • Add WASM/Pyodide support for dataset fetchers (#62) by @gtauzin
  • Add nan_handling parameter to reduction forecasters (#60) by @gtauzin

Bug Fixes

  • Extend See Also numpydoc patch to handle MkDocs link syntax (#61) by @gtauzin

Contributors

Thanks to all contributors for this release: - @gtauzin

[0.1.0-alpha.7] - 2026-05-18

This minor release includes 1 commit.

Documentation

  • Restructure documentation with Diataxis framework and update template (#34) by @gtauzin

Contributors

Thanks to all contributors for this release: - @gtauzin

[0.1.0-alpha.6] - 2026-05-08

This minor release includes 9 commits.

Features

  • Allow coverage_rate=0 for point forecasts (#50) by @gtauzin
  • Support global-only exogenous features with panel data (#52) by @gtauzin
  • Add similarity extensions and API hardening (#53) by @gtauzin
  • Add 9 forecasting metrics and 2 base scorer classes (#54) by @gtauzin
  • Add X_actual, X_future, X_forecast API with step-indexed columns (#56) by @gtauzin

Bug Fixes

  • Detect LightGBM quantile alpha parameter (#48) by @gtauzin
  • Pass Polars DataFrames to estimators instead of numpy arrays (#49) by @gtauzin
  • Sync observed_time_ in SplitConformalForecaster observe and rewind (#51) by @gtauzin

Refactoring

  • Remove gap parameter from splitters (#47) by @gtauzin

Contributors

Thanks to all contributors for this release: - @gtauzin

[0.1.0-alpha.5] - 2026-04-22

This minor release includes 2 commits.

Refactoring

  • Add _fit(), _transform(), and _inverse_transform() hooks to BaseTransformer, eliminating boilerplate validation and check_is_fitted calls from every subclass (#45) by @gtauzin
  • Auto-merge _parameter_constraints across the MRO via __init_subclass__, removing manual **BaseTransformer._parameter_constraints spreads (#45) by @gtauzin
  • Replace __sklearn_tags__ overrides with declarative _tags dicts, merged automatically by the base class (#45) by @gtauzin
  • Deduplicate transformer subclasses in preprocessing/ and stationarity/ (net 870 lines removed) (#45) by @gtauzin
  • Add LaTeX equations and literature references to BoxCoxTransformer, LogTransformer, and SeasonalDifferencing docstrings (#45) by @gtauzin

Testing

  • Add test_compat nox session for pinned-dependency compatibility testing (#45) by @gtauzin

Contributors

Thanks to all contributors for this release: - @gtauzin

[0.1.0-alpha.4] - 2026-04-22

This minor release includes 13 commits.

Features

  • Enable interval forecaster support in SearchCV (#25) by @gtauzin
  • Add direct and dir-rec reduction strategies with example notebooks (#27) by @gtauzin
  • Add categorical class-probability forecasting (#30) by @gtauzin
  • Add calendar, holiday, Fourier, and time index transformers (#39) by @gtauzin
  • Add VotingForecaster and VotingClassProbaForecaster (#40) by @gtauzin
  • Add vintage weighting to reduction forecasters (#42) by @gtauzin
  • Add MeanSeasonalNaive and MeanLagTransformer (#43) by @gtauzin

Bug Fixes

  • Skip plotting extras in test_docstrings on Python 3.14 (#38) by @gtauzin

Refactoring

  • Centralize private sklearn imports into utils/_compat.py (#26) by @gtauzin
  • Codebase quality overhaul (#28) by @gtauzin
  • Standardize arguments, panel layout, and plotting defaults (#33) by @gtauzin
  • Unify scorer API with fit(forecaster) and scoring dimensions (#41) by @gtauzin

Contributors

Thanks to all contributors for this release: - @gtauzin

[0.1.0-alpha.3] - 2026-03-01

This minor release includes 5 commits.

Features

  • Replace bundled datasets with remote fetchers and migrate examples to PEP 723 (#17) by @gtauzin
  • Add fetch_kdd_cup() dataset (KDD Cup 2018 air quality, 270 hourly series) (#18) by @gtauzin
  • Add panel-aware naming utilities (panel_aware_rename, panel_aware_prefix, panel_aware_suffix) (#18) by @gtauzin
  • Add "groupwise" aggregation mode for scorers (#18) by @gtauzin
  • Add STL mode in plot_components via components list and stl_kwargs (#18) by @gtauzin
  • Add auto-detection of panel data in plotting functions (#18) by @gtauzin
  • Add multivariate panel faceting with per-member colours across all panel-enabled plots (#18) by @gtauzin
  • Add explicit __init__ on all sklearn wrapper classes (#18) by @gtauzin
  • Add check_panel_group_preservation() transformer check (#18) by @gtauzin
  • Add new examples: kdd_cup.py, nixtla_forecasters.py, nixtla_panel.py (#18) by @gtauzin

Bug Fixes

  • Fix ColumnTransformer sample count check (relax to output_samples > n_samples) (#18) by @gtauzin
  • Fix _detect_multiquantile_loss() to search with deep=True for nested parameters (#18) by @gtauzin

Refactoring

  • Rename inspect_locality() to inspect_panel() (alias retained) (#18) by @gtauzin
  • Change FeatureUnion/ColumnTransformer prefix separator from __ to _ to avoid panel separator collisions (#18) by @gtauzin
  • Rewrite _hstack() to join on "time" column instead of index-based slicing (#18) by @gtauzin
  • Change FourierSeasonalityForecaster default harmonics from [1, 2, 3] to [1] (#18) by @gtauzin
  • Rename plot_residual_time_series to plot_residuals; use z-scored residuals in Q-Q plot (#18) by @gtauzin
  • Simplify plot_rolling_statistics (remove fill_between/band_opacity) (#18) by @gtauzin
  • Adjust palette_yohou() colour ordering (#18) by @gtauzin
  • Rename internal reset variables to rewind for consistency (#18) by @gtauzin
  • Remove plot_stl_components (merged into plot_components) (#18) by @gtauzin
  • Move validate_plotting_params from plotting/_utils.py to utils/validate_data.py (#18) by @gtauzin

Documentation

  • Add extensions page and auto-generated API reference (#18) by @gtauzin
  • Add MathJax support and mkdocs-autorefs plugin (#18) by @gtauzin
  • Add gallery CSS for example notebooks (#18) by @gtauzin
  • Replace Sphinx-style cross-references with plain backtick style in docstrings (#18) by @gtauzin
  • Add comprehensive See Also sections across base classes and utilities (#18) by @gtauzin

Testing

  • Add property-based tests (Hypothesis) with strategies module (#18) by @gtauzin
  • Add serialization, thread-safety, and contract test suites (#18) by @gtauzin
  • Add feature pipeline/union, scorer aggregation, search CV, and signal plotting tests (#18) by @gtauzin
  • Refactor integration tests (~14 files, ~3400 lines) (#18) by @gtauzin

Miscellaneous Tasks

  • Add hypothesis as test dependency (#18) by @gtauzin
  • Add rumdl markdown linter to pre-commit and nox (#18) by @gtauzin
  • Add Justfile commands: build-fast, serve-fast, link (#18) by @gtauzin
  • Cleanup docs hooks, conformity docstrings, pre-commit config, and logos (#18) by @gtauzin
  • Update copier template to v0.15.0 (#19) by @gtauzin

Contributors

Thanks to all contributors for this release: - @gtauzin

[0.1.0-alpha.2] - 2026-02-23

This minor release includes 2 commits.

Features

  • Polish forecasting plots and overhaul quickstart (#14) by @gtauzin

Miscellaneous Tasks

  • Apply copier template update (fdb4552) (#15) by @gtauzin

Contributors

Thanks to all contributors for this release: - @gtauzin

[0.1.0-alpha.1] - 2026-02-20

This minor release includes 1 commit.

  • Initial commit

Contributors

Thanks to all contributors for this release: - @gtauzin

[Unreleased]

Added

  • Initial project setup