frequenz-gridpool 0.8.0__tar.gz → 0.9.0__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 (34) hide show
  1. {frequenz_gridpool-0.8.0/src/frequenz_gridpool.egg-info → frequenz_gridpool-0.9.0}/PKG-INFO +11 -11
  2. frequenz_gridpool-0.9.0/RELEASE_NOTES.md +20 -0
  3. {frequenz_gridpool-0.8.0 → frequenz_gridpool-0.9.0}/pyproject.toml +15 -13
  4. {frequenz_gridpool-0.8.0 → frequenz_gridpool-0.9.0/src/frequenz_gridpool.egg-info}/PKG-INFO +11 -11
  5. {frequenz_gridpool-0.8.0 → frequenz_gridpool-0.9.0}/src/frequenz_gridpool.egg-info/requires.txt +10 -10
  6. {frequenz_gridpool-0.8.0 → frequenz_gridpool-0.9.0}/src/frequenz_gridpool.egg-info/scm_file_list.json +0 -1
  7. frequenz_gridpool-0.9.0/src/frequenz_gridpool.egg-info/scm_version.json +8 -0
  8. frequenz_gridpool-0.8.0/RELEASE_NOTES.md +0 -57
  9. frequenz_gridpool-0.8.0/src/frequenz_gridpool.egg-info/scm_version.json +0 -8
  10. {frequenz_gridpool-0.8.0 → frequenz_gridpool-0.9.0}/LICENSE +0 -0
  11. {frequenz_gridpool-0.8.0 → frequenz_gridpool-0.9.0}/MANIFEST.in +0 -0
  12. {frequenz_gridpool-0.8.0 → frequenz_gridpool-0.9.0}/README.md +0 -0
  13. {frequenz_gridpool-0.8.0 → frequenz_gridpool-0.9.0}/setup.cfg +0 -0
  14. {frequenz_gridpool-0.8.0 → frequenz_gridpool-0.9.0}/src/frequenz/gridpool/__init__.py +0 -0
  15. {frequenz_gridpool-0.8.0 → frequenz_gridpool-0.9.0}/src/frequenz/gridpool/_graph_generator.py +0 -0
  16. {frequenz_gridpool-0.8.0 → frequenz_gridpool-0.9.0}/src/frequenz/gridpool/cli/__init__.py +0 -0
  17. {frequenz_gridpool-0.8.0 → frequenz_gridpool-0.9.0}/src/frequenz/gridpool/cli/__main__.py +0 -0
  18. {frequenz_gridpool-0.8.0 → frequenz_gridpool-0.9.0}/src/frequenz/gridpool/cli/_dump_config.py +0 -0
  19. {frequenz_gridpool-0.8.0 → frequenz_gridpool-0.9.0}/src/frequenz/gridpool/cli/_patch_config.py +0 -0
  20. {frequenz_gridpool-0.8.0 → frequenz_gridpool-0.9.0}/src/frequenz/gridpool/cli/_render_graph.py +0 -0
  21. {frequenz_gridpool-0.8.0 → frequenz_gridpool-0.9.0}/src/frequenz/gridpool/config/__init__.py +0 -0
  22. {frequenz_gridpool-0.8.0 → frequenz_gridpool-0.9.0}/src/frequenz/gridpool/config/_assets.py +0 -0
  23. {frequenz_gridpool-0.8.0 → frequenz_gridpool-0.9.0}/src/frequenz/gridpool/config/_fields.py +0 -0
  24. {frequenz_gridpool-0.8.0 → frequenz_gridpool-0.9.0}/src/frequenz/gridpool/config/_gridpool.py +0 -0
  25. {frequenz_gridpool-0.8.0 → frequenz_gridpool-0.9.0}/src/frequenz/gridpool/config/_load.py +0 -0
  26. {frequenz_gridpool-0.8.0 → frequenz_gridpool-0.9.0}/src/frequenz/gridpool/config/_microgrid.py +0 -0
  27. {frequenz_gridpool-0.8.0 → frequenz_gridpool-0.9.0}/src/frequenz/gridpool/config/_migrations.py +0 -0
  28. {frequenz_gridpool-0.8.0 → frequenz_gridpool-0.9.0}/src/frequenz/gridpool/config/_topology.py +0 -0
  29. {frequenz_gridpool-0.8.0 → frequenz_gridpool-0.9.0}/src/frequenz/gridpool/conftest.py +0 -0
  30. {frequenz_gridpool-0.8.0 → frequenz_gridpool-0.9.0}/src/frequenz/gridpool/py.typed +0 -0
  31. {frequenz_gridpool-0.8.0 → frequenz_gridpool-0.9.0}/src/frequenz_gridpool.egg-info/SOURCES.txt +0 -0
  32. {frequenz_gridpool-0.8.0 → frequenz_gridpool-0.9.0}/src/frequenz_gridpool.egg-info/dependency_links.txt +0 -0
  33. {frequenz_gridpool-0.8.0 → frequenz_gridpool-0.9.0}/src/frequenz_gridpool.egg-info/entry_points.txt +0 -0
  34. {frequenz_gridpool-0.8.0 → frequenz_gridpool-0.9.0}/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.8.0
