frequenz-gridpool 0.6.2__tar.gz → 0.6.4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. {frequenz_gridpool-0.6.2/src/frequenz_gridpool.egg-info → frequenz_gridpool-0.6.4}/PKG-INFO +8 -8
  2. frequenz_gridpool-0.6.4/RELEASE_NOTES.md +28 -0
  3. {frequenz_gridpool-0.6.2 → frequenz_gridpool-0.6.4}/pyproject.toml +9 -9
  4. {frequenz_gridpool-0.6.2 → frequenz_gridpool-0.6.4}/src/frequenz/gridpool/config/microgrid.py +49 -4
  5. {frequenz_gridpool-0.6.2 → frequenz_gridpool-0.6.4/src/frequenz_gridpool.egg-info}/PKG-INFO +8 -8
  6. {frequenz_gridpool-0.6.2 → frequenz_gridpool-0.6.4}/src/frequenz_gridpool.egg-info/requires.txt +7 -7
  7. {frequenz_gridpool-0.6.2 → frequenz_gridpool-0.6.4}/src/frequenz_gridpool.egg-info/scm_file_list.json +44 -44
  8. frequenz_gridpool-0.6.4/src/frequenz_gridpool.egg-info/scm_version.json +8 -0
  9. frequenz_gridpool-0.6.2/RELEASE_NOTES.md +0 -20
  10. frequenz_gridpool-0.6.2/src/frequenz_gridpool.egg-info/scm_version.json +0 -8
  11. {frequenz_gridpool-0.6.2 → frequenz_gridpool-0.6.4}/LICENSE +0 -0
  12. {frequenz_gridpool-0.6.2 → frequenz_gridpool-0.6.4}/MANIFEST.in +0 -0
  13. {frequenz_gridpool-0.6.2 → frequenz_gridpool-0.6.4}/README.md +0 -0
  14. {frequenz_gridpool-0.6.2 → frequenz_gridpool-0.6.4}/setup.cfg +0 -0
  15. {frequenz_gridpool-0.6.2 → frequenz_gridpool-0.6.4}/src/frequenz/gridpool/__init__.py +0 -0
  16. {frequenz_gridpool-0.6.2 → frequenz_gridpool-0.6.4}/src/frequenz/gridpool/_graph_generator.py +0 -0
  17. {frequenz_gridpool-0.6.2 → frequenz_gridpool-0.6.4}/src/frequenz/gridpool/cli/__init__.py +0 -0
  18. {frequenz_gridpool-0.6.2 → frequenz_gridpool-0.6.4}/src/frequenz/gridpool/cli/__main__.py +0 -0
  19. {frequenz_gridpool-0.6.2 → frequenz_gridpool-0.6.4}/src/frequenz/gridpool/cli/_dump_config.py +0 -0
  20. {frequenz_gridpool-0.6.2 → frequenz_gridpool-0.6.4}/src/frequenz/gridpool/cli/_patch_config.py +0 -0
  21. {frequenz_gridpool-0.6.2 → frequenz_gridpool-0.6.4}/src/frequenz/gridpool/cli/_render_graph.py +0 -0
  22. {frequenz_gridpool-0.6.2 → frequenz_gridpool-0.6.4}/src/frequenz/gridpool/config/__init__.py +0 -0
  23. {frequenz_gridpool-0.6.2 → frequenz_gridpool-0.6.4}/src/frequenz/gridpool/config/load.py +0 -0
  24. {frequenz_gridpool-0.6.2 → frequenz_gridpool-0.6.4}/src/frequenz/gridpool/conftest.py +0 -0
  25. {frequenz_gridpool-0.6.2 → frequenz_gridpool-0.6.4}/src/frequenz/gridpool/py.typed +0 -0
  26. {frequenz_gridpool-0.6.2 → frequenz_gridpool-0.6.4}/src/frequenz_gridpool.egg-info/SOURCES.txt +0 -0
  27. {frequenz_gridpool-0.6.2 → frequenz_gridpool-0.6.4}/src/frequenz_gridpool.egg-info/dependency_links.txt +0 -0
  28. {frequenz_gridpool-0.6.2 → frequenz_gridpool-0.6.4}/src/frequenz_gridpool.egg-info/entry_points.txt +0 -0
  29. {frequenz_gridpool-0.6.2 → frequenz_gridpool-0.6.4}/src/frequenz_gridpool.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: frequenz-gridpool
