From 8cfd714186e359aa7bbc228bcae1837f46d845b5 Mon Sep 17 00:00:00 2001 From: Simon Blank Date: Tue, 11 Nov 2025 10:48:36 +0100 Subject: [PATCH 1/8] #994 Added COM Messwert Barebones --- src/bo4e/com/messwert.py | 33 +++++++++++++++++++++++++++++++++ src/bo4e/enum/comtyp.py | 1 + 2 files changed, 34 insertions(+) create mode 100644 src/bo4e/com/messwert.py diff --git a/src/bo4e/com/messwert.py b/src/bo4e/com/messwert.py new file mode 100644 index 000000000..102284809 --- /dev/null +++ b/src/bo4e/com/messwert.py @@ -0,0 +1,33 @@ +""" +Contains Messwert class +""" + +from typing import TYPE_CHECKING, Annotated, Literal, Optional + +from pydantic import Field + +from ..enum.comtyp import ComTyp +from ..utils import postprocess_docstring +from .com import COM + +if TYPE_CHECKING: + from ..com.menge import Menge + from ..enum.messwertstatus import Messwertstatus + from ..enum.messwertstatuszusatz import Messwertstatuszusatz + +@postprocess_docstring +class Messwert(COM): + """ + Abbildung eines Messwertes mit Status, Zeitpunkt und Wert. + """ + + typ: Annotated[Literal[ComTyp.MESSWERT], Field(alias="_typ")] = ComTyp.MESSWERT + + messwertstatus: Optional["Messwertstatus"] = None + """""" + messwertstatuszusatz: Optional["Messwertstatuszusatz"] = None + """""" + zeitpunkt: Optional[pydantic.AwareDatetime] = None + """""" + wert: Optional["Menge"] = None + """""" diff --git a/src/bo4e/enum/comtyp.py b/src/bo4e/enum/comtyp.py index afca3294d..0666bdb81 100644 --- a/src/bo4e/enum/comtyp.py +++ b/src/bo4e/enum/comtyp.py @@ -38,6 +38,7 @@ class ComTyp(StrEnum): LASTPROFIL = "LASTPROFIL" MARKTGEBIETINFO = "MARKTGEBIETINFO" MENGE = "MENGE" + MESSWERT = "MESSWERT" POSITIONSAUFABSCHLAG = "POSITIONSAUFABSCHLAG" PREIS = "PREIS" PREISGARANTIE = "PREISGARANTIE" From 8d042f5ca88c1127c5c3d509567ccab403b6eaaa Mon Sep 17 00:00:00 2001 From: Simon Blank Date: Tue, 11 Nov 2025 10:52:42 +0100 Subject: [PATCH 2/8] #994 Added Docs --- src/bo4e/com/messwert.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/bo4e/com/messwert.py b/src/bo4e/com/messwert.py index 102284809..1d3054185 100644 --- a/src/bo4e/com/messwert.py +++ b/src/bo4e/com/messwert.py @@ -18,16 +18,16 @@ @postprocess_docstring class Messwert(COM): """ - Abbildung eines Messwertes mit Status, Zeitpunkt und Wert. + Abbildung eines Messwertes mit Stati, Zeitpunkt und Wert. """ typ: Annotated[Literal[ComTyp.MESSWERT], Field(alias="_typ")] = ComTyp.MESSWERT messwertstatus: Optional["Messwertstatus"] = None - """""" + """Gibt den Status des Messwerts an.""" messwertstatuszusatz: Optional["Messwertstatuszusatz"] = None - """""" + """Gibt den Status Zusatz des Messwerts an.""" zeitpunkt: Optional[pydantic.AwareDatetime] = None - """""" + """Gibt den Zeitpunkt des Messwerts an.""" wert: Optional["Menge"] = None - """""" + """Gibt die gemessene Menge an.""" From 0f36d64e5814eb03729013ae8fb5bc2b6605ec77 Mon Sep 17 00:00:00 2001 From: Simon Blank Date: Tue, 11 Nov 2025 10:54:54 +0100 Subject: [PATCH 3/8] #994 Linting Fix? --- src/bo4e/com/messwert.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/bo4e/com/messwert.py b/src/bo4e/com/messwert.py index 1d3054185..784a24623 100644 --- a/src/bo4e/com/messwert.py +++ b/src/bo4e/com/messwert.py @@ -15,6 +15,7 @@ from ..enum.messwertstatus import Messwertstatus from ..enum.messwertstatuszusatz import Messwertstatuszusatz + @postprocess_docstring class Messwert(COM): """ From 6a658f87e14a2e35f992f3f369fa35775ddd3dda Mon Sep 17 00:00:00 2001 From: Simon Blank Date: Tue, 11 Nov 2025 10:57:15 +0100 Subject: [PATCH 4/8] #994 Linting Fix? --- src/bo4e/com/messwert.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/bo4e/com/messwert.py b/src/bo4e/com/messwert.py index 784a24623..a0c814cd5 100644 --- a/src/bo4e/com/messwert.py +++ b/src/bo4e/com/messwert.py @@ -4,6 +4,7 @@ from typing import TYPE_CHECKING, Annotated, Literal, Optional +import pydantic from pydantic import Field from ..enum.comtyp import ComTyp From ba6021928e5561f7b84c884438c3c201b87619bf Mon Sep 17 00:00:00 2001 From: Simon Blank Date: Tue, 11 Nov 2025 11:11:26 +0100 Subject: [PATCH 5/8] #994 Added Messwert Test --- tests/test_messwert.py | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 tests/test_messwert.py diff --git a/tests/test_messwert.py b/tests/test_messwert.py new file mode 100644 index 000000000..53eed5c73 --- /dev/null +++ b/tests/test_messwert.py @@ -0,0 +1,28 @@ +from datetime import datetime, timezone + +import pytest + +from bo4e import Messwert, Menge, Messwertstatus, Messwertstatuszusatz +from tests.serialization_helper import assert_serialization_roundtrip + + +class TestMesswert: + @pytest.mark.parametrize( + "messwert", + [ + pytest.param( + Messwert( + messwertstatus=Messwertstatus.ABGELESEN, + messwertstatuszusatz=Messwertstatuszusatz.Z84_LEERSTAND, + zeitpunkt=datetime(2022, 2, 1, 0, 0, 0, tzinfo=timezone.utc), + wert=Menge(), + ), + id="all attributes at first level", + ), + ], + ) + def test_serialization_roundtrip(self, messwert: Messwert) -> None: + """ + Test de-/serialisation roundtrip. + """ + assert_serialization_roundtrip(messwert) From 371608ff259a15013f0277a31cb7742fdce2d841 Mon Sep 17 00:00:00 2001 From: Simon Blank Date: Tue, 11 Nov 2025 11:12:32 +0100 Subject: [PATCH 6/8] #994 Fix Linting? --- tests/test_messwert.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_messwert.py b/tests/test_messwert.py index 53eed5c73..5641c7bd0 100644 --- a/tests/test_messwert.py +++ b/tests/test_messwert.py @@ -2,7 +2,7 @@ import pytest -from bo4e import Messwert, Menge, Messwertstatus, Messwertstatuszusatz +from bo4e import Menge, Messwert, Messwertstatus, Messwertstatuszusatz from tests.serialization_helper import assert_serialization_roundtrip From 748dff7d9758dde94e993f5e4e2bfb6b23ec4905 Mon Sep 17 00:00:00 2001 From: Simon Blank Date: Tue, 11 Nov 2025 11:30:40 +0100 Subject: [PATCH 7/8] #994 added Messwert to __init__.py --- src/bo4e/__init__.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/bo4e/__init__.py b/src/bo4e/__init__.py index 17ac712d4..a20691e1a 100644 --- a/src/bo4e/__init__.py +++ b/src/bo4e/__init__.py @@ -149,6 +149,7 @@ "Messart", "Messgroesse", "Messpreistyp", + "Messwert", "Messwerterfassung", "Messwertstatus", "Messwertstatuszusatz", @@ -277,6 +278,7 @@ from .com.lastprofil import Lastprofil from .com.marktgebietinfo import MarktgebietInfo from .com.menge import Menge +from .com.messwert import Messwert from .com.positionsaufabschlag import PositionsAufAbschlag from .com.preis import Preis from .com.preisgarantie import Preisgarantie From 671a0694a87d3e92c8c5ac5d4e917e391a418c57 Mon Sep 17 00:00:00 2001 From: Simon Blank Date: Tue, 11 Nov 2025 11:39:42 +0100 Subject: [PATCH 8/8] #994 Fix Doc? --- src/bo4e/com/messwert.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/bo4e/com/messwert.py b/src/bo4e/com/messwert.py index a0c814cd5..869dc85ac 100644 --- a/src/bo4e/com/messwert.py +++ b/src/bo4e/com/messwert.py @@ -21,6 +21,14 @@ class Messwert(COM): """ Abbildung eines Messwertes mit Stati, Zeitpunkt und Wert. + + .. raw:: html + + + + .. HINT:: + `Messwert JSON Schema `_ + """ typ: Annotated[Literal[ComTyp.MESSWERT], Field(alias="_typ")] = ComTyp.MESSWERT