3
+ Version: 0.9.0
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<5,>=3.18.0
23
23
  Requires-Dist: marshmallow-dataclass<9,>=8.7.1
24
24
  Requires-Dist: typing-extensions<5,>=4.14.1
25
- Requires-Dist: frequenz-microgrid-component-graph<0.6,>=0.5.0
25
+ Requires-Dist: frequenz-microgrid-component-graph<0.7,>=0.6.0
26
26
  Requires-Dist: frequenz-client-assets<0.6,>=0.5.0
27
27
  Provides-Extra: cli
28
28
  Requires-Dist: asyncclick<9,>=8.3.0.4; extra == "cli"
@@ -32,7 +32,7 @@ Requires-Dist: frequenz-gridpool[cli]; extra == "render-graph"
32
32
  Requires-Dist: matplotlib<4,>=3.7.0; extra == "render-graph"
33
33
  Requires-Dist: networkx<4,>=3.0; extra == "render-graph"
34
34
  Provides-Extra: dev-flake8
35
- Requires-Dist: flake8==7.3.0; extra == "dev-flake8"
35
+ Requires-Dist: flake8==7.4.1; extra == "dev-flake8"
36
36
  Requires-Dist: flake8-datetimez==26.8.1; extra == "dev-flake8"
37
37
  Requires-Dist: flake8-docstrings==1.7.0; extra == "dev-flake8"
38
38
  Requires-Dist: flake8-pyproject==1.2.4; extra == "dev-flake8"
@@ -42,16 +42,16 @@ Provides-Extra: dev-formatting
42
42
  Requires-Dist: black==26.5.1; extra == "dev-formatting"
43
43
  Requires-Dist: isort==8.0.1; extra == "dev-formatting"
44
44
  Provides-Extra: dev-mkdocs
45
- Requires-Dist: Markdown==3.10.3; extra == "dev-mkdocs"
45
+ Requires-Dist: Markdown==3.11; extra == "dev-mkdocs"
46
46
  Requires-Dist: black==26.5.1; extra == "dev-mkdocs"
47
47
  Requires-Dist: mike==2.2.0; extra == "dev-mkdocs"
48
48
  Requires-Dist: mkdocs-gen-files==0.6.1; extra == "dev-mkdocs"
49
49
  Requires-Dist: mkdocs-literate-nav==0.6.3; extra == "dev-mkdocs"
50
50
  Requires-Dist: mkdocs-macros-plugin==1.5.0; extra == "dev-mkdocs"
51
51
  Requires-Dist: mkdocs-material==9.7.7; extra == "dev-mkdocs"
