Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,10 @@
## [19.1.0-rc.1](https://github.com/sequential-parameter-optimization/spotforecast2-safe/compare/v19.0.0...v19.1.0-rc.1) (2026-06-07)


### Features

* **configurator:** convert ConfigMulti and ConfigEntsoe to dataclasses ([184a3d9](https://github.com/sequential-parameter-optimization/spotforecast2-safe/commit/184a3d96287a75b0748c161114b2a980b741deb6)), closes [#4](https://github.com/sequential-parameter-optimization/spotforecast2-safe/issues/4)

## [19.0.0](https://github.com/sequential-parameter-optimization/spotforecast2-safe/compare/v18.1.0...v19.0.0) (2026-06-07)


Expand Down
8 changes: 4 additions & 4 deletions MODEL_CARD.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ This card describes what spotforecast2-safe is, how to use it safely, the condit
| Field | Value |
| --- | --- |
| Name | spotforecast2-safe |
| Version | 19.0.0 |
| Version | 19.1.0-rc.1 |
| Type | Deterministic Python library for time series feature engineering and recursive multi-step forecasting. It performs no training of its own. |
| Developed by | Thomas Bartz-Beielstein, ORCID [0000-0002-5938-5158](https://orcid.org/0000-0002-5938-5158) |
| Distributed by | the `sequential-parameter-optimization` GitHub organization |
Expand All @@ -18,7 +18,7 @@ This card describes what spotforecast2-safe is, how to use it safely, the condit

The library depends only on numpy, pandas, scikit-learn, lightgbm, numba, pyarrow, requests, feature-engine, holidays, astral, and tqdm. It deliberately excludes plotly, matplotlib, spotoptim, optuna, torch, and tensorflow, so no plotting or automated-tuning code ships in this package.

Two Common Platform Enumeration (CPE) identifiers let vulnerability-tracking and software bill of materials (SBOM) tools recognize the package. The wildcard identifier `cpe:2.3:a:sequential_parameter_optimization:spotforecast2_safe:*:*:*:*:*:*:*:*` matches any release; the current release is `cpe:2.3:a:sequential_parameter_optimization:spotforecast2_safe:19.0.0:*:*:*:*:*:*:*`.
Two Common Platform Enumeration (CPE) identifiers let vulnerability-tracking and software bill of materials (SBOM) tools recognize the package. The wildcard identifier `cpe:2.3:a:sequential_parameter_optimization:spotforecast2_safe:*:*:*:*:*:*:*:*` matches any release; the current release is `cpe:2.3:a:sequential_parameter_optimization:spotforecast2_safe:19.1.0-rc.1:*:*:*:*:*:*:*`.

The library itself is a low-risk component: it is deterministic, its source is fully inspectable, and it fails safe on invalid input. It is built to support high-risk AI systems in the sense of the EU AI Act, but it is not itself such a system. When it is embedded in a high-risk deployment, the duties that attach to that system fall on the integrator, not on the library.

Expand All @@ -30,7 +30,7 @@ Responsibilities are divided as follows.
| Distribution | sequential-parameter-optimization on GitHub | repository issue tracker |
| Deployment, operation, and audit | the system integrator | defined per deployment |

The current release is 19.0.0, with a stable public interface pinned in `spotforecast2_safe.__init__.__all__`. The full version history, including release dates, is recorded in `CHANGELOG.md` and on the GitHub Releases page; it is maintained automatically by the release pipeline and is not repeated here.
The current release is 19.1.0-rc.1, with a stable public interface pinned in `spotforecast2_safe.__init__.__all__`. The full version history, including release dates, is recorded in `CHANGELOG.md` and on the GitHub Releases page; it is maintained automatically by the release pipeline and is not repeated here.

## 2. Intended Use and Scope

Expand Down Expand Up @@ -216,7 +216,7 @@ Maintainer: Thomas Bartz-Beielstein, ORCID [0000-0002-5938-5158](https://orcid.o
}
```

Or as a formatted reference: Bartz-Beielstein, T. (2026). *spotforecast2-safe: Safety-critical subset of spotforecast2* (Version 19.0.0) [Computer software]. https://github.com/sequential-parameter-optimization/spotforecast2-safe
Or as a formatted reference: Bartz-Beielstein, T. (2026). *spotforecast2-safe: Safety-critical subset of spotforecast2* (Version 19.1.0-rc.1) [Computer software]. https://github.com/sequential-parameter-optimization/spotforecast2-safe

The technical report (`bart26h/index.qmd`) is the long-form reference for design rationale, compliance mapping, and evaluation protocol.

Expand Down
130 changes: 65 additions & 65 deletions docs/reference/configurator.config_entsoe.ConfigEntsoe.qmd

Large diffs are not rendered by default.

104 changes: 52 additions & 52 deletions docs/reference/configurator.config_multi.ConfigMulti.qmd

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[project]
name = "spotforecast2-safe"
version = "19.0.0"
version = "19.1.0-rc.1"
description = "spotforecast2-safe (Core): Safety-critical time series forecasting for production"
readme = "README.md"
license = { text = "AGPL-3.0-or-later" }
Expand Down
6 changes: 3 additions & 3 deletions src/spotforecast2_safe/configurator/_base_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@
defaults and the same ``get_params`` / ``set_params`` semantics. Those were
previously hand-duplicated in both classes, which let fields drift between the
two copies. These helpers centralise the logic so each config only declares its
ordered parameter names (``_PARAM_NAMES``) and its ``__init__``; the
``@dataclass`` fields; ``_PARAM_NAMES`` is derived from
``dataclasses.fields()`` (so it can never drift from the fields), and the
``get_params`` / ``set_params`` behaviour and the period defaults live here.
"""

Expand Down Expand Up @@ -270,8 +271,7 @@ def validate_config(config: object) -> None:
on_weather_failure = getattr(config, "on_weather_failure", None)
if on_weather_failure is not None and on_weather_failure not in ("raise", "skip"):
raise ValueError(
"on_weather_failure must be 'raise' or 'skip'; got "
f"{on_weather_failure!r}."
f"on_weather_failure must be 'raise' or 'skip'; got {on_weather_failure!r}."
)

on_exog_provider_failure = getattr(config, "on_exog_provider_failure", None)
Expand Down
Loading