3
- Version: 0.6.2
3
+ Version: 0.6.4
4
4
  Summary: High-level interface to grid pools for the Frequenz platform.
5
5
  Author-email: Frequenz Energy-as-a-Service GmbH <floss@frequenz.com>
6
6
  License-Expression: MIT
@@ -22,7 +22,7 @@ License-File: LICENSE
22
22
  Requires-Dist: marshmallow-dataclass<9,>=8.7.1
23
23
  Requires-Dist: typing-extensions<5,>=4.14.1
24
24
  Requires-Dist: frequenz-microgrid-component-graph<0.6,>=0.5.0
25
- Requires-Dist: frequenz-client-assets<0.4,>=0.3.1
25
+ Requires-Dist: frequenz-client-assets<0.6,>=0.5.0
26
26
  Provides-Extra: cli
27
27
  Requires-Dist: asyncclick<9,>=8.3.0.4; extra == "cli"
28
28
  Requires-Dist: tomlkit<1,>=0.13.0; extra == "cli"
@@ -35,7 +35,7 @@ Requires-Dist: flake8==7.3.0; extra == "dev-flake8"
35
35
  Requires-Dist: flake8-datetimez==20.10.0; extra == "dev-flake8"
36
36
  Requires-Dist: flake8-docstrings==1.7.0; extra == "dev-flake8"
37
37
  Requires-Dist: flake8-pyproject==1.2.4; extra == "dev-flake8"
38
- Requires-Dist: pydoclint==0.9.0; extra == "dev-flake8"
38
+ Requires-Dist: pydoclint==0.9.1; extra == "dev-flake8"
39
39
  Requires-Dist: pydocstyle==6.3.0; extra == "dev-flake8"
40
40
  Provides-Extra: dev-formatting
41
41
  Requires-Dist: black==26.5.1; extra == "dev-formatting"
@@ -47,17 +47,17 @@ Requires-Dist: mike==2.2.0; extra == "dev-mkdocs"
47
47
  Requires-Dist: mkdocs-gen-files==0.6.1; extra == "dev-mkdocs"
48
48
  Requires-Dist: mkdocs-literate-nav==0.6.3; extra == "dev-mkdocs"
49
49
  Requires-Dist: mkdocs-macros-plugin==1.5.0; extra == "dev-mkdocs"
50
- Requires-Dist: mkdocs-material==9.7.6; extra == "dev-mkdocs"
51
- Requires-Dist: mkdocstrings[python]==1.0.4; extra == "dev-mkdocs"
50
+ Requires-Dist: mkdocs-material==9.7.7; extra == "dev-mkdocs"
51
+ Requires-Dist: mkdocstrings[python]==1.0.6; extra == "dev-mkdocs"
52
52
  Requires-Dist: mkdocstrings-python==2.0.5; extra == "dev-mkdocs"
53
53
  Requires-Dist: frequenz-repo-config[lib]==0.18.0; extra == "dev-mkdocs"
54
54
  Provides-Extra: dev-mypy
55
- Requires-Dist: mypy==2.1.0; extra == "dev-mypy"
55
+ Requires-Dist: mypy==2.3.0; extra == "dev-mypy"
56
56
  Requires-Dist: types-networkx>=3.6.1.20251220; extra == "dev-mypy"
57
- Requires-Dist: types-Markdown==3.10.2.20260518; extra == "dev-mypy"
57
+ Requires-Dist: types-Markdown==3.10.2.20260712; extra == "dev-mypy"
58
58
  Requires-Dist: frequenz-gridpool[dev-mkdocs,dev-noxfile,dev-pytest]; extra == "dev-mypy"
59
59
  Provides-Extra: dev-noxfile
60
- Requires-Dist: nox==2026.4.10; extra == "dev-noxfile"
60
+ Requires-Dist: nox==2026.7.11; extra == "dev-noxfile"
61
61
  Requires-Dist: frequenz-repo-config[lib]==0.18.0; extra == "dev-noxfile"
62
62
  Provides-Extra: dev-pylint