52
- Requires-Dist: mkdocstrings[python]==1.0.6; extra == "dev-mkdocs"
53
- Requires-Dist: mkdocstrings-python==2.0.7; extra == "dev-mkdocs"
54
- Requires-Dist: frequenz-repo-config[lib]==0.18.0; extra == "dev-mkdocs"
52
+ Requires-Dist: mkdocstrings[python]==1.0.7; extra == "dev-mkdocs"
53
+ Requires-Dist: mkdocstrings-python==2.0.9; extra == "dev-mkdocs"
54
+ Requires-Dist: frequenz-repo-config[lib]==0.19.0; extra == "dev-mkdocs"
55
55
  Provides-Extra: dev-mypy
56
56
  Requires-Dist: mypy==2.3.1; extra == "dev-mypy"
57
57
  Requires-Dist: types-networkx>=3.6.1.20251220; extra == "dev-mypy"
@@ -59,14 +59,14 @@ Requires-Dist: types-Markdown==3.10.2.20260712; extra == "dev-mypy"
59
59
  Requires-Dist: frequenz-gridpool[dev-mkdocs,dev-noxfile,dev-pytest]; extra == "dev-mypy"
60
60
  Provides-Extra: dev-noxfile
61
61
  Requires-Dist: nox==2026.8.17; extra == "dev-noxfile"
62
- Requires-Dist: frequenz-repo-config[lib]==0.18.0; extra == "dev-noxfile"
62
+ Requires-Dist: frequenz-repo-config[lib]==0.19.0; extra == "dev-noxfile"
63
63
  Provides-Extra: dev-pylint
64
64
  Requires-Dist: frequenz-gridpool[dev-mkdocs,dev-noxfile,dev-pytest]; extra == "dev-pylint"
65
65
  Provides-Extra: dev-pytest
66
66
  Requires-Dist: pytest==9.1.1; extra == "dev-pytest"
67
- Requires-Dist: pylint==4.0.7; extra == "dev-pytest"
68
- Requires-Dist: frequenz-repo-config[extra-lint-examples]==0.18.0; extra == "dev-pytest"
69
- Requires-Dist: pytest-mock==3.15.1; extra == "dev-pytest"
67
+ Requires-Dist: pylint==4.0.9; extra == "dev-pytest"
68
+ Requires-Dist: frequenz-repo-config[extra-lint-examples]==0.19.0; extra == "dev-pytest"
69
+ Requires-Dist: pytest-mock==3.16.0; extra == "dev-pytest"
70
70
  Requires-Dist: pytest-asyncio==1.4.0; extra == "dev-pytest"
71
71
  Requires-Dist: async-solipsism==0.9; extra == "dev-pytest"
72
72
  Requires-Dist: frequenz-gridpool[render-graph]; extra == "dev-pytest"
@@ -0,0 +1,20 @@
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
+ - Requires `frequenz-microgrid-component-graph` 0.6, which stops clamping the consumer
10
+ and producer formulas. `ComponentGraph.consumer_formula()` and
11
+ `ComponentGraph.producer_formula()` can now return values previously pinned
12
+ to zero: a negative consumer total, or a positive producer total.
13
+
14
+ ## New Features
15
+
16
+ <!-- Here goes the main new features and examples or instructions on how to use them -->
17
+
18
+ ## Bug Fixes
19
+
20
+ <!-- Here goes notable bug fixes that are worth a special mention or explanation -->
@@ -4,8 +4,8 @@
4
4
  [build-system]
5
5
  requires = [
6
6
  "setuptools == 84.0.0",
7
- "setuptools_scm[toml] == 10.2.1",
8
- "frequenz-repo-config[lib] == 0.18.0",
7
+ "setuptools_scm[toml] == 10.3.4",
8
+ "frequenz-repo-config[lib] == 0.19.0",
9
9
  ]
10
10
  build-backend = "setuptools.build_meta"
11
11
 
@@ -32,7 +32,7 @@ dependencies = [
32
32
  "marshmallow >= 3.18.0, < 5",
33
33
  "marshmallow-dataclass >= 8.7.1, < 9",
34
34
  "typing-extensions >= 4.14.1, < 5",
35
- "frequenz-microgrid-component-graph >= 0.5.0, < 0.6",
35
+ "frequenz-microgrid-component-graph >= 0.6.0, < 0.7",
36
36
  "frequenz-client-assets >= 0.5.0, < 0.6",
37
37
  ]
