Changelog

This file gets automatically updated in ZEN-garden’s continuous integration procedures. Do not edit the file manually.

[v2.13.0] - 2026-07-01

New Features ✨

  • Infer the time step type from the index sets in extract_input_data(), and remove time_step argument. Align the time step naming internally to set_hours and set_years to make them clearer [🔀 PR #1282 @jacob-mannhardt]

[v2.12.2] - 2026-06-17

Bug Fixes 🐛

  • make code compatible with Pandas v3.0.0. [🔀 PR #1278 @csfunke]

Maintenance Tasks 🧹

  • upgrade black to patch security vulnerability. [🔀 PR #1276 @csfunke]

  • Add a test for the comparisons module to test_4a [🔀 PR #1269 @jacob-mannhardt]

[v2.12.1] - 2026-06-03

Bug Fixes 🐛

  • Fix a small bug in the comparison module that broke the routine. [🔀 PR #1267 @jacob-mannhardt]

[v2.12.0] - 2026-05-19

New Features ✨

  • install pre-commit to run ruff --fix and black before creating new commits. [🔀 PR #1258 @manud99]

Documentation Changes 📝

[v2.11.0] - 2026-04-10

New Features ✨

  • implement a plugin architecture that allows easy extension of the core ZEN-garden code. [🔀 PR #1252 @csfunke]

[v2.10.0] - 2026-04-08

New Features ✨

  • add option to export reduced costs to reduced_costs_dict.h5 [🔀 PR #1231 @JeanWi]

Documentation Changes 📝

  • Fix wrong country index in tutorial example. The capacity_DE variable in docs/files/tutorial/01_analyze_outputs.rst was mistakenly using “CH” instead of “DE” as the index argument in r.get_total(…), which would have returned Swiss instead of German capacity. [🔀 PR #1244 @felixduemig]

[v2.9.8] - 2026-03-27

Bug Fixes 🐛

  • remove lines causing TypeError in ZEN-temple [🔀 PR #1233 @manud99]

Documentation Changes 📝

  • fix tuorial on adding technologies and carriers. The exercise questions previously did not match the solution. [🔀 PR #1232 @jojoethz]

  • update the contribution guide to include new rules on formatting and linting. [🔀 PR #1234 @csfunke]

  • create a new section in the developer guide on testing. [🔀 PR #1234 @csfunke]

  • add warnings and link to Python. New Python users find a link to Python.org. Also added warnings for the following issues: File paths that exceed 260 characters may lead to errors with Windows and special characters are not compatible with ZEN-garden. [🔀 PR #1228 @johburger]

Maintenance Tasks 🧹

  • remove test dataset that was accidentally pushed to the ZEN-garden root directory. [🔀 PR #1239 @csfunke]

[v2.9.7] - 2026-02-10

Bug Fixes 🐛

  • make the solver dir path relative to the config path, not the cwd. [🔀 PR #1226 @jacob-mannhardt]

Documentation Changes 📝

  • Format docstrings so that equations and line breaks are consistent. Also replace \mathrm{} for text within equations with \text{} [🔀 PR #1224 @johburger]

[v2.9.6] - 2026-02-09

Bug Fixes 🐛

  • Fixes bug when data folder is not in the cwd but in a different location. Allows the path to be different and saves the results there. [🔀 PR #1222 @jacob-mannhardt]

Maintenance Tasks 🧹

  • reformat and lint ZEN-garden code to match style guidelines. The code now passes checks from the formatter Black and the linter Ruff. [🔀 PR #1220 @csfunke]

  • enforce code formatting (via Black) and linting (via Ruff). All future pull requests must pass these checks to be eligible for merge into the main branch of ZEN-garden. These checks can be tested locally in a terminal by (i) activating the ZEN-garden environment, (ii) navigating the the ZEN-garden root folder, and (iii) typing black . and ruff --check . . [🔀 PR #1220 @csfunke]

[v2.9.5] - 2026-02-06

Bug Fixes 🐛

  • fix result extraction from hdf files when there is a single column. [🔀 PR #1216 @csfunke]

[v2.9.4] - 2026-02-06

Bug Fixes 🐛

  • fix version check from 2.9.1 to 2.9.2 for new results. [🔀 PR #1213 @jacob-mannhardt]

[v2.9.3] - 2026-02-06

Bug Fixes 🐛

  • add error catch for when extracting the units in the new format without updating the environment before. [🔀 PR #1211 @jacob-mannhardt]

[v2.9.2] - 2026-02-06

Bug Fixes 🐛

  • Make result reading faster by splitting the value and unit columns into two keys in the .h5 file. [🔀 PR #1209 @jacob-mannhardt]

[v2.9.1] - 2026-02-05

Bug Fixes 🐛

  • Set macos version to latest instead of macos13 because deprecated [🔀 PR #1207 @jacob-mannhardt]

  • Skip read_components when the scenario does not exist [🔀 PR #1207 @jacob-mannhardt]

  • Create ureg (including reading in the user units) only for one scenario, not for all [🔀 PR #1207 @jacob-mannhardt]

  • Move the components construction outside the initialization of the scenarios. The components are only created upon requests when the data is actually read. [🔀 PR #1207 @jacob-mannhardt]

[v2.9.0] - 2026-01-22

New Features ✨

  • implement zen-operation wrapper. This wrapper allows users to seamlessly run operation-only scenarios using the capacity values of a previous simulation. Users may provide a new scenarios_op file that specifies the operational scenarios to run. This new feature replaces the old configuration include_operation_only_phase, which has now been removed. [🔀 PR #1204 @csfunke]

Documentation Changes 📝

  • implement detailed Google-style docstrings for the UnitHandling class. [🔀 PR #1204 @csfunke]

  • improve tutorial of operation-only simulations and update the tutorial to include the new zen-operation wrapper. [🔀 PR #1204 @csfunke]

Maintenance Tasks 🧹

  • create test cases for the new zen-operation wrapper. [🔀 PR #1204 @csfunke]

  • suppress Pint package output on redefining units. This output was previously printed to the terminal whenever a new Results object was initialized. [🔀 PR #1204 @csfunke]

[v2.8.13] - 2026-01-19

Bug Fixes 🐛

  • return empty series when there are no series to concatenate in _combine_dataseries in solution_loader.py. [🔀 PR #1201 @manud99]

Documentation Changes 📝

  • fix broken links in the README file. Some of the documentation links were outdated and not longer worked. [🔀 PR #1196 @csfunke]

Maintenance Tasks 🧹

  • add continuous integration workflow that checks code formatting, linting, and type checking. Uses the packages black for formatting, ruff for linting, and mypy for type checking. Errors are reported but not enforced initially, allowing developers time to clean up the existing codebase. Enforcement will be enabled once all errors are resolved. [🔀 PR #1199 @csfunke]

[v2.8.12] - 2026-01-14

Bug Fixes 🐛

  • fix overwriting the values for a specific year when only one year is selected [🔀 PR #1193 @jacob-mannhardt]

Maintenance Tasks 🧹

  • delete .bumpversion.cfg file. It is now obsolete, as version bumping is performed via a custom Python script rather than the bump2version package. [🔀 PR #1190 @csfunke]

  • correct spelling in changelog. In previous changelog versions, the header “Maintenance Tasks” was spelled wrong. [🔀 PR #1190 @csfunke]

  • skip release in CI workflow when no version bump occurs. [🔀 PR #1188 @csfunke]

[v2.8.11] - 2026-01-06

Bug Fixes 🐛

  • fix bug when extracting get_full_ts("storage_level",year=2022) for a solution with rolling horizon. [🔀 PR #1186 @jacob-mannhardt]

Documentation Changes 📝

[v2.8.10] - 2026-01-05

Bug Fixes 🐛

  • fix PyPi release by adding env variable in create_tag [🔀 PR #1182 @jacob-mannhardt]

[v2.8.9] - 2026-01-05

Bug Fixes 🐛

  • fix PyPi release by making the NEW_VERSION string accessible across jobs [🔀 PR #1180 @jacob-mannhardt]

[v2.8.8] - 2026-01-05

Maintenance Tasks 🧹

[v2.8.7] - 2026-01-05

Bug Fixes 🐛

  • fix bug in or myopic foresight results when yearly series is empty (index returns empty results). Returns empty Series. [🔀 PR #1172 @jacob-mannhardt]

Documentation Changes 📝

  • add changelog to documentation. The changelog now gets copied to the docs/files/api/generated folder when the documentation is built. This allows it to be shown in the “References” section of the documentation. [🔀 PR #1169 @csfunke]

Maintenance Tasks 🧹

  • fix branch deletion in continuous integration pipeline. The previous pipeline attempted to delete a branch which is no longer in use. [🔀 PR #1173 @csfunke]

  • update pull request template to match changelog automation. [🔀 PR #1169 @csfunke]

  • implement semantic version bumping. Major version bumps are now triggered upon breaking changes; minor version bumps are triggered by new features; patch version bumps are triggered by bug fixes. [🔀 PR #1169 @csfunke]

  • automate change log. Information for the change log is now taken from the Detailed list of changes section of the pull request body. [🔀 PR #1169 @csfunke]

[v0.1.0] - [v2.8.4]

No release notes exist for ZEN garden versions 0.1.0 -> 2.8.4.