From bd6840457f533be6576c0342cf9fa7181b23a267 Mon Sep 17 00:00:00 2001 From: Flora Date: Mon, 19 Feb 2024 16:56:00 +0200 Subject: [PATCH 1/5] Add microgrid types Signed-off-by: Flora --- .../client/common/microgrid/__init__.py | 51 ++++++++++++++++++- 1 file changed, 49 insertions(+), 2 deletions(-) diff --git a/src/frequenz/client/common/microgrid/__init__.py b/src/frequenz/client/common/microgrid/__init__.py index d24d3f33..0ef4e6a4 100644 --- a/src/frequenz/client/common/microgrid/__init__.py +++ b/src/frequenz/client/common/microgrid/__init__.py @@ -1,4 +1,51 @@ # License: MIT -# Copyright © 2023 Frequenz Energy-as-a-Service GmbH +# Copyright © 2024 Frequenz Energy-as-a-Service GmbH -"""Frequenz microgrid definition.""" +"""Module to define the microgrid used with the common client.""" + +from __future__ import annotations # required for constructor type hinting + +from dataclasses import dataclass +from typing import List, Self + +# pylint: disable=import-error, no-name-in-module +from frequenz.api.common.v1.microgrid.microgrid_pb2 import ( + MicrogridComponentIDs as PBMicrogridComponentIDs, +) + + +@dataclass(frozen=True, kw_only=True) +class MicrogridComponentIDs: + """Linking component IDs with their respective microgrid ID.""" + + microgrid_id: int + """The ID of the microgrid.""" + + component_ids: List[int] + """List of component IDs belonging to this microgrid.""" + + @classmethod + def from_proto(cls, microgrid_component_ids: PBMicrogridComponentIDs) -> Self: + """Convert a protobuf MicrogridComponentIDs to MicrogridComponentIDs object. + + Args: + microgrid_component_ids: MicrogridComponentIDs to convert. + + Returns: + MicrogridComponentIDs object corresponding to the protobuf message. + """ + return cls( + microgrid_id=microgrid_component_ids.microgrid_id, + component_ids=List(microgrid_component_ids.component_ids), + ) + + def to_proto(self) -> PBMicrogridComponentIDs: + """Convert a MicrogridComponentIDs object to protobuf MicrogridComponentIDs. + + Returns: + Protobuf message corresponding to the MicrogridComponentIDs object. + """ + return PBMicrogridComponentIDs( + microgrid_id=self.microgrid_id, + component_ids=List(self.component_ids), + ) From b342242111d0bb3cc65ad12903ded72e1dd97fe6 Mon Sep 17 00:00:00 2001 From: flora-hofmann-frequenz <88315331+flora-hofmann-frequenz@users.noreply.github.com> Date: Wed, 21 Feb 2024 14:27:42 +0200 Subject: [PATCH 2/5] Update src/frequenz/client/common/microgrid/__init__.py Co-authored-by: Leandro Lucarella Signed-off-by: flora-hofmann-frequenz <88315331+flora-hofmann-frequenz@users.noreply.github.com> --- src/frequenz/client/common/microgrid/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/frequenz/client/common/microgrid/__init__.py b/src/frequenz/client/common/microgrid/__init__.py index 0ef4e6a4..28b803c6 100644 --- a/src/frequenz/client/common/microgrid/__init__.py +++ b/src/frequenz/client/common/microgrid/__init__.py @@ -6,7 +6,7 @@ from __future__ import annotations # required for constructor type hinting from dataclasses import dataclass -from typing import List, Self +from typing import Self # pylint: disable=import-error, no-name-in-module from frequenz.api.common.v1.microgrid.microgrid_pb2 import ( From 2b923ba1f52e708142fd4b6035528dc1b9476503 Mon Sep 17 00:00:00 2001 From: flora-hofmann-frequenz <88315331+flora-hofmann-frequenz@users.noreply.github.com> Date: Wed, 21 Feb 2024 14:28:10 +0200 Subject: [PATCH 3/5] Update src/frequenz/client/common/microgrid/__init__.py Co-authored-by: Leandro Lucarella Signed-off-by: flora-hofmann-frequenz <88315331+flora-hofmann-frequenz@users.noreply.github.com> --- src/frequenz/client/common/microgrid/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/frequenz/client/common/microgrid/__init__.py b/src/frequenz/client/common/microgrid/__init__.py index 28b803c6..7e233285 100644 --- a/src/frequenz/client/common/microgrid/__init__.py +++ b/src/frequenz/client/common/microgrid/__init__.py @@ -8,7 +8,7 @@ from dataclasses import dataclass from typing import Self -# pylint: disable=import-error, no-name-in-module +# pylint: disable=no-name-in-module from frequenz.api.common.v1.microgrid.microgrid_pb2 import ( MicrogridComponentIDs as PBMicrogridComponentIDs, ) From 93494026285d4f0c304c97333221da950646d27c Mon Sep 17 00:00:00 2001 From: flora-hofmann-frequenz <88315331+flora-hofmann-frequenz@users.noreply.github.com> Date: Wed, 21 Feb 2024 14:28:19 +0200 Subject: [PATCH 4/5] Update src/frequenz/client/common/microgrid/__init__.py Co-authored-by: Leandro Lucarella Signed-off-by: flora-hofmann-frequenz <88315331+flora-hofmann-frequenz@users.noreply.github.com> --- src/frequenz/client/common/microgrid/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/frequenz/client/common/microgrid/__init__.py b/src/frequenz/client/common/microgrid/__init__.py index 7e233285..5dcd4148 100644 --- a/src/frequenz/client/common/microgrid/__init__.py +++ b/src/frequenz/client/common/microgrid/__init__.py @@ -12,7 +12,7 @@ from frequenz.api.common.v1.microgrid.microgrid_pb2 import ( MicrogridComponentIDs as PBMicrogridComponentIDs, ) - +# pylint: enable=no-name-in-module @dataclass(frozen=True, kw_only=True) class MicrogridComponentIDs: From b1580948db5fbe5264a23cfe0fa306cb8925d82f Mon Sep 17 00:00:00 2001 From: flora-hofmann-frequenz <88315331+flora-hofmann-frequenz@users.noreply.github.com> Date: Wed, 21 Feb 2024 14:28:30 +0200 Subject: [PATCH 5/5] Update src/frequenz/client/common/microgrid/__init__.py Co-authored-by: Leandro Lucarella Signed-off-by: flora-hofmann-frequenz <88315331+flora-hofmann-frequenz@users.noreply.github.com> --- src/frequenz/client/common/microgrid/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/frequenz/client/common/microgrid/__init__.py b/src/frequenz/client/common/microgrid/__init__.py index 5dcd4148..4f24993e 100644 --- a/src/frequenz/client/common/microgrid/__init__.py +++ b/src/frequenz/client/common/microgrid/__init__.py @@ -21,7 +21,7 @@ class MicrogridComponentIDs: microgrid_id: int """The ID of the microgrid.""" - component_ids: List[int] + component_ids: Sequence[int] """List of component IDs belonging to this microgrid.""" @classmethod