Repository navigation
functime 1.0.0
Stable release of functime. Time-series machine learning at scale, built on Polars.
This release modernizes the entire stack: Polars 1.x, Python 3.11+, uv-based builds and fixes all known bugs from the RC cycle.
Breaking Changes
- Python >= 3.11 required (was >= 3.8)
- Polars >= 1.0 required (was >= 0.20.8)
- FLAML >= 2.3.0 required (was >= 2.0.2) - older versions crash on NumPy 2.x
- Rust toolchain moved from nightly to stable (1.94); pyo3 ABI target is now
abi3-py311
What's New
New APIs
functime.preprocessing.log1p- log(1+x) transformer with exp(x)-1 inverse, for positive-valued time seriesfunctime.conversion.wide_to_long/long_to_wide- convert between wide and panel (long) DataFrame formatsfunctime.metrics.probabilistic- new module withcrps,interval_coverage, andwinkler_scoremetrics- Quarterly frequency support -
freq_to_sp("1q")now returns[4];"1q"accepted by all forecasters
Bug Fixes
- Fixed circular import that made
from functime.backtesting import backtestunusable (#265) - Fixed
naive.backtest()crashing withKeyError: 'regressor'- non-autoregressive models now compute residuals correctly (#265) - AutoML forecasters now reject invalid kwargs (e.g.
n_evals) with a clear error instead of silently passing them to sklearn (#265)
Polars 1.x Compatibility (#263)
- Migrated to
register_plugin_function(new plugin API) - Use
collect_schema().names()instead ofLazyFrame.columns - Handle rle struct field name changes (
value/len→values/lengths) - Add
returns_scalar=Truetomap_elementscalls where needed - Avoid string replacement on categorized columns
- Remove unsupported hourly frequency in
date_range
Infrastructure (#263)
- Build tooling switched from pip + Makefile to uv + justfile with
uv.lockfor reproducible environments - Replaced removed
scipy.signal.rickerwith a local implementation (removed in scipy 1.15) - Switched
boxcox/yeojohnson/normality_testfrommap_elementstomap_batches - CI test matrix: Python 3.11 / 3.12 / 3.13
- Updated PyPI classifiers
Dependencies
| Dependency | Old | New |
|---|---|---|
| Python | >= 3.8 | >= 3.11 |
| Polars | >= 0.20.8 | >= 1.0 |
| FLAML | >= 2.0.2 | >= 2.3.0 |
| scipy | == 1.14.1 | >= 1.11 |
Test Results
407 passed, 8 skipped (optional deps: catboost, lightgbm, xgboost)
Thanks a lot for the contributors: @fabianbergermann @tjader and @baggiponte