63
63
  Requires-Dist: frequenz-gridpool[dev-mkdocs,dev-noxfile,dev-pytest]; extra == "dev-pylint"
@@ -0,0 +1,28 @@
1
+ # Frequenz Gridpool Library Release Notes
2
+
3
+ ## Summary
4
+
5
+ <!-- Here goes a general summary of what this release is about -->
6
+
7
+ ## Upgrading
8
+
9
+ - Microgrid config files should nest their entries under `assets.microgrids`:
10
+
11
+ ```toml
12
+ assets.microgrids.23.meta.name = "..."
13
+ ```
14
+
15
+ Bare microgrid IDs at the top level still load but log a deprecation warning,
16
+ and support for them will be removed. The namespace keeps generated inventory
17
+ data apart from operator settings under `app.*`, so a config file can carry
18
+ both without its keys colliding.
19
+
20
+ A file mixing both layouts is rejected.
21
+
22
+ ## New Features
23
+
24
+ <!-- Here goes the main new features and examples or instructions on how to use them -->
25
+
26
+ ## Bug Fixes
27
+
28
+ <!-- Here goes notable bug fixes that are worth a special mention or explanation -->
@@ -3,8 +3,8 @@
3
3
 
4
4
  [build-system]
5
5
  requires = [
6
- "setuptools == 82.0.1",
7
- "setuptools_scm[toml] == 10.2.0",
6
+ "setuptools == 83.0.0",
7
+ "setuptools_scm[toml] == 10.2.1",
8
8
  "frequenz-repo-config[lib] == 0.18.0",
9
9
  ]
10
10
  build-backend = "setuptools.build_meta"
@@ -29,7 +29,7 @@ dependencies = [
29
29
  "marshmallow-dataclass >= 8.7.1, < 9",
30
30
  "typing-extensions >= 4.14.1, < 5",
31
31
  "frequenz-microgrid-component-graph >= 0.5.0, < 0.6",
32
- "frequenz-client-assets >= 0.3.1, < 0.4",
32
+ "frequenz-client-assets >= 0.5.0, < 0.6",
33
33
  ]
34
34
  dynamic = ["version"]
35
35
 
@@ -56,7 +56,7 @@ dev-flake8 = [
56
56
  "flake8-datetimez == 20.10.0",
57
57
  "flake8-docstrings == 1.7.0",
58
58
  "flake8-pyproject == 1.2.4", # For reading the flake8 config from pyproject.toml
59
- "pydoclint == 0.9.0",
59
+ "pydoclint == 0.9.1",
60
60
  "pydocstyle == 6.3.0",
61
61
  ]
62
62
  dev-formatting = ["black == 26.5.1", "isort == 8.0.1"]
@@ -67,20 +67,20 @@ dev-mkdocs = [
67
67
  "mkdocs-gen-files == 0.6.1",
68
68
  "mkdocs-literate-nav == 0.6.3",
69
69
  "mkdocs-macros-plugin == 1.5.0",
70
- "mkdocs-material == 9.7.6",
71
- "mkdocstrings[python] == 1.0.4",
70
+ "mkdocs-material == 9.7.7",
71
+ "mkdocstrings[python] == 1.0.6",
72
72
  "mkdocstrings-python == 2.0.5",
73
73
  "frequenz-repo-config[lib] == 0.18.0",
74
74
  ]
75
75
  dev-mypy = [
76
- "mypy == 2.1.0",
76
+ "mypy == 2.3.0",
77
77
  "types-networkx>=3.6.1.20251220",
78
- "types-Markdown == 3.10.2.20260518",
78
+ "types-Markdown == 3.10.2.20260712",
79
79
  # For checking the noxfile, docs/ script, and tests
80
80
  "frequenz-gridpool[dev-mkdocs,dev-noxfile,dev-pytest]",
81
81
  ]
82
82
  dev-noxfile = [
83
- "nox == 2026.4.10",
83
+ "nox == 2026.7.11",
84
84
  "frequenz-repo-config[lib] == 0.18.0",
85
85
  ]
