Frequenz Microgrid Component Graph Library Release Notes
Summary
This release updates the underlying Rust crate to v0.6.0, which brings a rewritten formula fallback engine. Generated formula strings can differ from the previous release. The default source order in per-category formulas is now component-first, and graph validation errors use a new message format. It also bumps PyO3 to 0.29 to fix a security advisory. See the Upgrading section for details.
Upgrading
-
Bumped PyO3 to 0.29 to pull in the fix for RUSTSEC out-of-bounds read advisory GHSA-36hh-v3qg-5jq4 (
nth/nth_backon list/tuple iterators). -
Updated the
frequenz-microgrid-component-graphRust crate to v0.6.0. This changes some outputs that are visible from Python:-
The formula fallback engine was rewritten. Formulas can now contain meter-subtraction and diamond terms. Exact formula strings can differ from the previous release, even for the same graph.
-
The consumer formula now measures the non-consumer components behind one internal meter as one group: it subtracts
COALESCE(#meter, component readings...)instead of each component on its own. Note: if such a meter also carries a load that is not in the component graph, that load is now subtracted together with the group while the meter reading is used. -
Graph validation failures now raise
InvalidGraphErrorwith a message that starts withGraph validation failed:, followed by one indented line per problem. The old format wasInvalidGraph: <description>. Note: some errors found while building the graph, for example a missing grid component, still use the old format. Code that matches on the message text of validation failures must be updated.
-
-
prefer_meters_in_component_formulasnow defaults toFalse: per-category formulas use the component reading as the primary source and the meter as the fallback. Set it toTrueto restore the old meter-first order. This changes only the order of the sources; the new fallback terms from v0.6.0 are used either way.
What's Changed
- Clear release notes by @shsms in #74
- Add tests for steam boilers by @simonvoelcker in #71
- Bump the compatible group with 3 updates by @dependabot[bot] in #75
- Bump frequenz-floss/gh-action-setup-python-with-deps from 0d0d77eac3b54799f31f25a1060ef2c6ebdf9299 to e4d0b2ef8f5a1612d7827f3abaef17c931d2b946 by @dependabot[bot] in #76
- Bump pytest-asyncio from 1.3.0 to 1.4.0 by @dependabot[bot] in #80
- Bump pydoclint from 0.8.3 to 0.8.5 by @dependabot[bot] in #82
- Bump mypy from 1.20.2 to 2.1.0 by @dependabot[bot] in #81
- Bump frequenz-floss/gh-action-setup-git from 16952aac3ccc01d27412fe0dea3ea946530dcace to f9d86a01228ee1cadaac5224d4d7626f1eb23f90 by @dependabot[bot] in #77
- Bump nox from 2025.10.16 to 2026.4.10 by @dependabot[bot] in #83
- Bump isort from 7.0.0 to 8.0.1 by @dependabot[bot] in #84
- Update frequenz-client-assets requirement from <0.3,>=0.1.0 to >=0.1.0,<0.4 by @dependabot[bot] in #86
- Bump types-markdown from 3.10.2.20260408 to 3.10.2.20260518 by @dependabot[bot] in #85
- Bump black from 26.3.1 to 26.5.1 in the minor group across 1 directory by @dependabot[bot] in #78
- Bump frequenz-repo-config from 0.17.0 to 0.18.0 in the repo-config group across 1 directory by @dependabot[bot] in #79
- Bump pydoclint from 0.8.5 to 0.8.6 by @dependabot[bot] in #87
- Bump the compatible group with 3 updates by @dependabot[bot] in #88
- Bump pyo3 from 0.27.1 to 0.29.0 in the cargo group across 1 directory by @dependabot[bot] in #89
- Opt into FromPyObject derive for Clone pyclasses under PyO3 0.29 by @shsms in #90
- Bump actions/checkout from 6.0.3 to 7.0.0 by @dependabot[bot] in #93
- Bump the patch group with 2 updates by @dependabot[bot] in #94
- Bump pydoclint from 0.8.6 to 0.9.0 by @dependabot[bot] in #96
- Bump pytest from 9.0.3 to 9.1.1 in the minor group across 1 directory by @dependabot[bot] in #95
- Bump the compatible group across 1 directory with 2 updates by @dependabot[bot] in #92
- Build against component-graph v0.6.0 by @shsms in #91
- Bump version to 0.5.0 by @shsms in #97
Full Changelog: v0.4.1...v0.5.0