Skip to content

Commit eb39475

Browse files
committed
Add new BO Zaehlzeitdefinition
1 parent a0ff42f commit eb39475

5 files changed

Lines changed: 109 additions & 0 deletions

File tree

src/bo4e/bo/zaehlzeitdefinition.py

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
"""
2+
Contains Zaehlzeitdefinition class
3+
"""
4+
5+
# pylint: disable=unused-argument
6+
# pylint: disable=no-name-in-module
7+
from typing import TYPE_CHECKING, Annotated, Literal, Optional
8+
9+
from pydantic import Field
10+
11+
from ..enum.botyp import BoTyp
12+
from ..utils import postprocess_docstring
13+
from .geschaeftsobjekt import Geschaeftsobjekt
14+
15+
if TYPE_CHECKING:
16+
from ..com.umschaltzeit import Umschaltzeit
17+
from ..enum.wiederholungstyp import Wiederholungstyp
18+
19+
# pylint: disable=too-many-instance-attributes, too-few-public-methods
20+
21+
22+
@postprocess_docstring
23+
class Zaehlzeitdefinition(Geschaeftsobjekt):
24+
"""
25+
Beinhaltet Informationen zu welchen Zeiten welche Register zählen.
26+
27+
.. raw:: html
28+
29+
<object data="../_static/images/bo4e/bo/Zaehlzeitdefinition.svg" type="image/svg+xml"></object>
30+
31+
.. HINT::
32+
`Zaehlzeitdefinition JSON Schema <https://json-schema.app/view/%23?url=https://raw.githubusercontent.com/BO4E/BO4E-Schemas/{__gh_version__}/src/bo4e_schemas/bo/Zaehlzeitdefinition.json>`_
33+
34+
"""
35+
36+
typ: Annotated[Literal[BoTyp.ZAEHLZEITDEFINITION], Field(alias="_typ")] = BoTyp.ZAEHLZEITDEFINITION
37+
38+
wiederholend: Optional["Wiederholungstyp"] = None
39+
"""Dieses Feld gibt an, an welchen Tagen das Schaltschema gilt, das durch die Umschaltzeiten definiert ist."""
40+
umschaltzeiten: Optional[list["Umschaltzeit"]] = None
41+
"""
42+
Die einzelnen Umschaltzeiten in dieser Liste definieren, zu welchen Uhrzeiten welches Register zählt.
43+
44+
Die Liste füllt stets einen ganzen Tag vollständig und überlappungsfrei aus. Die jeweilige Umschaltzeit in jedem
45+
Objekt der Liste ergibt (wenn der Größe nach sortiert) ein entsprechendes Schema, wobei die untere Grenze (inklusiv)
46+
als 00:00 Uhr und die obere Grenze (exklusiv) als 24:00 Uhr definiert ist.
47+
48+
Anmerkung: Die Umschaltzeiten sollten sich natürlich niemals doppeln.
49+
"""

src/bo4e/com/umschaltzeit.py

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
"""
2+
Contains Umschaltzeit class
3+
"""
4+
5+
from datetime import time
6+
7+
# pylint: disable=too-few-public-methods
8+
# pylint: disable=no-name-in-module
9+
from typing import Annotated, Literal, Optional
10+
11+
from pydantic import Field
12+
13+
from ..enum.comtyp import ComTyp
14+
from ..utils import postprocess_docstring
15+
from .com import COM
16+
17+
18+
@postprocess_docstring
19+
class Umschaltzeit(COM):
20+
"""
21+
Modelliert eine Umschaltzeit, wann auf ein bestimmtes Register geschaltet werden soll.
22+
23+
.. raw:: html
24+
25+
<object data="../_static/images/bo4e/com/Umschaltzeit.svg" type="image/svg+xml"></object>
26+
27+
.. HINT::
28+
`Umschaltzeit JSON Schema <https://json-schema.app/view/%23?url=https://raw.githubusercontent.com/BO4E/BO4E-Schemas/{__gh_version__}/src/bo4e_schemas/com/Umschaltzeit.json>`_
29+
30+
"""
31+
32+
typ: Annotated[Literal[ComTyp.UMSCHALTZEIT], Field(alias="_typ")] = ComTyp.UMSCHALTZEIT
33+
34+
umschaltzeit: Optional[time] = None
35+
"""Definiert den Zeitpunkt ab dem auf das Register geschaltet wird, das im Feld `registercode` spezifiziert ist."""
36+
registercode: Optional[str] = None
37+
"""Ein Code, der ein Register spezifiziert. Typischerweise eine 3-stellige Zeichenkette."""

src/bo4e/enum/botyp.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,5 +50,6 @@ class BoTyp(StrEnum):
5050
TARIFPREISBLATT = "TARIFPREISBLATT"
5151
VERTRAG = "VERTRAG"
5252
ZAEHLER = "ZAEHLER"
53+
ZAEHLZEITDEFINITION = "ZAEHLZEITDEFINITION"
5354
ZEITREIHE = "ZEITREIHE"
5455
LOKATIONSZUORDNUNG = "LOKATIONSZUORDNUNG"

src/bo4e/enum/comtyp.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ class ComTyp(StrEnum):
6363
TARIFPREISPOSITION = "TARIFPREISPOSITION"
6464
TARIFPREISPOSITIONPROORT = "TARIFPREISPOSITIONPROORT"
6565
TARIFPREISSTAFFELPROORT = "TARIFPREISSTAFFELPROORT"
66+
UMSCHALTZEIT = "UMSCHALTZEIT"
6667
UNTERSCHRIFT = "UNTERSCHRIFT"
6768
VERBRAUCH = "VERBRAUCH"
6869
VERTRAGSKONDITIONEN = "VERTRAGSKONDITIONEN"

src/bo4e/enum/wiederholungstyp.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# pylint: disable=missing-module-docstring
2+
from bo4e.enum.strenum import StrEnum
3+
4+
5+
class Wiederholungstyp(StrEnum):
6+
"""
7+
Gibt an zu welchen Tagen etwas wiederholt werden soll.
8+
"""
9+
10+
TAEGLICH = "TAEGLICH"
11+
WERKTAGS = "WERKTAGS"
12+
WOCHENENDE = "WOCHENENDE"
13+
FEIERTAGS = "FEIERTAGS"
14+
15+
MONTAGS = "MONTAGS"
16+
DIENSTAGS = "DIENSTAGS"
17+
MITTWOCHS = "MITTWOCHS"
18+
DONNERTAGS = "DONNERTAGS"
19+
FREITAGS = "FREITAGS"
20+
SAMSTAGS = "SAMSTAGS"
21+
SONNTAGS = "SONNTAGS"

0 commit comments

Comments
 (0)