86
86
  dev-pylint = [
@@ -301,18 +301,18 @@ class MicrogridConfig:
301
301
  """Load microgrid configurations from table entries.
302
302
 
303
303
  Args:
304
- data: The loaded TOML data.
304
+ data: The table mapping microgrid IDs to their entries.
305
305
 
306
306
  Returns:
307
307
  A dict mapping microgrid IDs to MicrogridConfig instances.
308
308
 
309
309
  Raises:
310
- ValueError: If top-level keys are not numeric microgrid IDs
310
+ ValueError: If the keys are not numeric microgrid IDs
311
311
  or if there is a microgrid ID mismatch.
312
312
  TypeError: If microgrid data is not a dict.
313
313
  """
314
314
  if not all(str(k).isdigit() for k in data.keys()):
315
- raise ValueError("All top-level keys must be numeric microgrid IDs.")
315
+ raise ValueError("All microgrid keys must be numeric microgrid IDs.")
316
316
 
317
317
  mgrids = {}
318
318
  for mid, entry in data.items():
@@ -337,6 +337,51 @@ class MicrogridConfig:
337
337
 
338
338
  return mgrids
339
339
 
340
+ @classmethod
341
+ def _microgrid_table(cls, data: dict[str, Any], source: str) -> dict[str, Any]:
342
+ """Pick the microgrid entries out of a parsed config document.
343
+
344
+ Entries live under `assets.microgrids`. A document without an `assets`
345
+ table is read in the deprecated layout, where the entries sit at the
346
+ top level.
347
+
348
+ Args:
349
+ data: The parsed TOML document.
350
+ source: Name of the document, used in messages.
351
+
352
+ Returns:
353
+ The table mapping microgrid IDs to their entries.
354
+
355
+ Raises:
356
+ TypeError: If `assets` is not a table.
357
+ ValueError: If both layouts are present, which means a
358
+ half-migrated file rather than a merge.
359
+ """
360
+ if "assets" not in data:
361
+ _logger.warning(
362
+ "%s: top-level microgrid IDs are deprecated, "
363
+ "nest the entries under `assets.microgrids` instead.",
364
+ source,
365
+ )
366
+ return data
367
+
368
+ assets = data["assets"]
369
+ if not isinstance(assets, dict):
370
+ raise TypeError(f"{source}: `assets` must be a table, got {type(assets)}")
371
+
372
+ if unprefixed := sorted(k for k in data if k != "assets"):
373
+ raise ValueError(
374
+ f"{source}: keys {unprefixed} sit outside `assets` while the file "
375
+ "already has an `assets` table; move them under `assets.microgrids`."
376
+ )
377
+
378
+ microgrids = assets.get("microgrids", {})
379
+ if not isinstance(microgrids, dict):
380
+ raise TypeError(
381
+ f"{source}: `assets.microgrids` must be a table, got {type(microgrids)}"
382
+ )
383
+ return microgrids
384
+
340
385
  @classmethod
341
386
  def load_from_file(cls, config_path: Path) -> dict[str, Self]:
342
387
  """
@@ -353,7 +398,7 @@ class MicrogridConfig:
353
398
 
354
399
  assert isinstance(data, dict)
355
400
 
356
- return cls._load_table_entries(data)
401
+ return cls._load_table_entries(cls._microgrid_table(data, str(config_path)))
357
402
 
358
403
 
359
404
  def merge_microgrid_configs(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: frequenz-gridpool
3
- Version: 0.6.2
3
+ Version: 0.6.4
4
4
  Summary: High-level interface to grid pools for the Frequenz platform.
5
5
  Author-email: Frequenz Energy-as-a-Service GmbH <floss@frequenz.com>
6
6
  License-Expression: MIT
@@ -22,7 +22,7 @@ License-File: LICENSE
22
22
  Requires-Dist: marshmallow-dataclass<9,>=8.7.1
23
23
  Requires-Dist: typing-extensions<5,>=4.14.1
24
24
  Requires-Dist: frequenz-microgrid-component-graph<0.6,>=0.5.0
25
- Requires-Dist: frequenz-client-assets<0.4,>=0.3.1
25
+ Requires-Dist: frequenz-client-assets<0.6,>=0.5.0
26
26
  Provides-Extra: cli
27
27
  Requires-Dist: asyncclick<9,>=8.3.0.4; extra == "cli"
28
28
  Requires-Dist: tomlkit<1,>=0.13.0; extra == "cli"
@@ -35,7 +35,7 @@ Requires-Dist: flake8==7.3.0; extra == "dev-flake8"
35
35
  Requires-Dist: flake8-datetimez==20.10.0; extra == "dev-flake8"
36
36
  Requires-Dist: flake8-docstrings==1.7.0; extra == "dev-flake8"
37
37
  Requires-Dist: flake8-pyproject==1.2.4; extra == "dev-flake8"
38
- Requires-Dist: pydoclint==0.9.0; extra == "dev-flake8"
38
+ Requires-Dist: pydoclint==0.9.1; extra == "dev-flake8"
39
39
  Requires-Dist: pydocstyle==6.3.0; extra == "dev-flake8"
40
40
  Provides-Extra: dev-formatting
41
41
  Requires-Dist: black==26.5.1; extra == "dev-formatting"
@@ -47,17 +47,17 @@ Requires-Dist: mike==2.2.0; extra == "dev-mkdocs"
47
47
  Requires-Dist: mkdocs-gen-files==0.6.1; extra == "dev-mkdocs"
48
48
  Requires-Dist: mkdocs-literate-nav==0.6.3; extra == "dev-mkdocs"
49
49
  Requires-Dist: mkdocs-macros-plugin==1.5.0; extra == "dev-mkdocs"
50
- Requires-Dist: mkdocs-material==9.7.6; extra == "dev-mkdocs"
51
- Requires-Dist: mkdocstrings[python]==1.0.4; extra == "dev-mkdocs"
50
+ Requires-Dist: mkdocs-material==9.7.7; extra == "dev-mkdocs"
51
+ Requires-Dist: mkdocstrings[python]==1.0.6; extra == "dev-mkdocs"
52
52
  Requires-Dist: mkdocstrings-python==2.0.5; extra == "dev-mkdocs"
53
53
  Requires-Dist: frequenz-repo-config[lib]==0.18.0; extra == "dev-mkdocs"
54
54
  Provides-Extra: dev-mypy
55
- Requires-Dist: mypy==2.1.0; extra == "dev-mypy"
55
+ Requires-Dist: mypy==2.3.0; extra == "dev-mypy"
56
56
  Requires-Dist: types-networkx>=3.6.1.20251220; extra == "dev-mypy"
57
- Requires-Dist: types-Markdown==3.10.2.20260518; extra == "dev-mypy"
57
+ Requires-Dist: types-Markdown==3.10.2.20260712; extra == "dev-mypy"
58
58
  Requires-Dist: frequenz-gridpool[dev-mkdocs,dev-noxfile,dev-pytest]; extra == "dev-mypy"
59
59
  Provides-Extra: dev-noxfile
60
- Requires-Dist: nox==2026.4.10; extra == "dev-noxfile"
60
+ Requires-Dist: nox==2026.7.11; extra == "dev-noxfile"
61
61
  Requires-Dist: frequenz-repo-config[lib]==0.18.0; extra == "dev-noxfile"
62
62
  Provides-Extra: dev-pylint
63
63
  Requires-Dist: frequenz-gridpool[dev-mkdocs,dev-noxfile,dev-pytest]; extra == "dev-pylint"
@@ -1,7 +1,7 @@
1
1
  marshmallow-dataclass<9,>=8.7.1
2
2
  typing-extensions<5,>=4.14.1
3
3
  frequenz-microgrid-component-graph<0.6,>=0.5.0
4
- frequenz-client-assets<0.4,>=0.3.1
4
+ frequenz-client-assets<0.6,>=0.5.0
5
5
 
6
6
  [cli]
7
7
  asyncclick<9,>=8.3.0.4
@@ -15,7 +15,7 @@ flake8==7.3.0
15
15
  flake8-datetimez==20.10.0
16
16
  flake8-docstrings==1.7.0
17
17
  flake8-pyproject==1.2.4
18
- pydoclint==0.9.0
18
+ pydoclint==0.9.1
19
19
  pydocstyle==6.3.0
20
20
 
21
21
  [dev-formatting]
@@ -29,19 +29,19 @@ mike==2.2.0
29
29
  mkdocs-gen-files==0.6.1
30
30
  mkdocs-literate-nav==0.6.3
31
31
  mkdocs-macros-plugin==1.5.0
32
- mkdocs-material==9.7.6
33
- mkdocstrings[python]==1.0.4
32
+ mkdocs-material==9.7.7
33
+ mkdocstrings[python]==1.0.6
34
34
  mkdocstrings-python==2.0.5
35
35
  frequenz-repo-config[lib]==0.18.0
36
36
 
37
37
  [dev-mypy]
38
- mypy==2.1.0
38
+ mypy==2.3.0
39
39
  types-networkx>=3.6.1.20251220
40
- types-Markdown==3.10.2.20260518
40
+ types-Markdown==3.10.2.20260712
41
41
  frequenz-gridpool[dev-mkdocs,dev-noxfile,dev-pytest]
42
42
 
43
43
  [dev-noxfile]
44
- nox==2026.4.10
44
+ nox==2026.7.11
45
45
  frequenz-repo-config[lib]==0.18.0
46
46
 
47
47
  [dev-pylint]
@@ -1,60 +1,60 @@
1
1
  {
2
2
  "files": [
3
+ ".cookiecutter-replay.json",
4
+ ".editorconfig",
5
+ ".github/ISSUE_TEMPLATE/bug.yml",
6
+ ".github/ISSUE_TEMPLATE/config.yml",
7
+ ".github/ISSUE_TEMPLATE/feature.yml",
8
+ ".github/RELEASE_NOTES.template.md",
9
+ ".github/dependabot.yml",
10
+ ".github/keylabeler.yml",
11
+ ".github/labeler.yml",
12
+ ".github/workflows/auto-dependabot.yaml",
13
+ ".github/workflows/black-migration.yaml",
14
+ ".github/workflows/ci-pr.yaml",
15
+ ".github/workflows/ci.yaml",
16
+ ".github/workflows/dco-merge-queue.yml",
17
+ ".github/workflows/isort-migration.yaml",
18
+ ".github/workflows/labeler.yml",
19
+ ".github/workflows/release-notes-check.yml",
20
+ ".github/workflows/repo-config-migration.yaml",
3
21
  ".gitignore",
4
- "README.md",
22
+ "CODEOWNERS",
5
23
  "CONTRIBUTING.md",
6
- ".editorconfig",
7
- ".cookiecutter-replay.json",
8
- "pyproject.toml",
24
+ "LICENSE",
9
25
  "MANIFEST.in",
26
+ "README.md",
10
27
  "RELEASE_NOTES.md",
11
- "LICENSE",
28
+ "docs/CONTRIBUTING.md",
29
+ "docs/SUMMARY.md",
30
+ "docs/_css/mkdocstrings.css",
31
+ "docs/_css/style.css",
32
+ "docs/_img/logo.png",
33
+ "docs/_overrides/main.html",
34
+ "docs/_scripts/mkdocstrings_autoapi.py",
35
+ "docs/index.md",
12
36
  "mkdocs.yml",
13
- "CODEOWNERS",
14
37
  "noxfile.py",
15
- "src/frequenz/gridpool/conftest.py",
16
- "src/frequenz/gridpool/_graph_generator.py",
17
- "src/frequenz/gridpool/py.typed",
38
+ "pyproject.toml",
18
39
  "src/frequenz/gridpool/__init__.py",
19
- "src/frequenz/gridpool/config/microgrid.py",
20
- "src/frequenz/gridpool/config/load.py",
21
- "src/frequenz/gridpool/config/__init__.py",
22
- "src/frequenz/gridpool/cli/_dump_config.py",
40
+ "src/frequenz/gridpool/_graph_generator.py",
41
+ "src/frequenz/gridpool/cli/__init__.py",
23
42
  "src/frequenz/gridpool/cli/__main__.py",
43
+ "src/frequenz/gridpool/cli/_dump_config.py",
24
44
  "src/frequenz/gridpool/cli/_patch_config.py",
25
45
  "src/frequenz/gridpool/cli/_render_graph.py",
26
- "src/frequenz/gridpool/cli/__init__.py",
27
- ".github/labeler.yml",
28
- ".github/dependabot.yml",
29
- ".github/keylabeler.yml",
30
- ".github/RELEASE_NOTES.template.md",
31
- ".github/workflows/isort-migration.yaml",
32
- ".github/workflows/labeler.yml",
33
- ".github/workflows/repo-config-migration.yaml",
34
- ".github/workflows/ci-pr.yaml",
35
- ".github/workflows/ci.yaml",
36
- ".github/workflows/black-migration.yaml",
37
- ".github/workflows/dco-merge-queue.yml",
38
- ".github/workflows/release-notes-check.yml",
39
- ".github/workflows/auto-dependabot.yaml",
40
- ".github/ISSUE_TEMPLATE/config.yml",
41
- ".github/ISSUE_TEMPLATE/feature.yml",
42
- ".github/ISSUE_TEMPLATE/bug.yml",
43
- "tests/test_merge_config.py",
44
- "tests/test_load.py",
46
+ "src/frequenz/gridpool/config/__init__.py",
47
+ "src/frequenz/gridpool/config/load.py",
48
+ "src/frequenz/gridpool/config/microgrid.py",
49
+ "src/frequenz/gridpool/conftest.py",
50
+ "src/frequenz/gridpool/py.typed",
51
+ "tests/test_cli.py",
52
+ "tests/test_config.py",
45
53
  "tests/test_dump_config.py",
46
- "tests/test_patch_config.py",
47
54
  "tests/test_graph_generator.py",
48
- "tests/test_render_graph.py",
49
- "tests/test_config.py",
50
- "tests/test_cli.py",
51
- "docs/SUMMARY.md",
52
- "docs/CONTRIBUTING.md",
53
- "docs/index.md",
54
- "docs/_img/logo.png",
55
- "docs/_css/mkdocstrings.css",
56
- "docs/_css/style.css",
57
- "docs/_scripts/mkdocstrings_autoapi.py",
58
- "docs/_overrides/main.html"
55
+ "tests/test_load.py",
56
+ "tests/test_merge_config.py",
57
+ "tests/test_patch_config.py",
58
+ "tests/test_render_graph.py"
59
59
  ]
60
60
  }
@@ -0,0 +1,8 @@
1
+ {
2
+ "tag": "0.6.4",
3
+ "distance": 0,
4
+ "node": "g0b2bd42b6dee08d4d96a5ebf4c3626d8c277d769",
5
+ "dirty": false,
6
+ "branch": "HEAD",
7
+ "node_date": "2026-08-18"
8
+ }
@@ -1,20 +0,0 @@
1
- # Frequenz Gridpool Library Release Notes
2
-
3
- ## Summary
4
-
5
- This release updates the microgrid component graph library to v0.5.0 and adds a way to configure how the component graph is built.
6
-
7
- ## Upgrading
8
-
9
- * The per-category formulas (`pv`, `battery`, `chp`, `ev`) now read the component first and use the meter as the fallback. This is the opposite of the old order, and it changes the generated config. Regenerate stored configs with this release and review the diff.
10
- * To keep the old order, pass `ComponentGraphConfig(prefer_meters_in_component_formulas=True)` to `load_configs`, `load_configs_from_api` or `ComponentGraphGenerator`, or use the new `--prefer-meters-in-component-formulas` flag of the CLI.
11
- * The update brings more changes, for example to the `consumption` formula and to the graph validation error messages. See the [v0.5.0 release notes](https://github.com/frequenz-floss/frequenz-microgrid-component-graph-python/releases/tag/v0.5.0) of the component graph library for the full list.
12
-
13
- ## New Features
14
-
15
- * `load_configs` and `load_configs_from_api` take a `component_graph_config` argument, and `ComponentGraphGenerator` takes it as `config`. It controls how the component graph is built and how its formulas are generated. `ComponentGraphConfig` and `FormulaOverrides` are re-exported from `frequenz.gridpool` and `frequenz.gridpool.config`.
16
- * The `generate-config` and `print-formulas` CLI commands take a `--prefer-meters-in-component-formulas` flag, which reads the meter before the component in the per-category formulas.
17
-
18
- ## Bug Fixes
19
-
20
- <!-- Here goes notable bug fixes that are worth a special mention or explanation -->
@@ -1,8 +0,0 @@
1
- {
2
- "tag": "0.6.2",
3
- "distance": 0,
4
- "node": "g0a1ee9abfb5df460d8bdb8d71728a093d89217f1",
5
- "dirty": false,
6
- "branch": "HEAD",
7
- "node_date": "2026-07-20"
8
- }