frequenz-gridpool 0.1.0__tar.gz → 0.2.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 (20) hide show
  1. {frequenz_gridpool-0.1.0/src/frequenz_gridpool.egg-info → frequenz_gridpool-0.2.0}/PKG-INFO +11 -10
  2. {frequenz_gridpool-0.1.0 → frequenz_gridpool-0.2.0}/RELEASE_NOTES.md +3 -3
  3. {frequenz_gridpool-0.1.0 → frequenz_gridpool-0.2.0}/pyproject.toml +15 -14
  4. {frequenz_gridpool-0.1.0 → frequenz_gridpool-0.2.0}/src/frequenz/gridpool/_microgrid_config.py +2 -2
  5. frequenz_gridpool-0.2.0/src/frequenz/gridpool/cli/__init__.py +1 -0
  6. frequenz_gridpool-0.2.0/src/frequenz/gridpool/cli/__main__.py +72 -0
  7. {frequenz_gridpool-0.1.0 → frequenz_gridpool-0.2.0/src/frequenz_gridpool.egg-info}/PKG-INFO +11 -10
  8. {frequenz_gridpool-0.1.0 → frequenz_gridpool-0.2.0}/src/frequenz_gridpool.egg-info/SOURCES.txt +3 -0
  9. frequenz_gridpool-0.2.0/src/frequenz_gridpool.egg-info/entry_points.txt +2 -0
  10. {frequenz_gridpool-0.1.0 → frequenz_gridpool-0.2.0}/src/frequenz_gridpool.egg-info/requires.txt +10 -9
  11. {frequenz_gridpool-0.1.0 → frequenz_gridpool-0.2.0}/LICENSE +0 -0
  12. {frequenz_gridpool-0.1.0 → frequenz_gridpool-0.2.0}/MANIFEST.in +0 -0
  13. {frequenz_gridpool-0.1.0 → frequenz_gridpool-0.2.0}/README.md +0 -0
  14. {frequenz_gridpool-0.1.0 → frequenz_gridpool-0.2.0}/setup.cfg +0 -0
  15. {frequenz_gridpool-0.1.0 → frequenz_gridpool-0.2.0}/src/frequenz/gridpool/__init__.py +0 -0
  16. {frequenz_gridpool-0.1.0 → frequenz_gridpool-0.2.0}/src/frequenz/gridpool/_graph_generator.py +0 -0
  17. {frequenz_gridpool-0.1.0 → frequenz_gridpool-0.2.0}/src/frequenz/gridpool/conftest.py +0 -0
  18. {frequenz_gridpool-0.1.0 → frequenz_gridpool-0.2.0}/src/frequenz/gridpool/py.typed +0 -0
  19. {frequenz_gridpool-0.1.0 → frequenz_gridpool-0.2.0}/src/frequenz_gridpool.egg-info/dependency_links.txt +0 -0
  20. {frequenz_gridpool-0.1.0 → frequenz_gridpool-0.2.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.1.0
3
+ Version: 0.2.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: MIT
@@ -21,18 +21,19 @@ Requires-Python: <4,>=3.11
21
21
  Description-Content-Type: text/markdown
22
22
  License-File: LICENSE
23
23
  Requires-Dist: marshmallow-dataclass<9,>=8.7.1
24
+ Requires-Dist: asyncclick<9,>=8.3.0.4
24
25
  Requires-Dist: typing-extensions<5,>=4.14.1
25
26
  Requires-Dist: frequenz-microgrid-component-graph<0.3,>=0.2.0
26
27
  Requires-Dist: frequenz-client-assets<0.3,>=0.2.0
27
28
  Provides-Extra: dev-flake8
28
29
  Requires-Dist: flake8==7.3.0; extra == "dev-flake8"
29
30
  Requires-Dist: flake8-docstrings==1.7.0; extra == "dev-flake8"
30
- Requires-Dist: flake8-pyproject==1.2.3; extra == "dev-flake8"
31
- Requires-Dist: pydoclint==0.8.1; extra == "dev-flake8"
31
+ Requires-Dist: flake8-pyproject==1.2.4; extra == "dev-flake8"
32
+ Requires-Dist: pydoclint==0.8.3; extra == "dev-flake8"
32
33
  Requires-Dist: pydocstyle==6.3.0; extra == "dev-flake8"
33
34
  Provides-Extra: dev-formatting
34
35
  Requires-Dist: black==25.11.0; extra == "dev-formatting"
35
- Requires-Dist: isort==6.0.0; extra == "dev-formatting"
36
+ Requires-Dist: isort==7.0.0; extra == "dev-formatting"
36
37
  Provides-Extra: dev-mkdocs
37
38
  Requires-Dist: Markdown==3.10; extra == "dev-mkdocs"
38
39
  Requires-Dist: black==25.11.0; extra == "dev-mkdocs"
@@ -41,22 +42,22 @@ Requires-Dist: mkdocs-gen-files==0.5.0; extra == "dev-mkdocs"
41
42
  Requires-Dist: mkdocs-literate-nav==0.6.2; extra == "dev-mkdocs"
42
43
  Requires-Dist: mkdocs-macros-plugin==1.5.0; extra == "dev-mkdocs"
43
44
  Requires-Dist: mkdocs-material==9.7.0; extra == "dev-mkdocs"
44
- Requires-Dist: mkdocstrings[python]==0.30.1; extra == "dev-mkdocs"
45
+ Requires-Dist: mkdocstrings[python]==1.0.0; extra == "dev-mkdocs"
45
46
  Requires-Dist: mkdocstrings-python==1.19.0; extra == "dev-mkdocs"
46
- Requires-Dist: frequenz-repo-config[lib]==0.13.6; extra == "dev-mkdocs"
47
+ Requires-Dist: frequenz-repo-config[lib]==0.13.7; extra == "dev-mkdocs"
47
48
  Provides-Extra: dev-mypy
48
- Requires-Dist: mypy==1.18.2; extra == "dev-mypy"
49
+ Requires-Dist: mypy==1.19.0; extra == "dev-mypy"
49
50
  Requires-Dist: types-Markdown==3.10.0.20251106; extra == "dev-mypy"
50
51
  Requires-Dist: frequenz-gridpool[dev-mkdocs,dev-noxfile,dev-pytest]; extra == "dev-mypy"
51
52
  Provides-Extra: dev-noxfile
52
53
  Requires-Dist: nox==2025.11.12; extra == "dev-noxfile"
53
- Requires-Dist: frequenz-repo-config[lib]==0.13.6; extra == "dev-noxfile"
54
+ Requires-Dist: frequenz-repo-config[lib]==0.13.7; extra == "dev-noxfile"
54
55
  Provides-Extra: dev-pylint
55
56
  Requires-Dist: frequenz-gridpool[dev-mkdocs,dev-noxfile,dev-pytest]; extra == "dev-pylint"
56
57
  Provides-Extra: dev-pytest
57
58
  Requires-Dist: pytest==8.4.1; extra == "dev-pytest"
58
- Requires-Dist: pylint==4.0.3; extra == "dev-pytest"
59
- Requires-Dist: frequenz-repo-config[extra-lint-examples]==0.13.6; extra == "dev-pytest"
59
+ Requires-Dist: pylint==4.0.4; extra == "dev-pytest"
60
+ Requires-Dist: frequenz-repo-config[extra-lint-examples]==0.13.7; extra == "dev-pytest"
60
61
  Requires-Dist: pytest-mock==3.15.1; extra == "dev-pytest"
61
62
  Requires-Dist: pytest-asyncio==1.3.0; extra == "dev-pytest"
62
63
  Requires-Dist: async-solipsism==0.8; extra == "dev-pytest"
@@ -5,14 +5,14 @@
5
5
  <!-- Here goes a general summary of what this release is about -->
6
6
 
7
7
  ## Upgrading
8
-
8
+ * Microgrid_config is updated from AC_ACTIVE_POWER to AC_POWER_ACTIVE in accordance with the update in client-reporting - v0.20.0
9
9
  <!-- Here goes notes on how to upgrade from previous versions, including deprecations and what they should be replaced with -->
10
10
 
11
11
  ## New Features
12
12
 
13
- * Expose microgrid config `Metadata`.
13
+ * Add CLI tool to print formulas from assets API component graph.
14
14
 
15
- * This introduces the `ComponentGraphGenerator`, that uses the assets API to fetch assets for a specified microgrid, and builds a component graph for it, from which various formulas for the microgrid can be generated.
15
+ <!-- Here goes the main new features and examples or instructions on how to use them -->
16
16
 
17
17
  ## Bug Fixes
18
18
 
@@ -5,7 +5,7 @@
5
5
  requires = [
6
6
  "setuptools == 80.9.0",
7
7
  "setuptools_scm[toml] == 9.2.2",
8
- "frequenz-repo-config[lib] == 0.13.6",
8
+ "frequenz-repo-config[lib] == 0.13.7",
9
9
  ]
10
10
  build-backend = "setuptools.build_meta"
11
11
 
@@ -15,7 +15,6 @@ description = "High-level interface to grid pools for the Frequenz platform."
15
15
  readme = "README.md"
16
16
  license = { text = "MIT" }
17
17
  keywords = ["frequenz", "python", "lib", "library", "gridpool"]
18
- # TODO(cookiecutter): Remove and add more classifiers if appropriate
19
18
  classifiers = [
20
19
  "Development Status :: 3 - Alpha",
21
20
  "Intended Audience :: Developers",
@@ -26,29 +25,31 @@ classifiers = [
26
25
  "Typing :: Typed",
27
26
  ]
28
27
  requires-python = ">= 3.11, < 4"
29
- # TODO(cookiecutter): Remove and add more dependencies if appropriate
30
28
  dependencies = [
31
- "marshmallow-dataclass>=8.7.1,<9",
29
+ "marshmallow-dataclass >= 8.7.1, < 9",
30
+ "asyncclick >= 8.3.0.4, < 9",
32
31
  "typing-extensions >= 4.14.1, < 5",
33
32
  "frequenz-microgrid-component-graph >= 0.2.0, < 0.3",
34
33
  "frequenz-client-assets >= 0.2.0, < 0.3",
35
34
  ]
36
35
  dynamic = ["version"]
37
36
 
37
+ [project.scripts]
38
+ gridpool-cli = "frequenz.gridpool.cli.__main__:main"
39
+
38
40
  [[project.authors]]
39
41
  name = "Frequenz Energy-as-a-Service GmbH"
40
42
  email = "floss@frequenz.com"
41
43
 
42
- # TODO(cookiecutter): Remove and add more optional dependencies if appropriate
43
44
  [project.optional-dependencies]
44
45
  dev-flake8 = [
45
46
  "flake8 == 7.3.0",
46
47
  "flake8-docstrings == 1.7.0",
47
- "flake8-pyproject == 1.2.3", # For reading the flake8 config from pyproject.toml
48
- "pydoclint == 0.8.1",
48
+ "flake8-pyproject == 1.2.4", # For reading the flake8 config from pyproject.toml
49
+ "pydoclint == 0.8.3",
49
50
  "pydocstyle == 6.3.0",
50
51
  ]
51
- dev-formatting = ["black == 25.11.0", "isort == 6.0.0"]
52
+ dev-formatting = ["black == 25.11.0", "isort == 7.0.0"]
52
53
  dev-mkdocs = [
53
54
  "Markdown == 3.10",
54
55
  "black == 25.11.0",
@@ -57,19 +58,19 @@ dev-mkdocs = [
57
58
  "mkdocs-literate-nav == 0.6.2",
58
59
  "mkdocs-macros-plugin == 1.5.0",
59
60
  "mkdocs-material == 9.7.0",
60
- "mkdocstrings[python] == 0.30.1",
61
+ "mkdocstrings[python] == 1.0.0",
61
62
  "mkdocstrings-python == 1.19.0",
62
- "frequenz-repo-config[lib] == 0.13.6",
63
+ "frequenz-repo-config[lib] == 0.13.7",
63
64
  ]
64
65
  dev-mypy = [
65
- "mypy == 1.18.2",
66
+ "mypy == 1.19.0",
66
67
  "types-Markdown == 3.10.0.20251106",
67
68
  # For checking the noxfile, docs/ script, and tests
68
69
  "frequenz-gridpool[dev-mkdocs,dev-noxfile,dev-pytest]",
69
70
  ]
70
71
  dev-noxfile = [
71
72
  "nox == 2025.11.12",
72
- "frequenz-repo-config[lib] == 0.13.6",
73
+ "frequenz-repo-config[lib] == 0.13.7",
73
74
  ]
74
75
  dev-pylint = [
75
76
  # dev-pytest already defines a dependency to pylint because of the examples
@@ -78,8 +79,8 @@ dev-pylint = [
78
79
  ]
79
80
  dev-pytest = [
80
81
  "pytest == 8.4.1",
81
- "pylint == 4.0.3", # We need this to check for the examples
82
- "frequenz-repo-config[extra-lint-examples] == 0.13.6",
82
+ "pylint == 4.0.4", # We need this to check for the examples
83
+ "frequenz-repo-config[extra-lint-examples] == 0.13.7",
83
84
  "pytest-mock == 3.15.1",
84
85
  "pytest-asyncio == 1.3.0",
85
86
  "async-solipsism == 0.8",
@@ -41,8 +41,8 @@ class ComponentTypeConfig:
41
41
  def __post_init__(self) -> None:
42
42
  """Set the default formula if none is provided."""
43
43
  self.formula = self.formula or {}
44
- if "AC_ACTIVE_POWER" not in self.formula:
45
- self.formula["AC_ACTIVE_POWER"] = "+".join(
44
+ if "AC_POWER_ACTIVE" not in self.formula:
45
+ self.formula["AC_POWER_ACTIVE"] = "+".join(
46
46
  [f"#{cid}" for cid in self._default_cids()]
47
47
  )
48
48
 
@@ -0,0 +1 @@
1
+ """Package for CLI tool for gridpool functionality."""
@@ -0,0 +1,72 @@
1
+ # License: MIT
2
+ # Copyright © 2025 Frequenz Energy-as-a-Service GmbH
3
+
4
+ """CLI tool for gridpool functionality."""
5
+
6
+ import os
7
+
8
+ import asyncclick as click
9
+ from frequenz.client.assets import AssetsApiClient
10
+ from frequenz.client.common.microgrid import MicrogridId
11
+
12
+ from frequenz.gridpool import ComponentGraphGenerator
13
+
14
+
15
+ @click.group()
16
+ async def cli() -> None:
17
+ """CLI tool for gridpool functionality."""
18
+
19
+
20
+ @cli.command()
21
+ @click.argument("microgrid_id", type=int)
22
+ @click.option(
23
+ "--prefix",
24
+ type=str,
25
+ default="{component}",
26
+ help="Prefix format for the output (Supports {microgrid_id} and {component} placeholders).",
27
+ )
28
+ async def print_formulas(
29
+ microgrid_id: int,
30
+ prefix: str,
31
+ ) -> None:
32
+ """Fetch and print component graph formulas for a microgrid."""
33
+ url = os.environ.get("ASSETS_API_URL")
34
+ key = os.environ.get("ASSETS_API_AUTH_KEY")
35
+ secret = os.environ.get("ASSETS_API_SIGN_SECRET")
36
+ if not url or not key or not secret:
37
+ raise click.ClickException(
38
+ "ASSETS_API_URL, ASSETS_API_AUTH_KEY, ASSETS_API_SIGN_SECRET must be set."
39
+ )
40
+
41
+ async with AssetsApiClient(
42
+ url,
43
+ auth_key=key,
44
+ sign_secret=secret,
45
+ ) as client:
46
+ cgg = ComponentGraphGenerator(client)
47
+
48
+ graph = await cgg.get_component_graph(MicrogridId(microgrid_id))
49
+ power_formulas = {
50
+ "consumption": graph.consumer_formula(),
51
+ "generation": graph.producer_formula(),
52
+ "grid": graph.grid_formula(),
53
+ "pv": graph.pv_formula(None),
54
+ "battery": graph.battery_formula(None),
55
+ "chp": graph.chp_formula(None),
56
+ "ev": graph.ev_charger_formula(None),
57
+ }
58
+
59
+ for component, formula in power_formulas.items():
60
+ print(
61
+ prefix.format(component=component, microgrid_id=microgrid_id)
62
+ + f' = "{formula}"'
63
+ )
64
+
65
+
66
+ def main() -> None:
67
+ """Run the CLI tool."""
68
+ cli(_anyio_backend="asyncio")
69
+
70
+
71
+ if __name__ == "__main__":
72
+ main()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: frequenz-gridpool
3
- Version: 0.1.0
3
+ Version: 0.2.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: MIT
@@ -21,18 +21,19 @@ Requires-Python: <4,>=3.11
21
21
  Description-Content-Type: text/markdown
22
22
  License-File: LICENSE
23
23
  Requires-Dist: marshmallow-dataclass<9,>=8.7.1
24
+ Requires-Dist: asyncclick<9,>=8.3.0.4
24
25
  Requires-Dist: typing-extensions<5,>=4.14.1
25
26
  Requires-Dist: frequenz-microgrid-component-graph<0.3,>=0.2.0
26
27
  Requires-Dist: frequenz-client-assets<0.3,>=0.2.0
27
28
  Provides-Extra: dev-flake8
28
29
  Requires-Dist: flake8==7.3.0; extra == "dev-flake8"
29
30
  Requires-Dist: flake8-docstrings==1.7.0; extra == "dev-flake8"
30
- Requires-Dist: flake8-pyproject==1.2.3; extra == "dev-flake8"
31
- Requires-Dist: pydoclint==0.8.1; extra == "dev-flake8"
31
+ Requires-Dist: flake8-pyproject==1.2.4; extra == "dev-flake8"
32
+ Requires-Dist: pydoclint==0.8.3; extra == "dev-flake8"
32
33
  Requires-Dist: pydocstyle==6.3.0; extra == "dev-flake8"
33
34
  Provides-Extra: dev-formatting
34
35
  Requires-Dist: black==25.11.0; extra == "dev-formatting"
35
- Requires-Dist: isort==6.0.0; extra == "dev-formatting"
36
+ Requires-Dist: isort==7.0.0; extra == "dev-formatting"
36
37
  Provides-Extra: dev-mkdocs
37
38
  Requires-Dist: Markdown==3.10; extra == "dev-mkdocs"
38
39
  Requires-Dist: black==25.11.0; extra == "dev-mkdocs"
@@ -41,22 +42,22 @@ Requires-Dist: mkdocs-gen-files==0.5.0; extra == "dev-mkdocs"
41
42
  Requires-Dist: mkdocs-literate-nav==0.6.2; extra == "dev-mkdocs"
42
43
  Requires-Dist: mkdocs-macros-plugin==1.5.0; extra == "dev-mkdocs"
43
44
  Requires-Dist: mkdocs-material==9.7.0; extra == "dev-mkdocs"
44
- Requires-Dist: mkdocstrings[python]==0.30.1; extra == "dev-mkdocs"
45
+ Requires-Dist: mkdocstrings[python]==1.0.0; extra == "dev-mkdocs"
45
46
  Requires-Dist: mkdocstrings-python==1.19.0; extra == "dev-mkdocs"
46
- Requires-Dist: frequenz-repo-config[lib]==0.13.6; extra == "dev-mkdocs"
47
+ Requires-Dist: frequenz-repo-config[lib]==0.13.7; extra == "dev-mkdocs"
47
48
  Provides-Extra: dev-mypy
48
- Requires-Dist: mypy==1.18.2; extra == "dev-mypy"
49
+ Requires-Dist: mypy==1.19.0; extra == "dev-mypy"
49
50
  Requires-Dist: types-Markdown==3.10.0.20251106; extra == "dev-mypy"
50
51
  Requires-Dist: frequenz-gridpool[dev-mkdocs,dev-noxfile,dev-pytest]; extra == "dev-mypy"
51
52
  Provides-Extra: dev-noxfile
52
53
  Requires-Dist: nox==2025.11.12; extra == "dev-noxfile"
53
- Requires-Dist: frequenz-repo-config[lib]==0.13.6; extra == "dev-noxfile"
54
+ Requires-Dist: frequenz-repo-config[lib]==0.13.7; extra == "dev-noxfile"
54
55
  Provides-Extra: dev-pylint
55
56
  Requires-Dist: frequenz-gridpool[dev-mkdocs,dev-noxfile,dev-pytest]; extra == "dev-pylint"
56
57
  Provides-Extra: dev-pytest
57
58
  Requires-Dist: pytest==8.4.1; extra == "dev-pytest"
58
- Requires-Dist: pylint==4.0.3; extra == "dev-pytest"
59
- Requires-Dist: frequenz-repo-config[extra-lint-examples]==0.13.6; extra == "dev-pytest"
59
+ Requires-Dist: pylint==4.0.4; extra == "dev-pytest"
60
+ Requires-Dist: frequenz-repo-config[extra-lint-examples]==0.13.7; extra == "dev-pytest"
60
61
  Requires-Dist: pytest-mock==3.15.1; extra == "dev-pytest"
61
62
  Requires-Dist: pytest-asyncio==1.3.0; extra == "dev-pytest"
62
63
  Requires-Dist: async-solipsism==0.8; extra == "dev-pytest"
@@ -8,8 +8,11 @@ src/frequenz/gridpool/_graph_generator.py
8
8
  src/frequenz/gridpool/_microgrid_config.py
9
9
  src/frequenz/gridpool/conftest.py
10
10
  src/frequenz/gridpool/py.typed
11
+ src/frequenz/gridpool/cli/__init__.py
12
+ src/frequenz/gridpool/cli/__main__.py
11
13
  src/frequenz_gridpool.egg-info/PKG-INFO
12
14
  src/frequenz_gridpool.egg-info/SOURCES.txt
13
15
  src/frequenz_gridpool.egg-info/dependency_links.txt
16
+ src/frequenz_gridpool.egg-info/entry_points.txt
14
17
  src/frequenz_gridpool.egg-info/requires.txt
15
18
  src/frequenz_gridpool.egg-info/top_level.txt
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ gridpool-cli = frequenz.gridpool.cli.__main__:main
@@ -1,4 +1,5 @@
1
1
  marshmallow-dataclass<9,>=8.7.1
2
+ asyncclick<9,>=8.3.0.4
2
3
  typing-extensions<5,>=4.14.1
3
4
  frequenz-microgrid-component-graph<0.3,>=0.2.0
4
5
  frequenz-client-assets<0.3,>=0.2.0
@@ -9,13 +10,13 @@ frequenz-gridpool[dev-flake8,dev-formatting,dev-mkdocs,dev-mypy,dev-noxfile,dev-
9
10
  [dev-flake8]
10
11
  flake8==7.3.0
11
12
  flake8-docstrings==1.7.0
12
- flake8-pyproject==1.2.3
13
- pydoclint==0.8.1
13
+ flake8-pyproject==1.2.4
14
+ pydoclint==0.8.3
14
15
  pydocstyle==6.3.0
15
16
 
16
17
  [dev-formatting]
17
18
  black==25.11.0
18
- isort==6.0.0
19
+ isort==7.0.0
19
20
 
20
21
  [dev-mkdocs]
21
22
  Markdown==3.10
@@ -25,26 +26,26 @@ mkdocs-gen-files==0.5.0
25
26
  mkdocs-literate-nav==0.6.2
26
27
  mkdocs-macros-plugin==1.5.0
27
28
  mkdocs-material==9.7.0
28
- mkdocstrings[python]==0.30.1
29
+ mkdocstrings[python]==1.0.0
29
30
  mkdocstrings-python==1.19.0
30
- frequenz-repo-config[lib]==0.13.6
31
+ frequenz-repo-config[lib]==0.13.7
31
32
 
32
33
  [dev-mypy]
33
- mypy==1.18.2
34
+ mypy==1.19.0
34
35
  types-Markdown==3.10.0.20251106
35
36
  frequenz-gridpool[dev-mkdocs,dev-noxfile,dev-pytest]
36
37
 
37
38
  [dev-noxfile]
38
39
  nox==2025.11.12
39
- frequenz-repo-config[lib]==0.13.6
40
+ frequenz-repo-config[lib]==0.13.7
40
41
 
41
42
  [dev-pylint]
42
43
  frequenz-gridpool[dev-mkdocs,dev-noxfile,dev-pytest]
43
44
 
44
45
  [dev-pytest]
45
46
  pytest==8.4.1
46
- pylint==4.0.3
47
- frequenz-repo-config[extra-lint-examples]==0.13.6
47
+ pylint==4.0.4
48
+ frequenz-repo-config[extra-lint-examples]==0.13.7
48
49
  pytest-mock==3.15.1
49
50
  pytest-asyncio==1.3.0
50
51
  async-solipsism==0.8