38
38
  dynamic = ["version"]
@@ -56,7 +56,7 @@ render-graph = [
56
56
  ]
57
57
 
58
58
  dev-flake8 = [
59
- "flake8 == 7.3.0",
59
+ "flake8 == 7.4.1",
60
60
  "flake8-datetimez == 26.8.1",
61
61
  "flake8-docstrings == 1.7.0",
62
62
  "flake8-pyproject == 1.2.4", # For reading the flake8 config from pyproject.toml
@@ -65,16 +65,16 @@ dev-flake8 = [
65
65
  ]
66
66
  dev-formatting = ["black == 26.5.1", "isort == 8.0.1"]
67
67
  dev-mkdocs = [
68
- "Markdown == 3.10.3",
68
+ "Markdown == 3.11",
69
69
  "black == 26.5.1",
70
70
  "mike == 2.2.0",
71
71
  "mkdocs-gen-files == 0.6.1",
72
72
  "mkdocs-literate-nav == 0.6.3",
73
73
  "mkdocs-macros-plugin == 1.5.0",
74
74
  "mkdocs-material == 9.7.7",
75
- "mkdocstrings[python] == 1.0.6",
76
- "mkdocstrings-python == 2.0.7",
77
- "frequenz-repo-config[lib] == 0.18.0",
75
+ "mkdocstrings[python] == 1.0.7",
76
+ "mkdocstrings-python == 2.0.9",
77
+ "frequenz-repo-config[lib] == 0.19.0",
78
78
  ]
79
79
  dev-mypy = [
80
80
  "mypy == 2.3.1",
@@ -85,7 +85,7 @@ dev-mypy = [
85
85
  ]
86
86
  dev-noxfile = [
87
87
  "nox == 2026.8.17",
88
- "frequenz-repo-config[lib] == 0.18.0",
88
+ "frequenz-repo-config[lib] == 0.19.0",
89
89
  ]
90
90
  dev-pylint = [
91
91
  # dev-pytest already defines a dependency to pylint because of the examples
@@ -94,9 +94,9 @@ dev-pylint = [
94
94
  ]
95
95
  dev-pytest = [
96
96
  "pytest == 9.1.1",
97
- "pylint == 4.0.7", # We need this to check for the examples
98
- "frequenz-repo-config[extra-lint-examples] == 0.18.0",
99
- "pytest-mock == 3.15.1",
97
+ "pylint == 4.0.9", # We need this to check for the examples
98
+ "frequenz-repo-config[extra-lint-examples] == 0.19.0",
99
+ "pytest-mock == 3.16.0",
100
100
  "pytest-asyncio == 1.4.0",
101
101
  "async-solipsism == 0.9",
102
102
  # The tests cover the cli package and the graph renderer. render-graph
@@ -172,13 +172,15 @@ disable = [
172
172
  ]
173
173
 
174
174
  [tool.pytest.ini_options]
175
- addopts = "-W=all -Werror -Wdefault::DeprecationWarning -Wdefault::PendingDeprecationWarning -vv"
175
+ addopts = "-W=all -Werror -Wdefault::DeprecationWarning -Wdefault::PendingDeprecationWarning"
176
176
  testpaths = ["tests", "src"]
177
+ asyncio_debug = true
177
178
  asyncio_mode = "auto"
178
179
  asyncio_default_fixture_loop_scope = "function"
179
180
  required_plugins = ["pytest-asyncio", "pytest-mock"]
180
181
 
181
182
  [tool.mypy]
183
+ enable_error_code = ["exhaustive-match"]
182
184
  explicit_package_bases = true
183
185
  namespace_packages = true
184
186
  # This option disables mypy cache, and it is sometimes useful to enable it if
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: frequenz-gridpool
3
- Version: 0.8.0
3
+ Version: 0.9.0
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<5,>=3.18.0
23
23
  Requires-Dist: marshmallow-dataclass<9,>=8.7.1
24
24
  Requires-Dist: typing-extensions<5,>=4.14.1
25
- Requires-Dist: frequenz-microgrid-component-graph<0.6,>=0.5.0
25
+ Requires-Dist: frequenz-microgrid-component-graph<0.7,>=0.6.0
26
26
  Requires-Dist: frequenz-client-assets<0.6,>=0.5.0
27
27
  Provides-Extra: cli
28
28
  Requires-Dist: asyncclick<9,>=8.3.0.4; extra == "cli"
@@ -32,7 +32,7 @@ Requires-Dist: frequenz-gridpool[cli]; extra == "render-graph"
32
32
  Requires-Dist: matplotlib<4,>=3.7.0; extra == "render-graph"
33
33
  Requires-Dist: networkx<4,>=3.0; extra == "render-graph"
34
34
  Provides-Extra: dev-flake8
35
- Requires-Dist: flake8==7.3.0; extra == "dev-flake8"
35
+ Requires-Dist: flake8==7.4.1; extra == "dev-flake8"
36
36
  Requires-Dist: flake8-datetimez==26.8.1; extra == "dev-flake8"
37
37
  Requires-Dist: flake8-docstrings==1.7.0; extra == "dev-flake8"
38
38
  Requires-Dist: flake8-pyproject==1.2.4; extra == "dev-flake8"
@@ -42,16 +42,16 @@ Provides-Extra: dev-formatting
42
42
  Requires-Dist: black==26.5.1; extra == "dev-formatting"
43
43
  Requires-Dist: isort==8.0.1; extra == "dev-formatting"
44
44
  Provides-Extra: dev-mkdocs
45
- Requires-Dist: Markdown==3.10.3; extra == "dev-mkdocs"
45
+ Requires-Dist: Markdown==3.11; extra == "dev-mkdocs"
46
46
  Requires-Dist: black==26.5.1; extra == "dev-mkdocs"
47
47
  Requires-Dist: mike==2.2.0; extra == "dev-mkdocs"
48
48
  Requires-Dist: mkdocs-gen-files==0.6.1; extra == "dev-mkdocs"
49
49
  Requires-Dist: mkdocs-literate-nav==0.6.3; extra == "dev-mkdocs"
50
50
  Requires-Dist: mkdocs-macros-plugin==1.5.0; extra == "dev-mkdocs"
51
51
  Requires-Dist: mkdocs-material==9.7.7; extra == "dev-mkdocs"
52
- Requires-Dist: mkdocstrings[python]==1.0.6; extra == "dev-mkdocs"
53
- Requires-Dist: mkdocstrings-python==2.0.7; extra == "dev-mkdocs"
54
- Requires-Dist: frequenz-repo-config[lib]==0.18.0; extra == "dev-mkdocs"
52
+ Requires-Dist: mkdocstrings[python]==1.0.7; extra == "dev-mkdocs"
53
+ Requires-Dist: mkdocstrings-python==2.0.9; extra == "dev-mkdocs"
54
+ Requires-Dist: frequenz-repo-config[lib]==0.19.0; extra == "dev-mkdocs"
55
55
  Provides-Extra: dev-mypy
56
56
  Requires-Dist: mypy==2.3.1; extra == "dev-mypy"
57
57
  Requires-Dist: types-networkx>=3.6.1.20251220; extra == "dev-mypy"
@@ -59,14 +59,14 @@ Requires-Dist: types-Markdown==3.10.2.20260712; extra == "dev-mypy"
59
59
  Requires-Dist: frequenz-gridpool[dev-mkdocs,dev-noxfile,dev-pytest]; extra == "dev-mypy"
60
60
  Provides-Extra: dev-noxfile
61
61
  Requires-Dist: nox==2026.8.17; extra == "dev-noxfile"
62
- Requires-Dist: frequenz-repo-config[lib]==0.18.0; extra == "dev-noxfile"
62
+ Requires-Dist: frequenz-repo-config[lib]==0.19.0; extra == "dev-noxfile"
63
63
  Provides-Extra: dev-pylint
64
64
  Requires-Dist: frequenz-gridpool[dev-mkdocs,dev-noxfile,dev-pytest]; extra == "dev-pylint"
65
65
  Provides-Extra: dev-pytest
66
66
  Requires-Dist: pytest==9.1.1; extra == "dev-pytest"
67
- Requires-Dist: pylint==4.0.7; extra == "dev-pytest"
68
- Requires-Dist: frequenz-repo-config[extra-lint-examples]==0.18.0; extra == "dev-pytest"
69
- Requires-Dist: pytest-mock==3.15.1; extra == "dev-pytest"
67
+ Requires-Dist: pylint==4.0.9; extra == "dev-pytest"
68
+ Requires-Dist: frequenz-repo-config[extra-lint-examples]==0.19.0; extra == "dev-pytest"
69
+ Requires-Dist: pytest-mock==3.16.0; extra == "dev-pytest"
70
70
  Requires-Dist: pytest-asyncio==1.4.0; extra == "dev-pytest"
71
71
  Requires-Dist: async-solipsism==0.9; extra == "dev-pytest"
72
72
  Requires-Dist: frequenz-gridpool[render-graph]; extra == "dev-pytest"
@@ -1,7 +1,7 @@
1
1
  marshmallow<5,>=3.18.0
2
2
  marshmallow-dataclass<9,>=8.7.1
3
3
  typing-extensions<5,>=4.14.1
4
- frequenz-microgrid-component-graph<0.6,>=0.5.0
4
+ frequenz-microgrid-component-graph<0.7,>=0.6.0
5
5
  frequenz-client-assets<0.6,>=0.5.0
6
6
 
7
7
  [cli]
@@ -12,7 +12,7 @@ tomlkit<1,>=0.13.0
12
12
  frequenz-gridpool[dev-flake8,dev-formatting,dev-mkdocs,dev-mypy,dev-noxfile,dev-pylint,dev-pytest,render-graph]
13
13
 
14
14
  [dev-flake8]
15
- flake8==7.3.0
15
+ flake8==7.4.1
16
16
  flake8-datetimez==26.8.1
17
17
  flake8-docstrings==1.7.0
18
18
  flake8-pyproject==1.2.4
@@ -24,16 +24,16 @@ black==26.5.1
24
24
  isort==8.0.1
25
25
 
26
26
  [dev-mkdocs]
27
- Markdown==3.10.3
27
+ Markdown==3.11
28
28
  black==26.5.1
29
29
  mike==2.2.0
30
30
  mkdocs-gen-files==0.6.1
31
31
  mkdocs-literate-nav==0.6.3
32
32
  mkdocs-macros-plugin==1.5.0
33
33
  mkdocs-material==9.7.7
34
- mkdocstrings[python]==1.0.6
35
- mkdocstrings-python==2.0.7
36
- frequenz-repo-config[lib]==0.18.0
34
+ mkdocstrings[python]==1.0.7
35
+ mkdocstrings-python==2.0.9
36
+ frequenz-repo-config[lib]==0.19.0
37
37
 
38
38
  [dev-mypy]
39
39
  mypy==2.3.1
@@ -43,16 +43,16 @@ frequenz-gridpool[dev-mkdocs,dev-noxfile,dev-pytest]
43
43
 
44
44
  [dev-noxfile]
45
45
  nox==2026.8.17
46
- frequenz-repo-config[lib]==0.18.0
46
+ frequenz-repo-config[lib]==0.19.0
47
47
 
48
48
  [dev-pylint]
49
49
  frequenz-gridpool[dev-mkdocs,dev-noxfile,dev-pytest]
50
50
 
51
51
  [dev-pytest]
52
52
  pytest==9.1.1
53
- pylint==4.0.7
54
- frequenz-repo-config[extra-lint-examples]==0.18.0
55
- pytest-mock==3.15.1
53
+ pylint==4.0.9
54
+ frequenz-repo-config[extra-lint-examples]==0.19.0
55
+ pytest-mock==3.16.0
56
56
  pytest-asyncio==1.4.0
57
57
  async-solipsism==0.9
58
58
  frequenz-gridpool[render-graph]
@@ -13,7 +13,6 @@
13
13
  ".github/workflows/black-migration.yaml",
14
14
  ".github/workflows/ci-pr.yaml",
15
15
  ".github/workflows/ci.yaml",
16
- ".github/workflows/dco-merge-queue.yml",
17
16
  ".github/workflows/isort-migration.yaml",
18
17
  ".github/workflows/labeler.yml",
19
18
  ".github/workflows/release-notes-check.yml",
@@ -0,0 +1,8 @@
1
+ {
2
+ "tag": "0.9.0",
3
+ "distance": 0,
4
+ "node": "g89c4f0c9d5205d548fb84419c3e63e6a4bd9608b",
5
+ "dirty": false,
6
+ "branch": "HEAD",
7
+ "node_date": "2026-10-14"
8
+ }
@@ -1,57 +0,0 @@
1
- # Frequenz Gridpool Library Release Notes
2
-
3
- ## Summary
4
-
5
- This release rounds out `gridpool-cli` for the `assets` config layout and adds
6
- gridpool enterprise ownership to the config model. The CLI can now generate,
7
- validate, patch, and query merged config files.
8
-
9
- ## Upgrading
10
-
11
- - The legacy config layouts are no longer migrated on load: top-level microgrid
12
- IDs and `meta`-nested microgrid fields are gone. A file with no `assets` table
13
- now loads as empty and contributes nothing to a merge, rather than having its
14
- top-level keys read as microgrid IDs. This lets a mixed list of files (some
15
- carrying an `[app]` table for their own config, some an `assets` table) be
16
- passed to `AssetsConfig.load_from_files` / `load_configs`, which reads only the
17
- `assets`-bearing ones. Rebuild any legacy-layout files with `generate-config`.
18
-
19
- - `generate-config` now writes the `assets.microgrids` layout and stamps
20
- `assets.version`, instead of the legacy layout. Regenerate configs to get the
21
- current format; generated files then load back without a migration.
22
-
23
- - `generate-config --inplace` refuses legacy-layout files (top-level or
24
- `meta`-nested), which it would duplicate rather than edit. Rebuild those from
25
- scratch.
26
-
27
- ## New Features
28
-
29
- - `gridpool-cli validate <files>` checks config files offline and exits
30
- non-zero on the first error, to gate config-repo CI. Each file must be valid
31
- on its own, so a record names its own key and required fields; the files are
32
- then checked merged, for the cross-record checks.
33
-
34
- - `gridpool-cli` accepts `FREQUENZ_API_KEY` and `FREQUENZ_API_SECRET` as a
35
- fallback pair for `ASSETS_API_AUTH_KEY` and `ASSETS_API_SIGN_SECRET`.
36
-
37
- - Gridpools are described under `assets.gridpools`, each entry naming the
38
- enterprise that owns the gridpool. `AssetsConfig.find_enterprise(gridpool_id)`
39
- returns the configured owner.
40
- `gridpool-cli find-enterprise <gridpool_id> <files>` prints it from the config.
41
- `AssetsConfig.check` enforces the one-enterprise-per-gridpool invariant: a
42
- gridpool's microgrids may not disagree on it, and a declared enterprise must
43
- match the inferred one.
44
-
45
- - A config derived from the Assets API now carries each microgrid's
46
- `enterprise_id`.
47
-
48
- - `generate-config --inplace` refreshes managed values while preserving
49
- formatting; `--fill-missing` only adds absent values. Generated patches are
50
- validated before writing.
51
-
52
- ## Bug Fixes
53
-
54
- - Config files with validity periods now load under marshmallow 3, not only
55
- marshmallow 4. `tomllib` yields native `datetime` objects, which marshmallow
56
- 3's `DateTime` field rejected. `marshmallow` is now a direct dependency so the
57
- minimum-version test exercises this path.
@@ -1,8 +0,0 @@
1
- {
2
- "tag": "0.8.0",
3
- "distance": 0,
4
- "node": "g54f9a3172be0f8092dc546ad8ea7d5d35c8126ab",
5
- "dirty": false,
6
- "branch": "HEAD",
7
- "node_date": "2026-09-01"
8
- }