Skip to content

promote develop → main: per-zone weather (22.4.0)#377

Merged
bartzbeielstein merged 4 commits into
mainfrom
develop
Jun 13, 2026
Merged

promote develop → main: per-zone weather (22.4.0)#377
bartzbeielstein merged 4 commits into
mainfrom
develop

Conversation

@bartzbeielstein

Copy link
Copy Markdown
Collaborator

Promotion of developmain to release 22.4.0.

Contains PR #376feat(weather): per-zone weather for the ENTSO-E four-zone pipeline (opt-in, default OFF; each TSO zone driven by its own regional weather). semantic-release will cut 22.4.0, build the wheel/sdist, publish to PyPI + GitHub Release, and deploy docs.

All CI green on develop; rc cut as 22.4.0-rc.1.

🤖 Generated with Claude Code

github-actions Bot and others added 4 commits June 13, 2026 06:38
When `ConfigMulti.per_zone_weather=True`, each of the four German TSO control
zones (load_50hertz/load_amprion/load_tennet/load_transnetbw) is driven by
weather from its own region instead of one shared national index. Calendar,
holiday and event-window features stay shared (they are national); only weather
becomes regional, under the same un-prefixed column names so no estimator,
factory or column matcher downstream changes. Opt-in, default OFF -> byte
-identical to the prior shared-weather baseline.

Mechanism: the existing single global weather build stays as the shared schema/
baseline; build_exogenous_features additionally fetches one weather frame per
zone (reusing the multi-city get_weather_features path with each zone's city
list) into self.zone_weather_aligned. At the single per-target seam
(get_target_data, new keyword-only `zone_weather`) the zone's weather columns
overwrite the shared values in-place; column order and shape are preserved. The
per-zone frame keeps its native [start, cov_end] index so it spans the forecast
horizon (regression-tested). On all-zones-success the shared schema is seeded
from the first zone, so per-zone weather survives a global fetch that failed
under on_weather_failure="skip".

- weather/locations.py: registry 13->15 (Mannheim, Karlsruhe for TransnetBW);
  frozen GERMAN_TSO_ZONE_CITIES partition (provenance: SMARD control-area map +
  TSO wiki; Hamburg in 50Hertz, Bremen in TenneT); locations_for_zone resolver
  (fail-safe ValueError on unknown zone). Pre-existing Sphinx roles swept.
- configurator: per_zone_weather + zone_weather_locations fields; validate_config
  guards reject combination with use_population_weighted_weather (mutual
  exclusivity), use_exogenous_features=False, and poly_features_degree>=2.
- Fail-safe: under "skip" any zone fetch failure degrades the whole pipeline to
  no-weather (never substitutes the global index); under "raise" aborts naming
  the zone.
- tasks/task_safe_zone_load_demo.py: --per_zone_weather flag (default off,
  offline-safe via on_weather_failure="skip").
- 36 network-free tests incl. mapping/partition, config guards, the seam
  overwrite, forecast-horizon coverage, skip-degradation, and non-zone-target
  fail-safe. quartodoc reference + freeze regenerated.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…er-zone-weather-entsoe

feat(weather): per-zone weather for the ENTSO-E four-zone pipeline
## [22.4.0-rc.1](v22.3.0...v22.4.0-rc.1) (2026-06-13)

### Features

* **weather:** per-zone weather for the ENTSO-E four-zone pipeline ([260a084](260a084))

### Documentation

* **tasks:** drop stale n-to-1 task wrapper references from task_multi ([00e9dab](00e9dab))
@bartzbeielstein bartzbeielstein merged commit dea44f7 into main Jun 13, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants