diff --git a/docs/contributing_guide.rst b/docs/contributing_guide.rst index fb774b8ba..624391ce3 100644 --- a/docs/contributing_guide.rst +++ b/docs/contributing_guide.rst @@ -83,7 +83,7 @@ For data validation and de/serialization we use `pydantic `_ """ - typ: Annotated[Literal[Typ.LOKATIONSZUORDNUNG], Field(alias="_typ")] = Typ.LOKATIONSZUORDNUNG + typ: Annotated[Literal[BoTyp.LOKATIONSZUORDNUNG], Field(alias="_typ")] = BoTyp.LOKATIONSZUORDNUNG marktlokationen: Optional[list["Marktlokation"]] = None """Liste mit referenzierten Marktlokationen""" diff --git a/src/bo4e/bo/marktlokation.py b/src/bo4e/bo/marktlokation.py index 17b7f17d7..6d43401e0 100644 --- a/src/bo4e/bo/marktlokation.py +++ b/src/bo4e/bo/marktlokation.py @@ -7,7 +7,7 @@ from pydantic import Field -from ..enum.typ import Typ +from ..enum.botyp import BoTyp from ..utils import postprocess_docstring from .geschaeftsobjekt import Geschaeftsobjekt @@ -45,7 +45,7 @@ class Marktlokation(Geschaeftsobjekt): """ - typ: Annotated[Literal[Typ.MARKTLOKATION], Field(alias="_typ")] = Typ.MARKTLOKATION + typ: Annotated[Literal[BoTyp.MARKTLOKATION], Field(alias="_typ")] = BoTyp.MARKTLOKATION marktlokations_id: Optional[str] = None """Identifikationsnummer einer Marktlokation, an der Energie entweder verbraucht, oder erzeugt wird.""" diff --git a/src/bo4e/bo/marktteilnehmer.py b/src/bo4e/bo/marktteilnehmer.py index c69066388..a62570cb0 100644 --- a/src/bo4e/bo/marktteilnehmer.py +++ b/src/bo4e/bo/marktteilnehmer.py @@ -8,7 +8,7 @@ from pydantic import Field -from ..enum.typ import Typ +from ..enum.botyp import BoTyp from ..utils import postprocess_docstring from .geschaeftsobjekt import Geschaeftsobjekt @@ -33,7 +33,7 @@ class Marktteilnehmer(Geschaeftsobjekt): """ - typ: Annotated[Literal[Typ.MARKTTEILNEHMER], Field(alias="_typ")] = Typ.MARKTTEILNEHMER + typ: Annotated[Literal[BoTyp.MARKTTEILNEHMER], Field(alias="_typ")] = BoTyp.MARKTTEILNEHMER marktrolle: Optional["Marktrolle"] = None """Gibt im Klartext die Bezeichnung der Marktrolle an""" rollencodenummer: Optional[str] = None diff --git a/src/bo4e/bo/messlokation.py b/src/bo4e/bo/messlokation.py index 899cae5a3..6fb4d4f74 100644 --- a/src/bo4e/bo/messlokation.py +++ b/src/bo4e/bo/messlokation.py @@ -6,7 +6,7 @@ from pydantic import Field -from ..enum.typ import Typ +from ..enum.botyp import BoTyp from ..utils import postprocess_docstring from .geschaeftsobjekt import Geschaeftsobjekt @@ -38,7 +38,7 @@ class Messlokation(Geschaeftsobjekt): """ - typ: Annotated[Literal[Typ.MESSLOKATION], Field(alias="_typ")] = Typ.MESSLOKATION + typ: Annotated[Literal[BoTyp.MESSLOKATION], Field(alias="_typ")] = BoTyp.MESSLOKATION messlokations_id: Optional[str] = None """Die Messlokations-Identifikation; Das ist die frühere Zählpunktbezeichnung""" diff --git a/src/bo4e/bo/netzlokation.py b/src/bo4e/bo/netzlokation.py index d4138c592..e4b7c7322 100644 --- a/src/bo4e/bo/netzlokation.py +++ b/src/bo4e/bo/netzlokation.py @@ -6,7 +6,7 @@ from pydantic import Field -from ..enum.typ import Typ +from ..enum.botyp import BoTyp from ..utils import postprocess_docstring from .geschaeftsobjekt import Geschaeftsobjekt @@ -36,7 +36,7 @@ class Netzlokation(Geschaeftsobjekt): """ - typ: Annotated[Literal[Typ.NETZLOKATION], Field(alias="_typ")] = Typ.NETZLOKATION + typ: Annotated[Literal[BoTyp.NETZLOKATION], Field(alias="_typ")] = BoTyp.NETZLOKATION netzlokations_id: Optional[str] = None """Identifikationsnummer einer Netzlokation, an der Energie entweder verbraucht, oder erzeugt wird""" diff --git a/src/bo4e/bo/person.py b/src/bo4e/bo/person.py index 66f3f0d39..42178d583 100644 --- a/src/bo4e/bo/person.py +++ b/src/bo4e/bo/person.py @@ -7,7 +7,7 @@ from pydantic import Field -from ..enum.typ import Typ +from ..enum.botyp import BoTyp from ..utils import postprocess_docstring from .geschaeftsobjekt import Geschaeftsobjekt @@ -36,7 +36,7 @@ class Person(Geschaeftsobjekt): """ - typ: Annotated[Literal[Typ.PERSON], Field(alias="_typ")] = Typ.PERSON + typ: Annotated[Literal[BoTyp.PERSON], Field(alias="_typ")] = BoTyp.PERSON anrede: Optional["Anrede"] = None """Mögliche Anrede der Person""" individuelle_anrede: Optional[str] = None diff --git a/src/bo4e/bo/preisblatt.py b/src/bo4e/bo/preisblatt.py index 7a2febc80..6a8df3178 100644 --- a/src/bo4e/bo/preisblatt.py +++ b/src/bo4e/bo/preisblatt.py @@ -8,7 +8,7 @@ from pydantic import Field -from ..enum.typ import Typ +from ..enum.botyp import BoTyp from ..utils import postprocess_docstring from .geschaeftsobjekt import Geschaeftsobjekt @@ -39,7 +39,7 @@ class Preisblatt(Geschaeftsobjekt): """ - typ: Annotated[Literal[Typ.PREISBLATT], Field(alias="_typ")] = Typ.PREISBLATT + typ: Annotated[Literal[BoTyp.PREISBLATT], Field(alias="_typ")] = BoTyp.PREISBLATT bezeichnung: Optional[str] = None """Eine Bezeichnung für das Preisblatt""" sparte: Optional["Sparte"] = None diff --git a/src/bo4e/bo/preisblattdienstleistung.py b/src/bo4e/bo/preisblattdienstleistung.py index 2163804b7..29246233a 100644 --- a/src/bo4e/bo/preisblattdienstleistung.py +++ b/src/bo4e/bo/preisblattdienstleistung.py @@ -6,7 +6,7 @@ from pydantic import Field -from ..enum.typ import Typ +from ..enum.botyp import BoTyp from ..utils import postprocess_docstring from .preisblatt import Preisblatt @@ -33,8 +33,8 @@ class PreisblattDienstleistung(Preisblatt): """ - typ: Annotated[Literal[Typ.PREISBLATTDIENSTLEISTUNG], Field(alias="_typ")] = ( - Typ.PREISBLATTDIENSTLEISTUNG # type: ignore[assignment] + typ: Annotated[Literal[BoTyp.PREISBLATTDIENSTLEISTUNG], Field(alias="_typ")] = ( + BoTyp.PREISBLATTDIENSTLEISTUNG # type: ignore[assignment] ) # required attributes (additional to those of Preisblatt) bilanzierungsmethode: Optional["Bilanzierungsmethode"] = None diff --git a/src/bo4e/bo/preisblatthardware.py b/src/bo4e/bo/preisblatthardware.py index 1cd73587f..c3c9e0a66 100644 --- a/src/bo4e/bo/preisblatthardware.py +++ b/src/bo4e/bo/preisblatthardware.py @@ -6,7 +6,7 @@ from pydantic import Field -from ..enum.typ import Typ +from ..enum.botyp import BoTyp from ..utils import postprocess_docstring from .preisblatt import Preisblatt @@ -34,8 +34,8 @@ class PreisblattHardware(Preisblatt): """ - typ: Annotated[Literal[Typ.PREISBLATTHARDWARE], Field(alias="_typ")] = ( - Typ.PREISBLATTHARDWARE # type: ignore[assignment] + typ: Annotated[Literal[BoTyp.PREISBLATTHARDWARE], Field(alias="_typ")] = ( + BoTyp.PREISBLATTHARDWARE # type: ignore[assignment] ) # required attributes (additional to those of Preisblatt) bilanzierungsmethode: Optional["Bilanzierungsmethode"] = None diff --git a/src/bo4e/bo/preisblattkonzessionsabgabe.py b/src/bo4e/bo/preisblattkonzessionsabgabe.py index c5663b87b..964d39c2c 100644 --- a/src/bo4e/bo/preisblattkonzessionsabgabe.py +++ b/src/bo4e/bo/preisblattkonzessionsabgabe.py @@ -6,7 +6,7 @@ from pydantic import Field -from ..enum.typ import Typ +from ..enum.botyp import BoTyp from ..utils import postprocess_docstring from .preisblatt import Preisblatt @@ -31,8 +31,8 @@ class PreisblattKonzessionsabgabe(Preisblatt): """ - typ: Annotated[Literal[Typ.PREISBLATTKONZESSIONSABGABE], Field(alias="_typ")] = ( - Typ.PREISBLATTKONZESSIONSABGABE # type: ignore[assignment] + typ: Annotated[Literal[BoTyp.PREISBLATTKONZESSIONSABGABE], Field(alias="_typ")] = ( + BoTyp.PREISBLATTKONZESSIONSABGABE # type: ignore[assignment] ) # required attributes (additional to those of Preisblatt) kundengruppe_k_a: Optional["KundengruppeKA"] = None diff --git a/src/bo4e/bo/preisblattmessung.py b/src/bo4e/bo/preisblattmessung.py index 6f3024b7a..d3b7846e5 100644 --- a/src/bo4e/bo/preisblattmessung.py +++ b/src/bo4e/bo/preisblattmessung.py @@ -6,7 +6,7 @@ from pydantic import Field -from ..enum.typ import Typ +from ..enum.botyp import BoTyp from ..utils import postprocess_docstring from .preisblatt import Preisblatt @@ -35,8 +35,8 @@ class PreisblattMessung(Preisblatt): """ - typ: Annotated[Literal[Typ.PREISBLATTMESSUNG], Field(alias="_typ")] = ( - Typ.PREISBLATTMESSUNG # type: ignore[assignment] + typ: Annotated[Literal[BoTyp.PREISBLATTMESSUNG], Field(alias="_typ")] = ( + BoTyp.PREISBLATTMESSUNG # type: ignore[assignment] ) # required attributes (additional to those of Preisblatt) bilanzierungsmethode: Optional["Bilanzierungsmethode"] = None diff --git a/src/bo4e/bo/preisblattnetznutzung.py b/src/bo4e/bo/preisblattnetznutzung.py index d4720d4d4..dceef99b1 100644 --- a/src/bo4e/bo/preisblattnetznutzung.py +++ b/src/bo4e/bo/preisblattnetznutzung.py @@ -6,7 +6,7 @@ from pydantic import Field -from ..enum.typ import Typ +from ..enum.botyp import BoTyp from ..utils import postprocess_docstring from .preisblatt import Preisblatt @@ -33,8 +33,8 @@ class PreisblattNetznutzung(Preisblatt): """ - typ: Annotated[Literal[Typ.PREISBLATTNETZNUTZUNG], Field(alias="_typ")] = ( - Typ.PREISBLATTNETZNUTZUNG # type: ignore[assignment] + typ: Annotated[Literal[BoTyp.PREISBLATTNETZNUTZUNG], Field(alias="_typ")] = ( + BoTyp.PREISBLATTNETZNUTZUNG # type: ignore[assignment] ) # required attributes (additional to those of Preisblatt) bilanzierungsmethode: Optional["Bilanzierungsmethode"] = None diff --git a/src/bo4e/bo/rechnung.py b/src/bo4e/bo/rechnung.py index 68576c8d3..9bbefbc0b 100644 --- a/src/bo4e/bo/rechnung.py +++ b/src/bo4e/bo/rechnung.py @@ -7,7 +7,7 @@ import pydantic from pydantic import Field -from ..enum.typ import Typ +from ..enum.botyp import BoTyp from ..utils import postprocess_docstring from .geschaeftsobjekt import Geschaeftsobjekt @@ -42,7 +42,7 @@ class Rechnung(Geschaeftsobjekt): """ - typ: Annotated[Literal[Typ.RECHNUNG], Field(alias="_typ")] = Typ.RECHNUNG + typ: Annotated[Literal[BoTyp.RECHNUNG], Field(alias="_typ")] = BoTyp.RECHNUNG ist_storno: Optional[bool] = None """ Kennzeichnung, ob es sich um eine Stornorechnung handelt; diff --git a/src/bo4e/bo/region.py b/src/bo4e/bo/region.py index 0410339da..085d2fda9 100644 --- a/src/bo4e/bo/region.py +++ b/src/bo4e/bo/region.py @@ -6,7 +6,7 @@ from pydantic import Field -from ..enum.typ import Typ +from ..enum.botyp import BoTyp from ..utils import postprocess_docstring from .geschaeftsobjekt import Geschaeftsobjekt @@ -32,7 +32,7 @@ class Region(Geschaeftsobjekt): """ - typ: Annotated[Literal[Typ.REGION], Field(alias="_typ")] = Typ.REGION + typ: Annotated[Literal[BoTyp.REGION], Field(alias="_typ")] = BoTyp.REGION bezeichnung: Optional[str] = None """Bezeichnung der Region""" diff --git a/src/bo4e/bo/regionaltarif.py b/src/bo4e/bo/regionaltarif.py index c847b43b3..8b3e2e8ed 100644 --- a/src/bo4e/bo/regionaltarif.py +++ b/src/bo4e/bo/regionaltarif.py @@ -7,7 +7,7 @@ import pydantic from pydantic import Field -from ..enum.typ import Typ +from ..enum.botyp import BoTyp from .tarifinfo import Tarifinfo if TYPE_CHECKING: @@ -35,7 +35,7 @@ class Regionaltarif(Tarifinfo): """ - typ: Annotated[Literal[Typ.REGIONALTARIF], Field(alias="_typ")] = Typ.REGIONALTARIF # type: ignore[assignment] + typ: Annotated[Literal[BoTyp.REGIONALTARIF], Field(alias="_typ")] = BoTyp.REGIONALTARIF # type: ignore[assignment] preisstand: Optional[pydantic.AwareDatetime] = None """Gibt an, wann der Preis zuletzt angepasst wurde""" berechnungsparameter: Optional["Tarifberechnungsparameter"] = None diff --git a/src/bo4e/bo/standorteigenschaften.py b/src/bo4e/bo/standorteigenschaften.py index 41efe5219..6a8a41ac6 100644 --- a/src/bo4e/bo/standorteigenschaften.py +++ b/src/bo4e/bo/standorteigenschaften.py @@ -8,7 +8,7 @@ from pydantic import Field -from ..enum.typ import Typ +from ..enum.botyp import BoTyp from ..utils import postprocess_docstring from .geschaeftsobjekt import Geschaeftsobjekt @@ -31,7 +31,7 @@ class Standorteigenschaften(Geschaeftsobjekt): """ - typ: Annotated[Literal[Typ.STANDORTEIGENSCHAFTEN], Field(alias="_typ")] = Typ.STANDORTEIGENSCHAFTEN + typ: Annotated[Literal[BoTyp.STANDORTEIGENSCHAFTEN], Field(alias="_typ")] = BoTyp.STANDORTEIGENSCHAFTEN eigenschaften_strom: Optional[list["StandorteigenschaftenStrom"]] = None """Eigenschaften zur Sparte Strom""" diff --git a/src/bo4e/bo/steuerbareressource.py b/src/bo4e/bo/steuerbareressource.py index f118d6b08..dba02e934 100644 --- a/src/bo4e/bo/steuerbareressource.py +++ b/src/bo4e/bo/steuerbareressource.py @@ -6,7 +6,7 @@ from pydantic import Field -from ..enum.typ import Typ +from ..enum.botyp import BoTyp from ..utils import postprocess_docstring from .geschaeftsobjekt import Geschaeftsobjekt @@ -33,7 +33,7 @@ class SteuerbareRessource(Geschaeftsobjekt): """ - typ: Annotated[Literal[Typ.STEUERBARERESSOURCE], Field(alias="_typ")] = Typ.STEUERBARERESSOURCE + typ: Annotated[Literal[BoTyp.STEUERBARERESSOURCE], Field(alias="_typ")] = BoTyp.STEUERBARERESSOURCE steuerbare_ressource_id: Optional[str] = None """Id der steuerbaren Ressource""" diff --git a/src/bo4e/bo/tarif.py b/src/bo4e/bo/tarif.py index 31836e8af..1e514d80e 100644 --- a/src/bo4e/bo/tarif.py +++ b/src/bo4e/bo/tarif.py @@ -7,7 +7,7 @@ import pydantic from pydantic import Field -from ..enum.typ import Typ +from ..enum.botyp import BoTyp from ..utils import postprocess_docstring from .tarifinfo import Tarifinfo @@ -37,7 +37,7 @@ class Tarif(Tarifinfo): """ - typ: Annotated[Literal[Typ.TARIF], Field(alias="_typ")] = Typ.TARIF # type: ignore[assignment] + typ: Annotated[Literal[BoTyp.TARIF], Field(alias="_typ")] = BoTyp.TARIF # type: ignore[assignment] preisstand: Optional[pydantic.AwareDatetime] = None """Gibt an, wann der Preis zuletzt angepasst wurde""" berechnungsparameter: Optional["Tarifberechnungsparameter"] = None diff --git a/src/bo4e/bo/tarifinfo.py b/src/bo4e/bo/tarifinfo.py index 91788eba6..a6bc8a080 100644 --- a/src/bo4e/bo/tarifinfo.py +++ b/src/bo4e/bo/tarifinfo.py @@ -9,7 +9,7 @@ import pydantic from pydantic import Field -from ..enum.typ import Typ +from ..enum.botyp import BoTyp from ..utils import postprocess_docstring from .geschaeftsobjekt import Geschaeftsobjekt @@ -40,7 +40,7 @@ class Tarifinfo(Geschaeftsobjekt): """ - typ: Annotated[Literal[Typ.TARIFINFO], Field(alias="_typ")] = Typ.TARIFINFO + typ: Annotated[Literal[BoTyp.TARIFINFO], Field(alias="_typ")] = BoTyp.TARIFINFO bezeichnung: Optional[str] = None """Name des Tarifs""" anbietername: Optional[str] = None diff --git a/src/bo4e/bo/tarifkosten.py b/src/bo4e/bo/tarifkosten.py index 7cdcff983..6ea269cb2 100644 --- a/src/bo4e/bo/tarifkosten.py +++ b/src/bo4e/bo/tarifkosten.py @@ -6,7 +6,7 @@ from pydantic import Field -from ..enum.typ import Typ +from ..enum.botyp import BoTyp from ..utils import postprocess_docstring from .tarifinfo import Tarifinfo @@ -31,7 +31,7 @@ class Tarifkosten(Tarifinfo): """ - typ: Annotated[Literal[Typ.TARIFKOSTEN], Field(alias="_typ")] = Typ.TARIFKOSTEN # type: ignore[assignment] + typ: Annotated[Literal[BoTyp.TARIFKOSTEN], Field(alias="_typ")] = BoTyp.TARIFKOSTEN # type: ignore[assignment] kosten: Optional["Kosten"] = None """ Referenz (Link) zu einem Kostenobjekt, in dem die Kosten für die Anwendung diff --git a/src/bo4e/bo/tarifpreisblatt.py b/src/bo4e/bo/tarifpreisblatt.py index ee5ce7f1c..d62323f7b 100644 --- a/src/bo4e/bo/tarifpreisblatt.py +++ b/src/bo4e/bo/tarifpreisblatt.py @@ -7,7 +7,7 @@ import pydantic from pydantic import Field -from ..enum.typ import Typ +from ..enum.botyp import BoTyp from ..utils import postprocess_docstring from .tarifinfo import Tarifinfo @@ -37,7 +37,7 @@ class Tarifpreisblatt(Tarifinfo): """ - typ: Annotated[Literal[Typ.TARIFPREISBLATT], Field(alias="_typ")] = Typ.TARIFPREISBLATT # type: ignore[assignment] + typ: Annotated[Literal[BoTyp.TARIFPREISBLATT], Field(alias="_typ")] = BoTyp.TARIFPREISBLATT # type: ignore[assignment] # required attributes (additional to those of Tarifinfo) preisstand: Optional[pydantic.AwareDatetime] = None """Gibt an, wann der Preis zuletzt angepasst wurde""" diff --git a/src/bo4e/bo/technischeressource.py b/src/bo4e/bo/technischeressource.py index 68825a197..8891dc738 100644 --- a/src/bo4e/bo/technischeressource.py +++ b/src/bo4e/bo/technischeressource.py @@ -6,7 +6,7 @@ from pydantic import Field -from ..enum.typ import Typ +from ..enum.botyp import BoTyp from ..utils import postprocess_docstring from .geschaeftsobjekt import Geschaeftsobjekt @@ -37,7 +37,7 @@ class TechnischeRessource(Geschaeftsobjekt): """ - typ: Annotated[Literal[Typ.TECHNISCHERESSOURCE], Field(alias="_typ")] = Typ.TECHNISCHERESSOURCE + typ: Annotated[Literal[BoTyp.TECHNISCHERESSOURCE], Field(alias="_typ")] = BoTyp.TECHNISCHERESSOURCE technische_ressource_id: Optional[str] = None """Identifikationsnummer einer technischen Ressource""" diff --git a/src/bo4e/bo/vertrag.py b/src/bo4e/bo/vertrag.py index 09a23baff..9d62ea617 100644 --- a/src/bo4e/bo/vertrag.py +++ b/src/bo4e/bo/vertrag.py @@ -7,7 +7,7 @@ import pydantic from pydantic import Field -from ..enum.typ import Typ +from ..enum.botyp import BoTyp from ..utils import postprocess_docstring from .geschaeftsobjekt import Geschaeftsobjekt @@ -41,7 +41,7 @@ class Vertrag(Geschaeftsobjekt): """ - typ: Annotated[Literal[Typ.VERTRAG], Field(alias="_typ")] = Typ.VERTRAG + typ: Annotated[Literal[BoTyp.VERTRAG], Field(alias="_typ")] = BoTyp.VERTRAG # pylint: disable=duplicate-code vertragsnummer: Optional[str] = None """Eine im Verwendungskontext eindeutige Nummer für den Vertrag""" diff --git a/src/bo4e/bo/zaehler.py b/src/bo4e/bo/zaehler.py index 4ed386427..2b2bbce7f 100644 --- a/src/bo4e/bo/zaehler.py +++ b/src/bo4e/bo/zaehler.py @@ -11,7 +11,7 @@ import pydantic from pydantic import Field -from ..enum.typ import Typ +from ..enum.botyp import BoTyp from ..utils import postprocess_docstring from .geschaeftsobjekt import Geschaeftsobjekt @@ -45,7 +45,7 @@ class Zaehler(Geschaeftsobjekt): """ - typ: Annotated[Literal[Typ.ZAEHLER], Field(alias="_typ")] = Typ.ZAEHLER + typ: Annotated[Literal[BoTyp.ZAEHLER], Field(alias="_typ")] = BoTyp.ZAEHLER zaehlernummer: Optional[str] = None """Nummerierung des Zählers,vergeben durch den Messstellenbetreiber""" sparte: Optional["Sparte"] = None diff --git a/src/bo4e/bo/zeitreihe.py b/src/bo4e/bo/zeitreihe.py index 4022026ba..2baafad7a 100644 --- a/src/bo4e/bo/zeitreihe.py +++ b/src/bo4e/bo/zeitreihe.py @@ -8,7 +8,7 @@ from pydantic import Field -from ..enum.typ import Typ +from ..enum.botyp import BoTyp from ..utils import postprocess_docstring from .geschaeftsobjekt import Geschaeftsobjekt @@ -36,7 +36,7 @@ class Zeitreihe(Geschaeftsobjekt): """ - typ: Annotated[Literal[Typ.ZEITREIHE], Field(alias="_typ")] = Typ.ZEITREIHE + typ: Annotated[Literal[BoTyp.ZEITREIHE], Field(alias="_typ")] = BoTyp.ZEITREIHE bezeichnung: Optional[str] = None """Bezeichnung für die Zeitreihe""" messgroesse: Optional["Messgroesse"] = None diff --git a/src/bo4e/com/adresse.py b/src/bo4e/com/adresse.py index fac18f7a9..67c8b5198 100644 --- a/src/bo4e/com/adresse.py +++ b/src/bo4e/com/adresse.py @@ -2,8 +2,11 @@ Contains Adresse class """ -from typing import Optional +from typing import Annotated, Literal, Optional +from pydantic import Field + +from ..enum.comtyp import ComTyp from ..enum.landescode import Landescode from ..utils import postprocess_docstring from .com import COM @@ -25,6 +28,8 @@ class Adresse(COM): """ + typ: Annotated[Literal[ComTyp.ADRESSE], Field(alias="_typ")] = ComTyp.ADRESSE + postleitzahl: Optional[str] = None """ Die Postleitzahl; z.B: "41836" diff --git a/src/bo4e/com/angebotsposition.py b/src/bo4e/com/angebotsposition.py index 7dccd2036..b781dc2e7 100644 --- a/src/bo4e/com/angebotsposition.py +++ b/src/bo4e/com/angebotsposition.py @@ -2,8 +2,11 @@ Contains Angebotsposition class """ -from typing import TYPE_CHECKING, Optional +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 @@ -34,6 +37,8 @@ class Angebotsposition(COM): """ + typ: Annotated[Literal[ComTyp.ANGEBOTSPOSITION], Field(alias="_typ")] = ComTyp.ANGEBOTSPOSITION + positionsbezeichnung: Optional[str] = None """Bezeichnung der jeweiligen Position des Angebotsteils""" positionspreis: Optional["Preis"] = None diff --git a/src/bo4e/com/angebotsteil.py b/src/bo4e/com/angebotsteil.py index bdf10c688..e9c5ea3f5 100644 --- a/src/bo4e/com/angebotsteil.py +++ b/src/bo4e/com/angebotsteil.py @@ -2,8 +2,11 @@ Contains Angebotsteil class """ -from typing import TYPE_CHECKING, Optional +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 @@ -36,6 +39,8 @@ class Angebotsteil(COM): """ + typ: Annotated[Literal[ComTyp.ANGEBOTSTEIL], Field(alias="_typ")] = ComTyp.ANGEBOTSTEIL + positionen: Optional[list["Angebotsposition"]] = None """Einzelne Positionen, die zu diesem Angebotsteil gehören""" diff --git a/src/bo4e/com/angebotsvariante.py b/src/bo4e/com/angebotsvariante.py index 86a5699bc..e91b9cd81 100644 --- a/src/bo4e/com/angebotsvariante.py +++ b/src/bo4e/com/angebotsvariante.py @@ -4,10 +4,12 @@ # pylint: disable=too-few-public-methods # pylint: disable=no-name-in-module -from typing import TYPE_CHECKING, Optional +from typing import TYPE_CHECKING, Annotated, Literal, Optional import pydantic +from pydantic import Field +from ..enum.comtyp import ComTyp from ..utils import postprocess_docstring from .com import COM @@ -32,6 +34,8 @@ class Angebotsvariante(COM): """ + typ: Annotated[Literal[ComTyp.ANGEBOTSVARIANTE], Field(alias="_typ")] = ComTyp.ANGEBOTSVARIANTE + angebotsstatus: Optional["Angebotsstatus"] = None """Gibt den Status eines Angebotes an.""" diff --git a/src/bo4e/com/aufabschlag.py b/src/bo4e/com/aufabschlag.py index 0bb0eeaf1..ea072eaa9 100644 --- a/src/bo4e/com/aufabschlag.py +++ b/src/bo4e/com/aufabschlag.py @@ -2,8 +2,11 @@ Contains AufAbschlag class """ -from typing import TYPE_CHECKING, Optional +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 @@ -32,6 +35,8 @@ class AufAbschlag(COM): """ + typ: Annotated[Literal[ComTyp.AUFABSCHLAG], Field(alias="_typ")] = ComTyp.AUFABSCHLAG + bezeichnung: Optional[str] = None """Bezeichnung des Auf-/Abschlags""" staffeln: Optional[list["Preisstaffel"]] = None diff --git a/src/bo4e/com/aufabschlagproort.py b/src/bo4e/com/aufabschlagproort.py index 406045456..ae814f294 100644 --- a/src/bo4e/com/aufabschlagproort.py +++ b/src/bo4e/com/aufabschlagproort.py @@ -2,8 +2,11 @@ Contains AufAbschlagProOrt class """ -from typing import TYPE_CHECKING, Optional +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 @@ -31,6 +34,8 @@ class AufAbschlagProOrt(COM): """ + typ: Annotated[Literal[ComTyp.AUFABSCHLAGPROORT], Field(alias="_typ")] = ComTyp.AUFABSCHLAGPROORT + postleitzahl: Optional[str] = None """Die Postleitzahl des Ortes für den der Aufschlag gilt.""" ort: Optional[str] = None diff --git a/src/bo4e/com/aufabschlagregional.py b/src/bo4e/com/aufabschlagregional.py index cae33e18d..70cb3f23a 100644 --- a/src/bo4e/com/aufabschlagregional.py +++ b/src/bo4e/com/aufabschlagregional.py @@ -2,8 +2,11 @@ Contains AufAbschlagRegional """ -from typing import TYPE_CHECKING, Optional +from typing import TYPE_CHECKING, Annotated, Literal, Optional +from pydantic import Field + +from ..enum.comtyp import ComTyp from ..utils import postprocess_docstring # pylint: disable=R0801 @@ -41,6 +44,7 @@ class AufAbschlagRegional(COM): """ + typ: Annotated[Literal[ComTyp.AUFABSCHLAGREGIONAL], Field(alias="_typ")] = ComTyp.AUFABSCHLAGREGIONAL # required attributess bezeichnung: Optional[str] = None """Bezeichnung des Auf-/Abschlags""" diff --git a/src/bo4e/com/aufabschlagstaffelproort.py b/src/bo4e/com/aufabschlagstaffelproort.py index 62dbb60ce..3793d7554 100644 --- a/src/bo4e/com/aufabschlagstaffelproort.py +++ b/src/bo4e/com/aufabschlagstaffelproort.py @@ -3,8 +3,11 @@ """ from decimal import Decimal -from typing import Optional +from typing import Annotated, Literal, Optional +from pydantic import Field + +from ..enum.comtyp import ComTyp from ..utils import postprocess_docstring from .com import COM @@ -25,6 +28,8 @@ class AufAbschlagstaffelProOrt(COM): """ + typ: Annotated[Literal[ComTyp.AUFABSCHLAGSTAFFELPROORT], Field(alias="_typ")] = ComTyp.AUFABSCHLAGSTAFFELPROORT + wert: Optional[Decimal] = None """Der Wert für den Auf- oder Abschlag.""" staffelgrenze_von: Optional[Decimal] = None diff --git a/src/bo4e/com/ausschreibungsdetail.py b/src/bo4e/com/ausschreibungsdetail.py index 234e7e80f..7c74df320 100644 --- a/src/bo4e/com/ausschreibungsdetail.py +++ b/src/bo4e/com/ausschreibungsdetail.py @@ -2,8 +2,11 @@ Contains class Ausschreibungsdetail """ -from typing import TYPE_CHECKING, Optional +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 @@ -31,6 +34,8 @@ class Ausschreibungsdetail(COM): """ + typ: Annotated[Literal[ComTyp.AUSSCHREIBUNGSDETAIL], Field(alias="_typ")] = ComTyp.AUSSCHREIBUNGSDETAIL + marktlokations_id: Optional[str] = None """Identifikation einer ausgeschriebenen Marktlokation""" netzebene_lieferung: Optional[str] = None diff --git a/src/bo4e/com/ausschreibungslos.py b/src/bo4e/com/ausschreibungslos.py index 98329f2ed..06f00bb37 100644 --- a/src/bo4e/com/ausschreibungslos.py +++ b/src/bo4e/com/ausschreibungslos.py @@ -4,8 +4,11 @@ # pylint: disable=too-few-public-methods, too-many-instance-attributes # pylint: disable=no-name-in-module -from typing import TYPE_CHECKING, Optional +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 @@ -33,6 +36,8 @@ class Ausschreibungslos(COM): """ + typ: Annotated[Literal[ComTyp.AUSSCHREIBUNGSLOS], Field(alias="_typ")] = ComTyp.AUSSCHREIBUNGSLOS + losnummer: Optional[str] = None """Laufende Nummer des Loses""" bezeichnung: Optional[str] = None diff --git a/src/bo4e/com/betrag.py b/src/bo4e/com/betrag.py index 963135eb7..855ca33e6 100644 --- a/src/bo4e/com/betrag.py +++ b/src/bo4e/com/betrag.py @@ -3,8 +3,11 @@ """ from decimal import Decimal -from typing import TYPE_CHECKING, Optional +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 @@ -30,6 +33,8 @@ class Betrag(COM): """ + typ: Annotated[Literal[ComTyp.BETRAG], Field(alias="_typ")] = ComTyp.BETRAG + wert: Optional[Decimal] = None """Gibt den Betrag des Preises an.""" waehrung: Optional["Waehrungscode"] = None diff --git a/src/bo4e/com/dienstleistung.py b/src/bo4e/com/dienstleistung.py index aa84d61bf..f814cc816 100644 --- a/src/bo4e/com/dienstleistung.py +++ b/src/bo4e/com/dienstleistung.py @@ -2,8 +2,11 @@ Contains Dienstleistung class """ -from typing import TYPE_CHECKING, Optional +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 @@ -28,6 +31,8 @@ class Dienstleistung(COM): """ + typ: Annotated[Literal[ComTyp.DIENSTLEISTUNG], Field(alias="_typ")] = ComTyp.DIENSTLEISTUNG + dienstleistungstyp: Optional["Dienstleistungstyp"] = None """Kennzeichnung der Dienstleistung""" bezeichnung: Optional[str] = None diff --git a/src/bo4e/com/energieherkunft.py b/src/bo4e/com/energieherkunft.py index 1f0a3b687..fdfe2a643 100644 --- a/src/bo4e/com/energieherkunft.py +++ b/src/bo4e/com/energieherkunft.py @@ -3,8 +3,11 @@ """ from decimal import Decimal -from typing import TYPE_CHECKING, Optional +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 @@ -32,6 +35,8 @@ class Energieherkunft(COM): """ + typ: Annotated[Literal[ComTyp.ENERGIEHERKUNFT], Field(alias="_typ")] = ComTyp.ENERGIEHERKUNFT + erzeugungsart: Optional["Erzeugungsart"] = None """Art der Erzeugung der Energie.""" anteil_prozent: Optional[Decimal] = None diff --git a/src/bo4e/com/energiemix.py b/src/bo4e/com/energiemix.py index c333333a6..076378f53 100644 --- a/src/bo4e/com/energiemix.py +++ b/src/bo4e/com/energiemix.py @@ -3,8 +3,11 @@ """ from decimal import Decimal -from typing import TYPE_CHECKING, Optional +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 @@ -32,6 +35,8 @@ class Energiemix(COM): """ + typ: Annotated[Literal[ComTyp.ENERGIEMIX], Field(alias="_typ")] = ComTyp.ENERGIEMIX + energiemixnummer: Optional[int] = None """Eindeutige Nummer zur Identifizierung des Energiemixes""" energieart: Optional["Sparte"] = None diff --git a/src/bo4e/com/fremdkostenblock.py b/src/bo4e/com/fremdkostenblock.py index bb41d0461..ac649feae 100644 --- a/src/bo4e/com/fremdkostenblock.py +++ b/src/bo4e/com/fremdkostenblock.py @@ -2,8 +2,11 @@ Contains Fremdkostenblock class """ -from typing import TYPE_CHECKING, Optional +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 @@ -29,6 +32,8 @@ class Fremdkostenblock(COM): """ + typ: Annotated[Literal[ComTyp.FREMDKOSTENBLOCK], Field(alias="_typ")] = ComTyp.FREMDKOSTENBLOCK + kostenblockbezeichnung: Optional[str] = None """Bezeichnung für einen Kostenblock. Z.B. Netzkosten, Messkosten, Umlagen, etc.""" diff --git a/src/bo4e/com/fremdkostenposition.py b/src/bo4e/com/fremdkostenposition.py index 62e21feb1..6d050ebd6 100644 --- a/src/bo4e/com/fremdkostenposition.py +++ b/src/bo4e/com/fremdkostenposition.py @@ -2,8 +2,11 @@ Contains Fremdkostenposition """ -from typing import Optional +from typing import Annotated, Literal, Optional +from pydantic import Field + +from ..enum.comtyp import ComTyp from ..utils import postprocess_docstring from .kostenposition import Kostenposition @@ -24,6 +27,10 @@ class Fremdkostenposition(Kostenposition): """ + typ: Annotated[Literal[ComTyp.FREMDKOSTENPOSITION], Field(alias="_typ")] = ( + ComTyp.FREMDKOSTENPOSITION # type:ignore[assignment] + ) + # optional attributes (additional to those from Kostenposition) marktpartnername: Optional[str] = None """Der Name des Marktpartners, der die Preise festlegt, bzw. die Kosten in Rechnung stellt""" diff --git a/src/bo4e/com/geokoordinaten.py b/src/bo4e/com/geokoordinaten.py index 5332dd17e..321e827d0 100644 --- a/src/bo4e/com/geokoordinaten.py +++ b/src/bo4e/com/geokoordinaten.py @@ -3,8 +3,11 @@ """ from decimal import Decimal -from typing import Optional +from typing import Annotated, Literal, Optional +from pydantic import Field + +from ..enum.comtyp import ComTyp from ..utils import postprocess_docstring from .com import COM @@ -25,5 +28,7 @@ class Geokoordinaten(COM): """ + typ: Annotated[Literal[ComTyp.GEOKOORDINATEN], Field(alias="_typ")] = ComTyp.GEOKOORDINATEN + breitengrad: Optional[Decimal] = None laengengrad: Optional[Decimal] = None diff --git a/src/bo4e/com/katasteradresse.py b/src/bo4e/com/katasteradresse.py index b49c237bd..dc786a178 100644 --- a/src/bo4e/com/katasteradresse.py +++ b/src/bo4e/com/katasteradresse.py @@ -2,8 +2,11 @@ Contains Katasteradresse class """ -from typing import Optional +from typing import Annotated, Literal, Optional +from pydantic import Field + +from ..enum.comtyp import ComTyp from ..utils import postprocess_docstring from .com import COM @@ -24,5 +27,7 @@ class Katasteradresse(COM): """ + typ: Annotated[Literal[ComTyp.KATASTERADRESSE], Field(alias="_typ")] = ComTyp.KATASTERADRESSE + gemarkung_flur: Optional[str] = None flurstueck: Optional[str] = None diff --git a/src/bo4e/com/konfigurationsprodukt.py b/src/bo4e/com/konfigurationsprodukt.py index 10330a2b9..502af7dcd 100644 --- a/src/bo4e/com/konfigurationsprodukt.py +++ b/src/bo4e/com/konfigurationsprodukt.py @@ -2,8 +2,11 @@ Contains Konfigurationsprodukt class """ -from typing import TYPE_CHECKING, Optional +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 @@ -28,6 +31,8 @@ class Konfigurationsprodukt(COM): """ + typ: Annotated[Literal[ComTyp.KONFIGURATIONSPRODUKT], Field(alias="_typ")] = ComTyp.KONFIGURATIONSPRODUKT + produktcode: Optional[str] = None leistungskurvendefinition: Optional[str] = None schaltzeitdefinition: Optional[str] = None diff --git a/src/bo4e/com/kontaktweg.py b/src/bo4e/com/kontaktweg.py index 84c620ea5..2120a2782 100644 --- a/src/bo4e/com/kontaktweg.py +++ b/src/bo4e/com/kontaktweg.py @@ -2,8 +2,11 @@ Contains Kontaktweg class """ -from typing import TYPE_CHECKING, Optional +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 @@ -28,6 +31,8 @@ class Kontaktweg(COM): """ + typ: Annotated[Literal[ComTyp.KONTAKTWEG], Field(alias="_typ")] = ComTyp.KONTAKTWEG + kontaktart: Optional["Kontaktart"] = None """Gibt die Kontaktart des Kontaktes an.""" beschreibung: Optional[str] = None diff --git a/src/bo4e/com/konzessionsabgabe.py b/src/bo4e/com/konzessionsabgabe.py index cd395f1fe..7d50c4d57 100644 --- a/src/bo4e/com/konzessionsabgabe.py +++ b/src/bo4e/com/konzessionsabgabe.py @@ -3,8 +3,11 @@ """ from decimal import Decimal -from typing import TYPE_CHECKING, Optional +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 @@ -29,6 +32,8 @@ class Konzessionsabgabe(COM): """ + typ: Annotated[Literal[ComTyp.KONZESSIONSABGABE], Field(alias="_typ")] = ComTyp.KONZESSIONSABGABE + satz: Optional["AbgabeArt"] = None """Art der Abgabe""" diff --git a/src/bo4e/com/kostenblock.py b/src/bo4e/com/kostenblock.py index 07c4c0550..b799c1ce3 100644 --- a/src/bo4e/com/kostenblock.py +++ b/src/bo4e/com/kostenblock.py @@ -2,8 +2,11 @@ Contains Kostenblock """ -from typing import TYPE_CHECKING, Optional +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 @@ -29,6 +32,8 @@ class Kostenblock(COM): """ + typ: Annotated[Literal[ComTyp.KOSTENBLOCK], Field(alias="_typ")] = ComTyp.KOSTENBLOCK + kostenblockbezeichnung: Optional[str] = None """Bezeichnung für einen Kostenblock. Z.B. Netzkosten, Messkosten, Umlagen, etc.""" diff --git a/src/bo4e/com/kostenposition.py b/src/bo4e/com/kostenposition.py index 8cda8fff8..945966396 100644 --- a/src/bo4e/com/kostenposition.py +++ b/src/bo4e/com/kostenposition.py @@ -2,10 +2,12 @@ Contains Kostenposition """ -from typing import TYPE_CHECKING, Optional +from typing import TYPE_CHECKING, Annotated, Literal, Optional import pydantic +from pydantic import Field +from ..enum.comtyp import ComTyp from ..utils import postprocess_docstring from .com import COM @@ -32,6 +34,8 @@ class Kostenposition(COM): """ + typ: Annotated[Literal[ComTyp.KOSTENPOSITION], Field(alias="_typ")] = ComTyp.KOSTENPOSITION + positionstitel: Optional[str] = None """Ein Titel für die Zeile. Hier kann z.B. der Netzbetreiber eingetragen werden, wenn es sich um Netzkosten handelt.""" diff --git a/src/bo4e/com/kriteriumwert.py b/src/bo4e/com/kriteriumwert.py index bdd0b8420..6aeb03f82 100644 --- a/src/bo4e/com/kriteriumwert.py +++ b/src/bo4e/com/kriteriumwert.py @@ -3,8 +3,11 @@ """ # pylint: disable=too-few-public-methods -from typing import TYPE_CHECKING, Optional +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 @@ -26,6 +29,8 @@ class KriteriumWert(COM): """ + typ: Annotated[Literal[ComTyp.KRITERIUMWERT], Field(alias="_typ")] = ComTyp.KRITERIUMWERT + kriterium: Optional["Tarifregionskriterium"] = None """Hier steht, für welches Kriterium der Wert gilt. Z.B. Postleitzahlen""" wert: Optional[str] = None diff --git a/src/bo4e/com/lastprofil.py b/src/bo4e/com/lastprofil.py index 0fd80c1f0..9771eda78 100644 --- a/src/bo4e/com/lastprofil.py +++ b/src/bo4e/com/lastprofil.py @@ -2,10 +2,13 @@ Contains class Lastprofil """ -from typing import Optional +from typing import Annotated, Literal, Optional + +from pydantic import Field from bo4e.com.com import COM from bo4e.com.tagesparameter import Tagesparameter +from bo4e.enum.comtyp import ComTyp from bo4e.enum.profilart import Profilart from bo4e.enum.profilverfahren import Profilverfahren @@ -23,6 +26,8 @@ class Lastprofil(COM): """ + typ: Annotated[Literal[ComTyp.LASTPROFIL], Field(alias="_typ")] = ComTyp.LASTPROFIL + bezeichnung: Optional[str] = None #: Bezeichnung des Profils, durch DVGW bzw. den Netzbetreiber vergeben (z.B. H0) profilschar: Optional[str] = ( None #: Bezeichnung der Profilschar, durch DVGW bzw. den Netzbetreiber vergeben (z.B. H0) diff --git a/src/bo4e/com/marktgebietinfo.py b/src/bo4e/com/marktgebietinfo.py index 2042ef099..cbbca784e 100644 --- a/src/bo4e/com/marktgebietinfo.py +++ b/src/bo4e/com/marktgebietinfo.py @@ -2,8 +2,11 @@ Contains Marktgebietinfo class """ -from typing import Optional +from typing import Annotated, Literal, Optional +from pydantic import Field + +from ..enum.comtyp import ComTyp from ..utils import postprocess_docstring from .com import COM @@ -24,6 +27,8 @@ class MarktgebietInfo(COM): """ + typ: Annotated[Literal[ComTyp.MARKTGEBIETINFO], Field(alias="_typ")] = ComTyp.MARKTGEBIETINFO + marktgebiet: Optional[str] = None """Der Name des Marktgebietes""" marktgebietcode: Optional[str] = None diff --git a/src/bo4e/com/menge.py b/src/bo4e/com/menge.py index ebb6467ee..9ac22a94f 100644 --- a/src/bo4e/com/menge.py +++ b/src/bo4e/com/menge.py @@ -3,8 +3,11 @@ """ from decimal import Decimal -from typing import TYPE_CHECKING, Optional +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 @@ -29,6 +32,8 @@ class Menge(COM): """ + typ: Annotated[Literal[ComTyp.MENGE], Field(alias="_typ")] = ComTyp.MENGE + wert: Optional[Decimal] = None """Gibt den absoluten Wert der Menge an""" einheit: Optional["Mengeneinheit"] = None diff --git a/src/bo4e/com/positionsaufabschlag.py b/src/bo4e/com/positionsaufabschlag.py index bda12f662..74ff018c1 100644 --- a/src/bo4e/com/positionsaufabschlag.py +++ b/src/bo4e/com/positionsaufabschlag.py @@ -5,8 +5,11 @@ from decimal import Decimal # pylint: disable=too-few-public-methods -from typing import TYPE_CHECKING, Optional +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 @@ -32,6 +35,8 @@ class PositionsAufAbschlag(COM): """ + typ: Annotated[Literal[ComTyp.POSITIONSAUFABSCHLAG], Field(alias="_typ")] = ComTyp.POSITIONSAUFABSCHLAG + bezeichnung: Optional[str] = None """Bezeichnung des Auf-/Abschlags""" beschreibung: Optional[str] = None diff --git a/src/bo4e/com/preis.py b/src/bo4e/com/preis.py index f40adb34e..24868c060 100644 --- a/src/bo4e/com/preis.py +++ b/src/bo4e/com/preis.py @@ -3,8 +3,11 @@ """ from decimal import Decimal -from typing import TYPE_CHECKING, Optional +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 @@ -31,6 +34,8 @@ class Preis(COM): """ + typ: Annotated[Literal[ComTyp.PREIS], Field(alias="_typ")] = ComTyp.PREIS + wert: Optional[Decimal] = None """Gibt die nominale Höhe des Preises an.""" einheit: Optional["Waehrungseinheit"] = None diff --git a/src/bo4e/com/preisgarantie.py b/src/bo4e/com/preisgarantie.py index 1628b3f5b..afefd613c 100644 --- a/src/bo4e/com/preisgarantie.py +++ b/src/bo4e/com/preisgarantie.py @@ -2,8 +2,11 @@ Contains Preisgarantie class """ -from typing import TYPE_CHECKING, Optional +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 @@ -28,6 +31,8 @@ class Preisgarantie(COM): """ + typ: Annotated[Literal[ComTyp.PREISGARANTIE], Field(alias="_typ")] = ComTyp.PREISGARANTIE + preisgarantietyp: Optional["Preisgarantietyp"] = None """Festlegung, auf welche Preisbestandteile die Garantie gewährt wird.""" zeitliche_gueltigkeit: Optional["Zeitraum"] = None diff --git a/src/bo4e/com/preisposition.py b/src/bo4e/com/preisposition.py index 92147b3da..e3504be8e 100644 --- a/src/bo4e/com/preisposition.py +++ b/src/bo4e/com/preisposition.py @@ -5,8 +5,11 @@ from decimal import Decimal # pylint: disable=no-name-in-module -from typing import TYPE_CHECKING, Optional +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 @@ -37,6 +40,8 @@ class Preisposition(COM): """ + typ: Annotated[Literal[ComTyp.PREISPOSITION], Field(alias="_typ")] = ComTyp.PREISPOSITION + berechnungsmethode: Optional["Kalkulationsmethode"] = None """Das Modell, das der Preisbildung zugrunde liegt""" leistungstyp: Optional["Leistungstyp"] = None diff --git a/src/bo4e/com/preisstaffel.py b/src/bo4e/com/preisstaffel.py index 4837fc43c..0a14fa53b 100644 --- a/src/bo4e/com/preisstaffel.py +++ b/src/bo4e/com/preisstaffel.py @@ -3,8 +3,11 @@ """ from decimal import Decimal -from typing import TYPE_CHECKING, Optional +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 @@ -29,6 +32,8 @@ class Preisstaffel(COM): """ + typ: Annotated[Literal[ComTyp.PREISSTAFFEL], Field(alias="_typ")] = ComTyp.PREISSTAFFEL + einheitspreis: Optional[Decimal] = None """Preis pro abgerechneter Mengeneinheit""" staffelgrenze_von: Optional[Decimal] = None diff --git a/src/bo4e/com/rechnungsposition.py b/src/bo4e/com/rechnungsposition.py index 8d5747a4b..74e24ea05 100644 --- a/src/bo4e/com/rechnungsposition.py +++ b/src/bo4e/com/rechnungsposition.py @@ -3,10 +3,12 @@ """ # pylint: disable=too-few-public-methods, too-many-instance-attributes -from typing import TYPE_CHECKING, Optional +from typing import TYPE_CHECKING, Annotated, Literal, Optional import pydantic +from pydantic import Field +from ..enum.comtyp import ComTyp from ..utils import postprocess_docstring from .com import COM @@ -34,6 +36,8 @@ class Rechnungsposition(COM): """ + typ: Annotated[Literal[ComTyp.RECHNUNGSPOSITION], Field(alias="_typ")] = ComTyp.RECHNUNGSPOSITION + positionsnummer: Optional[int] = None """Fortlaufende Nummer für die Rechnungsposition""" diff --git a/src/bo4e/com/regionalegueltigkeit.py b/src/bo4e/com/regionalegueltigkeit.py index a01b98a1d..afaa013a0 100644 --- a/src/bo4e/com/regionalegueltigkeit.py +++ b/src/bo4e/com/regionalegueltigkeit.py @@ -2,8 +2,11 @@ Contains RegionaleGueltigkeit class """ -from typing import TYPE_CHECKING, Optional +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 @@ -29,6 +32,8 @@ class RegionaleGueltigkeit(COM): """ + typ: Annotated[Literal[ComTyp.REGIONALEGUELTIGKEIT], Field(alias="_typ")] = ComTyp.REGIONALEGUELTIGKEIT + gueltigkeitstyp: Optional["Gueltigkeitstyp"] = None """Unterscheidung ob Positivliste oder Negativliste übertragen wird""" kriteriums_werte: Optional[list["KriteriumWert"]] = None diff --git a/src/bo4e/com/regionalepreisgarantie.py b/src/bo4e/com/regionalepreisgarantie.py index 506c6829c..a34e15138 100644 --- a/src/bo4e/com/regionalepreisgarantie.py +++ b/src/bo4e/com/regionalepreisgarantie.py @@ -2,8 +2,11 @@ Contains RegionalePreisgarantie class """ -from typing import TYPE_CHECKING, Optional +from typing import TYPE_CHECKING, Annotated, Literal, Optional +from pydantic import Field + +from ..enum.comtyp import ComTyp from ..utils import postprocess_docstring from .preisgarantie import Preisgarantie @@ -27,5 +30,9 @@ class RegionalePreisgarantie(Preisgarantie): """ + typ: Annotated[Literal[ComTyp.REGIONALEPREISGARANTIE], Field(alias="_typ")] = ( + ComTyp.REGIONALEPREISGARANTIE # type:ignore[assignment] + ) + regionale_gueltigkeit: Optional["RegionaleGueltigkeit"] = None """Regionale Eingrenzung der Preisgarantie.""" diff --git a/src/bo4e/com/regionalepreisstaffel.py b/src/bo4e/com/regionalepreisstaffel.py index 7ef95a2b9..24c76054a 100644 --- a/src/bo4e/com/regionalepreisstaffel.py +++ b/src/bo4e/com/regionalepreisstaffel.py @@ -2,8 +2,11 @@ Contains RegionalePreisstaffel class """ -from typing import TYPE_CHECKING, Optional +from typing import TYPE_CHECKING, Annotated, Literal, Optional +from pydantic import Field + +from ..enum.comtyp import ComTyp from ..utils import postprocess_docstring from .preisstaffel import Preisstaffel @@ -16,7 +19,7 @@ @postprocess_docstring class RegionalePreisstaffel(Preisstaffel): """ - Abbildung einer Preisstaffel mit regionaler Abgrenzung + Mit dieser Komponente können Staffelpreise abgebildet werden, die sich auf eine Region beziehen. .. raw:: html @@ -27,5 +30,9 @@ class RegionalePreisstaffel(Preisstaffel): """ + typ: Annotated[Literal[ComTyp.REGIONALEPREISSTAFFEL], Field(alias="_typ")] = ( + ComTyp.REGIONALEPREISSTAFFEL # type:ignore[assignment] + ) + regionale_gueltigkeit: Optional["RegionaleGueltigkeit"] = None """Regionale Eingrenzung der Preisstaffel""" diff --git a/src/bo4e/com/regionaleraufabschlag.py b/src/bo4e/com/regionaleraufabschlag.py index 7b07bd78c..e715669ef 100644 --- a/src/bo4e/com/regionaleraufabschlag.py +++ b/src/bo4e/com/regionaleraufabschlag.py @@ -2,7 +2,11 @@ Contains RegionalerAufAbschlag class """ -from typing import TYPE_CHECKING, Optional +from typing import TYPE_CHECKING, Annotated, Literal, Optional + +from pydantic import Field + +from ..enum.comtyp import ComTyp # pylint: disable=R0801 from ..utils import postprocess_docstring @@ -40,6 +44,8 @@ class RegionalerAufAbschlag(COM): """ + typ: Annotated[Literal[ComTyp.REGIONALERAUFABSCHLAG], Field(alias="_typ")] = ComTyp.REGIONALERAUFABSCHLAG + bezeichnung: Optional[str] = None """Bezeichnung des Auf-/Abschlags""" diff --git a/src/bo4e/com/regionaletarifpreisposition.py b/src/bo4e/com/regionaletarifpreisposition.py index 5d753f486..0b268e98e 100644 --- a/src/bo4e/com/regionaletarifpreisposition.py +++ b/src/bo4e/com/regionaletarifpreisposition.py @@ -4,8 +4,11 @@ # pylint: disable=too-few-public-methods # pylint: disable=no-name-in-module -from typing import TYPE_CHECKING, Optional +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 @@ -31,6 +34,10 @@ class RegionaleTarifpreisposition(COM): """ + typ: Annotated[Literal[ComTyp.REGIONALETARIFPREISPOSITION], Field(alias="_typ")] = ( + ComTyp.REGIONALETARIFPREISPOSITION + ) + preistyp: Optional["Preistyp"] = None """Angabe des Preistypes (z.B. Grundpreis)""" einheit: Optional["Waehrungseinheit"] = None diff --git a/src/bo4e/com/regionskriterium.py b/src/bo4e/com/regionskriterium.py index a435f577b..16281d728 100644 --- a/src/bo4e/com/regionskriterium.py +++ b/src/bo4e/com/regionskriterium.py @@ -2,8 +2,11 @@ Contains Regionskriterium class """ -from typing import TYPE_CHECKING, Optional +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 @@ -29,6 +32,8 @@ class Regionskriterium(COM): """ + typ: Annotated[Literal[ComTyp.REGIONSKRITERIUM], Field(alias="_typ")] = ComTyp.REGIONSKRITERIUM + gueltigkeitstyp: Optional["Gueltigkeitstyp"] = None """Hier wird festgelegt, ob es sich um ein einschließendes oder ausschließendes Kriterium handelt.""" regionskriteriumtyp: Optional["Regionskriteriumtyp"] = None diff --git a/src/bo4e/com/sigmoidparameter.py b/src/bo4e/com/sigmoidparameter.py index 1a28de606..464c16f6e 100644 --- a/src/bo4e/com/sigmoidparameter.py +++ b/src/bo4e/com/sigmoidparameter.py @@ -3,8 +3,11 @@ """ from decimal import Decimal -from typing import Optional +from typing import Annotated, Literal, Optional +from pydantic import Field + +from ..enum.comtyp import ComTyp from ..utils import postprocess_docstring from .com import COM @@ -26,6 +29,8 @@ class Sigmoidparameter(COM): """ + typ: Annotated[Literal[ComTyp.SIGMOIDPARAMETER], Field(alias="_typ")] = ComTyp.SIGMOIDPARAMETER + A: Optional[Decimal] = None """Briefmarke Ortsverteilnetz (EUR/kWh)""" B: Optional[Decimal] = None diff --git a/src/bo4e/com/standorteigenschaftengas.py b/src/bo4e/com/standorteigenschaftengas.py index f9dea9708..31bab7117 100644 --- a/src/bo4e/com/standorteigenschaftengas.py +++ b/src/bo4e/com/standorteigenschaftengas.py @@ -2,8 +2,11 @@ Contains StandorteigenschaftenGas class """ -from typing import TYPE_CHECKING, Optional +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 @@ -29,6 +32,7 @@ class StandorteigenschaftenGas(COM): """ + typ: Annotated[Literal[ComTyp.STANDORTEIGENSCHAFTENGAS], Field(alias="_typ")] = ComTyp.STANDORTEIGENSCHAFTENGAS netzkontonummern: Optional[list[str]] = None """Netzkontonummern der Gasnetze""" marktgebiete: Optional[list["MarktgebietInfo"]] = None diff --git a/src/bo4e/com/standorteigenschaftenstrom.py b/src/bo4e/com/standorteigenschaftenstrom.py index e96f6a605..e8aebeecf 100644 --- a/src/bo4e/com/standorteigenschaftenstrom.py +++ b/src/bo4e/com/standorteigenschaftenstrom.py @@ -2,8 +2,11 @@ Contains StandorteigenschaftenStrom class """ -from typing import Optional +from typing import Annotated, Literal, Optional +from pydantic import Field + +from ..enum.comtyp import ComTyp from ..utils import postprocess_docstring from .com import COM @@ -24,6 +27,7 @@ class StandorteigenschaftenStrom(COM): """ + typ: Annotated[Literal[ComTyp.STANDORTEIGENSCHAFTENSTROM], Field(alias="_typ")] = ComTyp.STANDORTEIGENSCHAFTENSTROM bilanzierungsgebiet_eic: Optional[str] = None """Die EIC-Nummer des Bilanzierungsgebietes""" # todo: use EIC validation: https://github.com/Hochfrequenz/BO4E-python/issues/147 diff --git a/src/bo4e/com/steuerbetrag.py b/src/bo4e/com/steuerbetrag.py index 856f7d4e1..ccb3c101c 100644 --- a/src/bo4e/com/steuerbetrag.py +++ b/src/bo4e/com/steuerbetrag.py @@ -3,8 +3,11 @@ """ from decimal import Decimal -from typing import TYPE_CHECKING, Optional +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 @@ -30,6 +33,8 @@ class Steuerbetrag(COM): """ + typ: Annotated[Literal[ComTyp.STEUERBETRAG], Field(alias="_typ")] = ComTyp.STEUERBETRAG + steuerkennzeichen: Optional["Steuerkennzeichen"] = None """Kennzeichnung des Steuersatzes, bzw. Verfahrens.""" basiswert: Optional[Decimal] = None diff --git a/src/bo4e/com/tagesparameter.py b/src/bo4e/com/tagesparameter.py index f76793d30..95c6db601 100644 --- a/src/bo4e/com/tagesparameter.py +++ b/src/bo4e/com/tagesparameter.py @@ -2,10 +2,14 @@ Contains tagesparameter class """ -from typing import Optional +from typing import Annotated, Literal, Optional + +from pydantic import Field from bo4e.com.com import COM +from ..enum.comtyp import ComTyp + class Tagesparameter(COM): """ @@ -13,6 +17,8 @@ class Tagesparameter(COM): der Wetterstation für die Temperaturmessstelle """ + typ: Annotated[Literal[ComTyp.TAGESPARAMETER], Field(alias="_typ")] = ComTyp.TAGESPARAMETER + klimazone: Optional[str] = None #: Qualifier der Klimazone, e.g. 7624q temperaturmessstelle: Optional[str] = None #: Qualifier der Temperaturmessstelle, e.g. 1234x dienstanbieter: Optional[str] = None #: Dienstanbieter (bei Temperaturmessstellen), e.g. ZT1 diff --git a/src/bo4e/com/tarifberechnungsparameter.py b/src/bo4e/com/tarifberechnungsparameter.py index 301f8cf53..5cd3d9bd2 100644 --- a/src/bo4e/com/tarifberechnungsparameter.py +++ b/src/bo4e/com/tarifberechnungsparameter.py @@ -3,8 +3,11 @@ """ from decimal import Decimal -from typing import TYPE_CHECKING, Optional +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 @@ -34,7 +37,7 @@ class Tarifberechnungsparameter(COM): """ - # there are no required attributes + typ: Annotated[Literal[ComTyp.TARIFBERECHNUNGSPARAMETER], Field(alias="_typ")] = ComTyp.TARIFBERECHNUNGSPARAMETER berechnungsmethode: Optional["Tarifkalkulationsmethode"] = None """Gibt an, wie die Einzelpreise des Tarifes zu verarbeiten sind""" diff --git a/src/bo4e/com/tarifeinschraenkung.py b/src/bo4e/com/tarifeinschraenkung.py index f4d3028f5..9f593ec72 100644 --- a/src/bo4e/com/tarifeinschraenkung.py +++ b/src/bo4e/com/tarifeinschraenkung.py @@ -2,8 +2,11 @@ Contains Tarifeinschraenkung """ -from typing import TYPE_CHECKING, Optional +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 @@ -29,6 +32,8 @@ class Tarifeinschraenkung(COM): """ + typ: Annotated[Literal[ComTyp.TARIFEINSCHRAENKUNG], Field(alias="_typ")] = ComTyp.TARIFEINSCHRAENKUNG + zusatzprodukte: Optional[list[str]] = None """Weitere Produkte, die gemeinsam mit diesem Tarif bestellt werden können""" voraussetzungen: Optional[list["Voraussetzungen"]] = None diff --git a/src/bo4e/com/tarifpreis.py b/src/bo4e/com/tarifpreis.py index e83875b9e..be1eadeff 100644 --- a/src/bo4e/com/tarifpreis.py +++ b/src/bo4e/com/tarifpreis.py @@ -2,8 +2,11 @@ Contains Tarifpreis class """ -from typing import TYPE_CHECKING, Optional +from typing import TYPE_CHECKING, Annotated, Literal, Optional +from pydantic import Field + +from ..enum.comtyp import ComTyp from ..utils import postprocess_docstring from .preis import Preis @@ -28,6 +31,8 @@ class Tarifpreis(Preis): """ + typ: Annotated[Literal[ComTyp.TARIFPREIS], Field(alias="_typ")] = ComTyp.TARIFPREIS # type:ignore[assignment] + preistyp: Optional["Preistyp"] = None """ Angabe des Preistypes (z.B. Grundpreis)""" diff --git a/src/bo4e/com/tarifpreisposition.py b/src/bo4e/com/tarifpreisposition.py index d1d481307..e48bd82a0 100644 --- a/src/bo4e/com/tarifpreisposition.py +++ b/src/bo4e/com/tarifpreisposition.py @@ -4,8 +4,11 @@ # pylint: disable=too-few-public-methods # pylint: disable=no-name-in-module -from typing import TYPE_CHECKING, Optional +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 @@ -30,6 +33,8 @@ class Tarifpreisposition(COM): """ + typ: Annotated[Literal[ComTyp.TARIFPREISPOSITION], Field(alias="_typ")] = ComTyp.TARIFPREISPOSITION + preistyp: Optional["Preistyp"] = None """Angabe des Preistypes (z.B. Grundpreis)""" einheit: Optional["Waehrungseinheit"] = None diff --git a/src/bo4e/com/tarifpreispositionproort.py b/src/bo4e/com/tarifpreispositionproort.py index 450ad27d2..f2a9e0d7c 100644 --- a/src/bo4e/com/tarifpreispositionproort.py +++ b/src/bo4e/com/tarifpreispositionproort.py @@ -2,8 +2,11 @@ Contains TarifpreispositionProOrt class """ -from typing import TYPE_CHECKING, Optional +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 @@ -29,6 +32,8 @@ class TarifpreispositionProOrt(COM): """ + typ: Annotated[Literal[ComTyp.TARIFPREISPOSITIONPROORT], Field(alias="_typ")] = ComTyp.TARIFPREISPOSITIONPROORT + postleitzahl: Optional[str] = None """Postleitzahl des Ortes für den der Preis gilt""" ort: Optional[str] = None diff --git a/src/bo4e/com/tarifpreisstaffelproort.py b/src/bo4e/com/tarifpreisstaffelproort.py index 2ce6feda9..82c219b00 100644 --- a/src/bo4e/com/tarifpreisstaffelproort.py +++ b/src/bo4e/com/tarifpreisstaffelproort.py @@ -3,8 +3,11 @@ """ from decimal import Decimal -from typing import Optional +from typing import Annotated, Literal, Optional +from pydantic import Field + +from ..enum.comtyp import ComTyp from ..utils import postprocess_docstring from .com import COM @@ -25,6 +28,8 @@ class TarifpreisstaffelProOrt(COM): """ + typ: Annotated[Literal[ComTyp.TARIFPREISSTAFFELPROORT], Field(alias="_typ")] = ComTyp.TARIFPREISSTAFFELPROORT + # todo: decimal doesn't make sense here imo # https://github.com/Hochfrequenz/BO4E-python/issues/344 diff --git a/src/bo4e/com/unterschrift.py b/src/bo4e/com/unterschrift.py index c264ff955..4789d492d 100644 --- a/src/bo4e/com/unterschrift.py +++ b/src/bo4e/com/unterschrift.py @@ -2,10 +2,12 @@ Contains Unterschrift class """ -from typing import Optional +from typing import Annotated, Literal, Optional import pydantic +from pydantic import Field +from ..enum.comtyp import ComTyp from ..utils import postprocess_docstring from .com import COM @@ -26,6 +28,8 @@ class Unterschrift(COM): """ + typ: Annotated[Literal[ComTyp.UNTERSCHRIFT], Field(alias="_typ")] = ComTyp.UNTERSCHRIFT + name: Optional[str] = None """Name des Unterschreibers""" diff --git a/src/bo4e/com/verbrauch.py b/src/bo4e/com/verbrauch.py index 360ad5d04..6d6b9987a 100644 --- a/src/bo4e/com/verbrauch.py +++ b/src/bo4e/com/verbrauch.py @@ -3,10 +3,12 @@ """ from decimal import Decimal -from typing import TYPE_CHECKING, Optional +from typing import TYPE_CHECKING, Annotated, Literal, Optional import pydantic +from pydantic import Field +from ..enum.comtyp import ComTyp from ..utils import postprocess_docstring from .com import COM @@ -34,6 +36,8 @@ class Verbrauch(COM): """ + typ: Annotated[Literal[ComTyp.VERBRAUCH], Field(alias="_typ")] = ComTyp.VERBRAUCH + wertermittlungsverfahren: Optional["Wertermittlungsverfahren"] = None """Gibt an, ob es sich um eine PROGNOSE oder eine MESSUNG handelt""" obis_kennzahl: Optional[str] = None diff --git a/src/bo4e/com/vertragskonditionen.py b/src/bo4e/com/vertragskonditionen.py index 4f635e825..acb852ca9 100644 --- a/src/bo4e/com/vertragskonditionen.py +++ b/src/bo4e/com/vertragskonditionen.py @@ -3,8 +3,11 @@ """ from decimal import Decimal -from typing import TYPE_CHECKING, Optional +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 @@ -29,6 +32,8 @@ class Vertragskonditionen(COM): """ + typ: Annotated[Literal[ComTyp.VERTRAGSKONDITIONEN], Field(alias="_typ")] = ComTyp.VERTRAGSKONDITIONEN + beschreibung: Optional[str] = None """ Freitext zur Beschreibung der Konditionen, z.B. "Standardkonditionen Gas" diff --git a/src/bo4e/com/vertragsteil.py b/src/bo4e/com/vertragsteil.py index c695f860a..9243df22c 100644 --- a/src/bo4e/com/vertragsteil.py +++ b/src/bo4e/com/vertragsteil.py @@ -2,10 +2,12 @@ Contains Vertragsteil class """ -from typing import TYPE_CHECKING, Optional +from typing import TYPE_CHECKING, Annotated, Literal, Optional import pydantic +from pydantic import Field +from ..enum.comtyp import ComTyp from ..utils import postprocess_docstring from .com import COM @@ -31,6 +33,8 @@ class Vertragsteil(COM): """ + typ: Annotated[Literal[ComTyp.VERTRAGSTEIL], Field(alias="_typ")] = ComTyp.VERTRAGSTEIL + vertragsteilbeginn: Optional[pydantic.AwareDatetime] = None """ Start der Gültigkeit des Vertragsteils (inklusiv) diff --git a/src/bo4e/com/verwendungszweckpromarktrolle.py b/src/bo4e/com/verwendungszweckpromarktrolle.py index 8452f752a..2a3c6660c 100644 --- a/src/bo4e/com/verwendungszweckpromarktrolle.py +++ b/src/bo4e/com/verwendungszweckpromarktrolle.py @@ -2,8 +2,11 @@ Contains Verwendungszweck class """ -from typing import TYPE_CHECKING, Optional +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 @@ -29,6 +32,10 @@ class VerwendungszweckProMarktrolle(COM): """ + typ: Annotated[Literal[ComTyp.VERWENDUNGSZWECKPROMARKTROLLE], Field(alias="_typ")] = ( + ComTyp.VERWENDUNGSZWECKPROMARKTROLLE + ) + marktrolle: Optional["Marktrolle"] = None """ Marktrolle, für die die Daten relevant sind diff --git a/src/bo4e/com/zaehlwerk.py b/src/bo4e/com/zaehlwerk.py index 971724c07..d1ca989ec 100644 --- a/src/bo4e/com/zaehlwerk.py +++ b/src/bo4e/com/zaehlwerk.py @@ -3,8 +3,11 @@ """ from decimal import Decimal -from typing import TYPE_CHECKING, Optional +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 @@ -32,6 +35,8 @@ class Zaehlwerk(COM): """ + typ: Annotated[Literal[ComTyp.ZAEHLWERK], Field(alias="_typ")] = ComTyp.ZAEHLWERK + zaehlwerk_id: Optional[str] = None """ Identifikation des Zählwerks (Registers) innerhalb des Zählers. diff --git a/src/bo4e/com/zaehlzeitregister.py b/src/bo4e/com/zaehlzeitregister.py index 240c2e61e..f11e4df4d 100644 --- a/src/bo4e/com/zaehlzeitregister.py +++ b/src/bo4e/com/zaehlzeitregister.py @@ -2,8 +2,11 @@ Contains Zaehlzeitregister class """ -from typing import Optional +from typing import Annotated, Literal, Optional +from pydantic import Field + +from ..enum.comtyp import ComTyp from ..utils import postprocess_docstring from .com import COM @@ -26,6 +29,8 @@ class Zaehlzeitregister(COM): """ + typ: Annotated[Literal[ComTyp.ZAEHLZEITREGISTER], Field(alias="_typ")] = ComTyp.ZAEHLZEITREGISTER + zaehlzeit_definition: Optional[str] = None """Zählzeitdefinition""" zaehlzeit_register: Optional[str] = None diff --git a/src/bo4e/com/zeitraum.py b/src/bo4e/com/zeitraum.py index ec45ce188..0aefde5f9 100644 --- a/src/bo4e/com/zeitraum.py +++ b/src/bo4e/com/zeitraum.py @@ -3,8 +3,11 @@ """ from datetime import date, time -from typing import TYPE_CHECKING, Optional +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 @@ -31,6 +34,8 @@ class Zeitraum(COM): """ + typ: Annotated[Literal[ComTyp.ZEITRAUM], Field(alias="_typ")] = ComTyp.ZEITRAUM + startdatum: Optional[date] = None """Startdatum des betrachteten Zeitraums ist **inklusiv**. diff --git a/src/bo4e/com/zeitreihenwert.py b/src/bo4e/com/zeitreihenwert.py index 222a64661..9fc32789d 100644 --- a/src/bo4e/com/zeitreihenwert.py +++ b/src/bo4e/com/zeitreihenwert.py @@ -3,8 +3,11 @@ """ from decimal import Decimal -from typing import TYPE_CHECKING, Optional +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 @@ -29,6 +32,8 @@ class Zeitreihenwert(COM): """ + typ: Annotated[Literal[ComTyp.ZEITREIHENWERT], Field(alias="_typ")] = ComTyp.ZEITREIHENWERT + zeitraum: Optional["Zeitraum"] = None """Zeitraum für das Messintervall""" wert: Optional[Decimal] = None diff --git a/src/bo4e/com/zustaendigkeit.py b/src/bo4e/com/zustaendigkeit.py index e9c4a0270..c8a9b8c72 100644 --- a/src/bo4e/com/zustaendigkeit.py +++ b/src/bo4e/com/zustaendigkeit.py @@ -2,8 +2,11 @@ Contains Zustaendigkeit class """ -from typing import TYPE_CHECKING, Optional +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 @@ -28,6 +31,7 @@ class Zustaendigkeit(COM): """ + typ: Annotated[Literal[ComTyp.ZUSTAENDIGKEIT], Field(alias="_typ")] = ComTyp.ZUSTAENDIGKEIT themengebiet: Optional["Themengebiet"] = None """ Hier kann eine thematische Zuordnung des Ansprechpartners bzw. der Person angegeben werden diff --git a/src/bo4e/enum/typ.py b/src/bo4e/enum/botyp.py similarity index 87% rename from src/bo4e/enum/typ.py rename to src/bo4e/enum/botyp.py index ba853fba6..846f1bd5d 100644 --- a/src/bo4e/enum/typ.py +++ b/src/bo4e/enum/botyp.py @@ -2,9 +2,13 @@ from bo4e.enum.strenum import StrEnum -class Typ(StrEnum): +class BoTyp(StrEnum): """ Auflistung sämtlicher existierender Geschäftsobjekte. + + .. HINT:: + Die Unterscheidung zwischen Komponenten und Geschäftsobjekten ist, dass Komponenten immer in einem Geschäftsobjekt enthalten sind. + Geschäftsobjekte können auch ohne Komponenten existieren. """ ANGEBOT = "ANGEBOT" diff --git a/src/bo4e/enum/comtyp.py b/src/bo4e/enum/comtyp.py new file mode 100644 index 000000000..afca3294d --- /dev/null +++ b/src/bo4e/enum/comtyp.py @@ -0,0 +1,73 @@ +# pylint:disable=missing-module-docstring +from bo4e.enum.strenum import StrEnum + + +class ComTyp(StrEnum): + """ + Auflistung sämtlicher existierender Komponenten. + + .. HINT:: + Die Unterscheidung zwischen Komponenten und Geschäftsobjekten ist, dass Komponenten immer in einem Geschäftsobjekt enthalten sind. + Komponenten sind also immer Teil von einem Geschäftsobjekt und können nicht alleine existieren. + """ + + ADRESSE = "ADRESSE" + ANGEBOTSPOSITION = "ANGEBOTSPOSITION" + ANGEBOTSTEIL = "ANGEBOTSTEIL" + ANGEBOTSVARIANTE = "ANGEBOTSVARIANTE" + AUFABSCHLAG = "AUFABSCHLAG" + AUFABSCHLAGPROORT = "AUFABSCHLAGPROORT" + AUFABSCHLAGREGIONAL = "AUFABSCHLAGREGIONAL" + AUFABSCHLAGSTAFFELPROORT = "AUFABSCHLAGSTAFFELPROORT" + AUSSCHREIBUNGSDETAIL = "AUSSCHREIBUNGSDETAIL" + AUSSCHREIBUNGSLOS = "AUSSCHREIBUNGSLOS" + BETRAG = "BETRAG" + DIENSTLEISTUNG = "DIENSTLEISTUNG" + ENERGIEHERKUNFT = "ENERGIEHERKUNFT" + ENERGIEMIX = "ENERGIEMIX" + FREMDKOSTENBLOCK = "FREMDKOSTENBLOCK" + FREMDKOSTENPOSITION = "FREMDKOSTENPOSITION" + GEOKOORDINATEN = "GEOKOORDINATEN" + KATASTERADRESSE = "KATASTERADRESSE" + KONFIGURATIONSPRODUKT = "KONFIGURATIONSPRODUKT" + KONTAKTWEG = "KONTAKTWEG" + KONZESSIONSABGABE = "KONZESSIONSABGABE" + KOSTENBLOCK = "KOSTENBLOCK" + KOSTENPOSITION = "KOSTENPOSITION" + KRITERIUMWERT = "KRITERIUMWERT" + LASTPROFIL = "LASTPROFIL" + MARKTGEBIETINFO = "MARKTGEBIETINFO" + MENGE = "MENGE" + POSITIONSAUFABSCHLAG = "POSITIONSAUFABSCHLAG" + PREIS = "PREIS" + PREISGARANTIE = "PREISGARANTIE" + PREISPOSITION = "PREISPOSITION" + PREISSTAFFEL = "PREISSTAFFEL" + RECHNUNGSPOSITION = "RECHNUNGSPOSITION" + REGIONALEGUELTIGKEIT = "REGIONALEGUELTIGKEIT" + REGIONALEPREISGARANTIE = "REGIONALEPREISGARANTIE" + REGIONALEPREISSTAFFEL = "REGIONALEPREISSTAFFEL" + REGIONALERAUFABSCHLAG = "REGIONALERAUFABSCHLAG" + REGIONALETARIFPREISPOSITION = "REGIONALETARIFPREISPOSITION" + REGIONSKRITERIUM = "REGIONSKRITERIUM" + SIGMOIDPARAMETER = "SIGMOIDPARAMETER" + STANDORTEIGENSCHAFTENGAS = "STANDORTEIGENSCHAFTENGAS" + STANDORTEIGENSCHAFTENSTROM = "STANDORTEIGENSCHAFTENSTROM" + STEUERBETRAG = "STEUERBETRAG" + TAGESPARAMETER = "TAGESPARAMETER" + TARIFBERECHNUNGSPARAMETER = "TARIFBERECHNUNGSPARAMETER" + TARIFEINSCHRAENKUNG = "TARIFEINSCHRAENKUNG" + TARIFPREIS = "TARIFPREIS" + TARIFPREISPOSITION = "TARIFPREISPOSITION" + TARIFPREISPOSITIONPROORT = "TARIFPREISPOSITIONPROORT" + TARIFPREISSTAFFELPROORT = "TARIFPREISSTAFFELPROORT" + UNTERSCHRIFT = "UNTERSCHRIFT" + VERBRAUCH = "VERBRAUCH" + VERTRAGSKONDITIONEN = "VERTRAGSKONDITIONEN" + VERTRAGSTEIL = "VERTRAGSTEIL" + VERWENDUNGSZWECKPROMARKTROLLE = "VERWENDUNGSZWECKPROMARKTROLLE" + ZAEHLWERK = "ZAEHLWERK" + ZAEHLZEITREGISTER = "ZAEHLZEITREGISTER" + ZEITRAUM = "ZEITRAUM" + ZEITREIHENWERT = "ZEITREIHENWERT" + ZUSTAENDIGKEIT = "ZUSTAENDIGKEIT" diff --git a/tests/serialization_helper.py b/tests/serialization_helper.py index c106620bf..1e4d23508 100644 --- a/tests/serialization_helper.py +++ b/tests/serialization_helper.py @@ -9,6 +9,9 @@ from dictdiffer import diff # type:ignore[import-not-found] from pydantic import BaseModel +from bo4e.bo.geschaeftsobjekt import Geschaeftsobjekt +from bo4e.com.com import COM + T = TypeVar("T", bound=BaseModel) @@ -34,7 +37,20 @@ def _remove_version_recursive_iter(value: dict[str, Any] | list[Any]) -> None: _remove_version_recursive_iter(v) _remove_version_recursive_iter(actual_json_dict) - # TODO: serializable_object.dict() + + # Check typ property for bo and com classes + # the default value must be the corresponding enum value of the enum classes BoTyp or ComTyp + if isinstance(serializable_object, (Geschaeftsobjekt, COM)): + assert hasattr( + serializable_object, "typ" + ), f"Missing 'typ' attribute in {serializable_object.__class__.__name__}" + assert serializable_object.typ is not None + + assert serializable_object.typ.value.lower() == serializable_object.__class__.__name__.lower(), ( + f"typ value '{serializable_object.typ.value}' does not match class name " + f"'{serializable_object.__class__.__name__}'" + ) + if expected_json_dict is not None: assert all([(k in json_string) for k in expected_json_dict.keys()]) assert actual_json_dict == expected_json_dict, (