From 3d2cfe9c84218a5c9e475254426a32c4d74c91b0 Mon Sep 17 00:00:00 2001 From: larisa Date: Tue, 5 Mar 2024 14:55:16 +0100 Subject: [PATCH 01/11] Change Zeitraum to Zeitspanne, fix tests --- CONTRIBUTING.md | 2 +- src/bo4e/__init__.py | 2 -- src/bo4e/bo/ausschreibung.py | 10 +++--- src/bo4e/bo/fremdkosten.py | 6 ++-- src/bo4e/bo/kosten.py | 6 ++-- src/bo4e/bo/preisblatt.py | 6 ++-- src/bo4e/bo/rechnung.py | 4 +-- src/bo4e/bo/tarifinfo.py | 6 ++-- src/bo4e/com/angebotsteil.py | 6 ++-- src/bo4e/com/aufabschlag.py | 4 +-- src/bo4e/com/aufabschlagregional.py | 6 ++-- src/bo4e/com/ausschreibungsdetail.py | 8 ++--- src/bo4e/com/ausschreibungslos.py | 12 +++---- src/bo4e/com/preisgarantie.py | 6 ++-- src/bo4e/com/regionaleraufabschlag.py | 6 ++-- src/bo4e/com/verbrauch.py | 4 +-- src/bo4e/com/vertragskonditionen.py | 13 +++---- src/bo4e/com/zaehlwerk.py | 2 +- src/bo4e/com/zeitraum.py | 41 ---------------------- src/bo4e/com/zeitreihenwert.py | 2 +- src/bo4e/com/zeitspanne.py | 2 +- tests/test_angebotsteil.py | 4 +-- tests/test_aufabschlag.py | 4 +-- tests/test_aufabschlagregional.py | 4 +-- tests/test_ausschreibung.py | 6 ++-- tests/test_ausschreibungsdetail.py | 4 +-- tests/test_ausschreibungslos.py | 10 +++--- tests/test_fremdkosten.py | 4 +-- tests/test_kosten.py | 4 +-- tests/test_preisblatt.py | 4 +-- tests/test_preisblatt_dienstleistung.py | 4 +-- tests/test_preisblatt_hardware.py | 4 +-- tests/test_preisblatt_konzessionsabgabe.py | 4 +-- tests/test_preisblatt_messung.py | 4 +-- tests/test_preisblattnetznutzung.py | 4 +-- tests/test_preisgarantie.py | 8 ++--- tests/test_rechnung.py | 6 ++-- tests/test_regionalepreisgarantie.py | 8 ++--- tests/test_regionaleraufabschlag.py | 4 +-- tests/test_regionaltarif.py | 4 +-- tests/test_tarif.py | 4 +-- tests/test_tarifinfo.py | 4 +-- tests/test_tarifkosten.py | 4 +-- tests/test_tarifpreisblatt.py | 4 +-- tests/test_vertragskonditionen.py | 14 ++++---- tests/test_zeitraum.py | 25 ------------- 46 files changed, 118 insertions(+), 185 deletions(-) delete mode 100644 src/bo4e/com/zeitraum.py delete mode 100644 tests/test_zeitraum.py diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 58144d1fa..4dc0b760c 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -19,7 +19,7 @@ Feel free to open an issue if you run into any kind of problems. - pytest for unittests - Sphinx and Plantuml (and kroki web service) for documentation - Technical Documentation is in English; For example: "Don't use the builtin validator here because …" -- But data model docstrings are in German; For example: "Ist das Ende nicht gesetzt, so ist der Zeitraum als offen zu verstehen." +- But data model docstrings are in German; For example: "Ist das Ende nicht gesetzt, so ist der Zeitspanne als offen zu verstehen." - Docstrings should not be trivial/useless - Bad: "Energiemenge ist eine Klasse zur Abbildung von Energiemengen." ❌ (no shit sherlock) - Good: "Eine Energiemenge ordnet einer :class:`Marktlokation` oder :class:`Messlokation`, die über die `lokations_id` referenziert werden, einen oder mehrere Energieverbräuche zu." ✔ diff --git a/src/bo4e/__init__.py b/src/bo4e/__init__.py index 6fac9267d..a12b19442 100644 --- a/src/bo4e/__init__.py +++ b/src/bo4e/__init__.py @@ -96,7 +96,6 @@ "VerwendungszweckProMarktrolle", "Zaehlwerk", "Zaehlzeitregister", - "Zeitraum", "Zeitreihenwert", "Zeitspanne", "Zustaendigkeit", @@ -277,7 +276,6 @@ from .com.verwendungszweckpromarktrolle import VerwendungszweckProMarktrolle from .com.zaehlwerk import Zaehlwerk from .com.zaehlzeitregister import Zaehlzeitregister -from .com.zeitraum import Zeitraum from .com.zeitreihenwert import Zeitreihenwert from .com.zeitspanne import Zeitspanne from .com.zustaendigkeit import Zustaendigkeit diff --git a/src/bo4e/bo/ausschreibung.py b/src/bo4e/bo/ausschreibung.py index 37a44cd6d..24b47b3ed 100644 --- a/src/bo4e/bo/ausschreibung.py +++ b/src/bo4e/bo/ausschreibung.py @@ -10,7 +10,7 @@ from pydantic import Field from ..com.ausschreibungslos import Ausschreibungslos -from ..com.zeitraum import Zeitraum +from ..com.zeitspanne import Zeitspanne from ..enum.ausschreibungsportal import Ausschreibungsportal from ..enum.ausschreibungsstatus import Ausschreibungsstatus from ..enum.ausschreibungstyp import Ausschreibungstyp @@ -50,15 +50,15 @@ class Ausschreibung(Geschaeftsobjekt): Mit diesem Objekt können Geschäftspartner übertragen werden. Sowohl Unternehmen, als auch Privatpersonen können Geschäftspartner sein """ - abgabefrist: Optional[Zeitraum] = None + abgabefrist: Optional[Zeitspanne] = None """ Diese Komponente wird zur Abbildung von Zeiträumen in Form von Dauern oder der Angabe von Start und Ende verwendet. - Es muss daher entweder eine Dauer oder ein Zeitraum in Form von Start und Ende angegeben sein + Es muss daher entweder eine Dauer oder ein Zeitspanne in Form von Start und Ende angegeben sein """ - bindefrist: Optional[Zeitraum] = None + bindefrist: Optional[Zeitspanne] = None """ Diese Komponente wird zur Abbildung von Zeiträumen in Form von Dauern oder der Angabe von Start und Ende verwendet. - Es muss daher entweder eine Dauer oder ein Zeitraum in Form von Start und Ende angegeben sein + Es muss daher entweder eine Dauer oder ein Zeitspanne in Form von Start und Ende angegeben sein """ #: Die einzelnen Lose, aus denen sich die Ausschreibung zusammensetzt lose: Optional[list[Ausschreibungslos]] = None diff --git a/src/bo4e/bo/fremdkosten.py b/src/bo4e/bo/fremdkosten.py index 59d7db86c..dea4a3ee8 100644 --- a/src/bo4e/bo/fremdkosten.py +++ b/src/bo4e/bo/fremdkosten.py @@ -8,7 +8,7 @@ from ..com.betrag import Betrag from ..com.fremdkostenblock import Fremdkostenblock -from ..com.zeitraum import Zeitraum +from ..com.zeitspanne import Zeitspanne from ..enum.typ import Typ from ..utils import postprocess_docstring from .geschaeftsobjekt import Geschaeftsobjekt @@ -33,8 +33,8 @@ class Fremdkosten(Geschaeftsobjekt): """ typ: Annotated[Optional[Typ], Field(alias="_typ")] = Typ.FREMDKOSTEN - #: Für diesen Zeitraum wurden die Kosten ermittelt - gueltigkeit: Optional[Zeitraum] = None + #: Für diesen Zeitspanne wurden die Kosten ermittelt + gueltigkeit: Optional[Zeitspanne] = None #: Die Gesamtsumme über alle Kostenblöcke und -positionen summe_kosten: Optional[Betrag] = None #: In Kostenblöcken werden Kostenpositionen zusammengefasst. Beispiele: Netzkosten, Umlagen, Steuern etc diff --git a/src/bo4e/bo/kosten.py b/src/bo4e/bo/kosten.py index 04e0ae981..239082374 100644 --- a/src/bo4e/bo/kosten.py +++ b/src/bo4e/bo/kosten.py @@ -8,7 +8,7 @@ from ..com.betrag import Betrag from ..com.kostenblock import Kostenblock -from ..com.zeitraum import Zeitraum +from ..com.zeitspanne import Zeitspanne from ..enum.kostenklasse import Kostenklasse from ..enum.typ import Typ from ..utils import postprocess_docstring @@ -36,8 +36,8 @@ class Kosten(Geschaeftsobjekt): typ: Annotated[Optional[Typ], Field(alias="_typ")] = Typ.KOSTEN #: Klasse der Kosten, beispielsweise Fremdkosten kostenklasse: Optional[Kostenklasse] = None - #: Für diesen Zeitraum wurden die Kosten ermittelt - gueltigkeit: Optional[Zeitraum] = None + #: Für diesen Zeitspanne wurden die Kosten ermittelt + gueltigkeit: Optional[Zeitspanne] = None #: In Kostenblöcken werden Kostenpositionen zusammengefasst. Beispiele: Netzkosten, Umlagen, Steuern etc kostenbloecke: Optional[list[Kostenblock]] = None diff --git a/src/bo4e/bo/preisblatt.py b/src/bo4e/bo/preisblatt.py index b6d008ef4..7a3c33949 100644 --- a/src/bo4e/bo/preisblatt.py +++ b/src/bo4e/bo/preisblatt.py @@ -10,7 +10,7 @@ from pydantic import Field from ..com.preisposition import Preisposition -from ..com.zeitraum import Zeitraum +from ..com.zeitspanne import Zeitspanne from ..enum.preisstatus import Preisstatus from ..enum.sparte import Sparte from ..enum.typ import Typ @@ -45,8 +45,8 @@ class Preisblatt(Geschaeftsobjekt): sparte: Optional[Sparte] = None #: Merkmal, das anzeigt, ob es sich um vorläufige oder endgültige Preise handelt preisstatus: Optional[Preisstatus] = None - #: Der Zeitraum für den der Preis festgelegt ist - gueltigkeit: Optional[Zeitraum] = None + #: Der Zeitspanne für den der Preis festgelegt ist + gueltigkeit: Optional[Zeitspanne] = None #: Die einzelnen Positionen, die mit dem Preisblatt abgerechnet werden können. Z.B. Arbeitspreis, Grundpreis etc preispositionen: Optional[list[Preisposition]] = None #: Der Netzbetreiber, der die Preise veröffentlicht hat diff --git a/src/bo4e/bo/rechnung.py b/src/bo4e/bo/rechnung.py index 055afcbaf..3c40364f6 100644 --- a/src/bo4e/bo/rechnung.py +++ b/src/bo4e/bo/rechnung.py @@ -9,9 +9,9 @@ from pydantic import Field from ..com.betrag import Betrag +from ..com.menge import Menge from ..com.rechnungsposition import Rechnungsposition from ..com.steuerbetrag import Steuerbetrag -from ..com.zeitraum import Zeitraum from ..enum.netznutzungrechnungsart import NetznutzungRechnungsart from ..enum.netznutzungrechnungstyp import NetznutzungRechnungstyp from ..enum.rechnungsstatus import Rechnungsstatus @@ -56,7 +56,7 @@ class Rechnung(Geschaeftsobjekt): #: Ein kontextbezogender Rechnungstyp, z.B. Netznutzungsrechnung rechnungstyp: Optional[Rechnungstyp] = None #: Der Zeitraum der zugrunde liegenden Lieferung zur Rechnung - rechnungsperiode: Optional[Zeitraum] = None + rechnungsperiode: Optional[Menge] = None #: Der Aussteller der Rechnung, die Rollencodenummer kennt man über den im Geschäftspartner verlinkten Marktteilnehmer rechnungsersteller: Optional[Geschaeftspartner] = None #: Der Aussteller der Rechnung, die Rollencodenummer kennt man über den im Geschäftspartner verlinkten Marktteilnehmer diff --git a/src/bo4e/bo/tarifinfo.py b/src/bo4e/bo/tarifinfo.py index ae91b3235..ba33fd2ee 100644 --- a/src/bo4e/bo/tarifinfo.py +++ b/src/bo4e/bo/tarifinfo.py @@ -12,7 +12,7 @@ from ..com.energiemix import Energiemix from ..com.vertragskonditionen import Vertragskonditionen -from ..com.zeitraum import Zeitraum +from ..com.zeitspanne import Zeitspanne from ..enum.kundentyp import Kundentyp from ..enum.registeranzahl import Registeranzahl from ..enum.sparte import Sparte @@ -62,8 +62,8 @@ class Tarifinfo(Geschaeftsobjekt): #: Freitext bemerkung: Optional[str] = None - #: Angabe, in welchem Zeitraum der Tarif gültig ist - zeitliche_gueltigkeit: Optional[Zeitraum] = None + #: Angabe, in welchem Zeitspanne der Tarif gültig ist + zeitliche_gueltigkeit: Optional[Zeitspanne] = None #: Der Energiemix, der für diesen Tarif gilt energiemix: Optional[Energiemix] = None #: Mindestlaufzeiten und Kündigungsfristen zusammengefasst diff --git a/src/bo4e/com/angebotsteil.py b/src/bo4e/com/angebotsteil.py index 360ffd909..30a1b2f57 100644 --- a/src/bo4e/com/angebotsteil.py +++ b/src/bo4e/com/angebotsteil.py @@ -11,7 +11,7 @@ from .betrag import Betrag from .com import COM from .menge import Menge -from .zeitraum import Zeitraum +from .zeitspanne import Zeitspanne # pylint: disable=too-few-public-methods # pylint: disable=no-name-in-module @@ -49,5 +49,5 @@ class Angebotsteil(COM): gesamtmengeangebotsteil: Optional[Menge] = None #: Summe der Jahresenergiekosten aller in diesem Angebotsteil enthaltenen Lieferstellen gesamtkostenangebotsteil: Optional[Betrag] = None - #: Hier kann der Belieferungszeitraum angegeben werden, für den dieser Angebotsteil gilt - lieferzeitraum: Optional[Zeitraum] = None + #: Hier kann der BelieferungsZeitspanne angegeben werden, für den dieser Angebotsteil gilt + lieferzeitraum: Optional[Zeitspanne] = None diff --git a/src/bo4e/com/aufabschlag.py b/src/bo4e/com/aufabschlag.py index 4f0e31789..353508ce9 100644 --- a/src/bo4e/com/aufabschlag.py +++ b/src/bo4e/com/aufabschlag.py @@ -11,7 +11,7 @@ from ..utils import postprocess_docstring from .com import COM from .preisstaffel import Preisstaffel -from .zeitraum import Zeitraum +from .zeitspanne import Zeitspanne # pylint: disable=too-few-public-methods, too-many-instance-attributes @@ -48,4 +48,4 @@ class AufAbschlag(COM): #: Internetseite, auf der die Informationen zum Auf-/Abschlag veröffentlicht sind. website: Optional[str] = None #: Internetseite, auf der die Informationen zum Auf-/Abschlag veröffentlicht sind. - gueltigkeitszeitraum: Optional[Zeitraum] = None + gueltigkeitsZeitspanne: Optional[Zeitspanne] = None diff --git a/src/bo4e/com/aufabschlagregional.py b/src/bo4e/com/aufabschlagregional.py index 6ac0d8952..9061c18ae 100644 --- a/src/bo4e/com/aufabschlagregional.py +++ b/src/bo4e/com/aufabschlagregional.py @@ -16,7 +16,7 @@ from .preisgarantie import Preisgarantie from .tarifeinschraenkung import Tarifeinschraenkung from .vertragskonditionen import Vertragskonditionen -from .zeitraum import Zeitraum +from .zeitspanne import Zeitspanne # pylint: disable=too-few-public-methods, too-many-instance-attributes # pylint: disable=no-name-in-module @@ -61,8 +61,8 @@ class AufAbschlagRegional(COM): voraussetzungen: Optional[list[str]] = None #: Durch die Anwendung des Auf/Abschlags kann eine Änderung des Tarifnamens auftreten. tarifnamensaenderungen: Optional[str] = None - #: Zeitraum, in dem der Abschlag zur Anwendung kommen kann - gueltigkeitszeitraum: Optional[Zeitraum] = None + #: Zeitspanne, in dem der Abschlag zur Anwendung kommen kann + gueltigkeitsZeitspanne: Optional[Zeitspanne] = None energiemixaenderung: Optional[Energiemix] = None """ Der Energiemix kann sich durch einen AufAbschlag ändern (z.B. zwei Cent Aufschlag für Ökostrom: Sollte dies der Fall sein, wird hier die neue Zusammensetzung des Energiemix angegeben.""" diff --git a/src/bo4e/com/ausschreibungsdetail.py b/src/bo4e/com/ausschreibungsdetail.py index 975beb852..b45b006da 100644 --- a/src/bo4e/com/ausschreibungsdetail.py +++ b/src/bo4e/com/ausschreibungsdetail.py @@ -9,7 +9,7 @@ from .adresse import Adresse from .com import COM from .menge import Menge -from .zeitraum import Zeitraum +from .zeitspanne import Zeitspanne # pylint: disable=too-few-public-methods, too-many-instance-attributes @@ -37,8 +37,8 @@ class Ausschreibungsdetail(COM): netzebene_messung: Optional[str] = None #: Die Adresse an der die Marktlokation sich befindet marktlokationsadresse: Optional[Adresse] = None - #: Angefragter Zeitraum für die ausgeschriebene Belieferung - lieferzeitraum: Optional[Zeitraum] = None + #: Angefragter Zeitspanne für die ausgeschriebene Belieferung + lieferzeitraum: Optional[Zeitspanne] = None #: Bezeichnung des zuständigen Netzbetreibers, z.B. 'Stromnetz Hamburg GmbH' netzbetreiber: Optional[str] = None @@ -59,7 +59,7 @@ class Ausschreibungsdetail(COM): #: Prognosewert für die Jahresarbeit der ausgeschriebenen Lokation prognose_jahresarbeit: Optional[Menge] = None - #: Ein Prognosewert für die Arbeit innerhalb des angefragten Lieferzeitraums der ausgeschriebenen Lokation + #: Ein Prognosewert für die Arbeit innerhalb des angefragten lieferzeitraums der ausgeschriebenen Lokation prognose_arbeit_lieferzeitraum: Optional[Menge] = None #: Prognosewert für die abgenommene maximale Leistung der ausgeschriebenen Lokation prognose_leistung: Optional[Menge] = None diff --git a/src/bo4e/com/ausschreibungslos.py b/src/bo4e/com/ausschreibungslos.py index 08c6f6afb..c32ff5a15 100644 --- a/src/bo4e/com/ausschreibungslos.py +++ b/src/bo4e/com/ausschreibungslos.py @@ -14,7 +14,7 @@ from .ausschreibungsdetail import Ausschreibungsdetail from .com import COM from .menge import Menge -from .zeitraum import Zeitraum +from .zeitspanne import Zeitspanne @postprocess_docstring @@ -52,8 +52,8 @@ class Ausschreibungslos(COM): #: Die ausgeschriebenen Lieferstellen lieferstellen: Optional[list[Ausschreibungsdetail]] = None - #: Zeitraum, für den die in diesem Los enthaltenen Lieferstellen beliefert werden sollen - lieferzeitraum: Optional[Zeitraum] = None + #: Zeitspanne, für den die in diesem Los enthaltenen Lieferstellen beliefert werden sollen + lieferzeitraum: Optional[Zeitspanne] = None #: Bemerkung des Kunden zum Los bemerkung: Optional[str] = None @@ -64,13 +64,13 @@ class Ausschreibungslos(COM): #: Maximalmenge Toleranzband (kWh, %) wunsch_maximalmenge: Optional[Menge] = None - wiederholungsintervall: Optional[Zeitraum] = None + wiederholungsintervall: Optional[Zeitspanne] = None """ In welchem Intervall die Angebotsabgabe wiederholt werden darf. Angabe nur gesetzt für die 2. Phase bei öffentlich-rechtlichen Ausschreibungen """ #: Kundenwunsch zur Kündigungsfrist in der Ausschreibung - wunsch_kuendingungsfrist: Optional[Zeitraum] = None + wunsch_kuendingungsfrist: Optional[Zeitspanne] = None #: Kundenwunsch zum Zahlungsziel in der Ausschreibung - wunsch_zahlungsziel: Optional[Zeitraum] = None + wunsch_zahlungsziel: Optional[Zeitspanne] = None diff --git a/src/bo4e/com/preisgarantie.py b/src/bo4e/com/preisgarantie.py index a3fb61a09..b843d0c77 100644 --- a/src/bo4e/com/preisgarantie.py +++ b/src/bo4e/com/preisgarantie.py @@ -8,7 +8,7 @@ from ..enum.preisgarantietyp import Preisgarantietyp from ..utils import postprocess_docstring from .com import COM -from .zeitraum import Zeitraum +from .zeitspanne import Zeitspanne # pylint: disable=too-few-public-methods @@ -29,8 +29,8 @@ class Preisgarantie(COM): #: Festlegung, auf welche Preisbestandteile die Garantie gewährt wird. preisgarantietyp: Optional[Preisgarantietyp] = None - zeitliche_gueltigkeit: Optional[Zeitraum] = None - """ Zeitraum, bis zu dem die Preisgarantie gilt, z.B. bis zu einem absolutem / fixem Datum + zeitliche_gueltigkeit: Optional[Zeitspanne] = None + """ Zeitspanne, bis zu dem die Preisgarantie gilt, z.B. bis zu einem absolutem / fixem Datum oder als Laufzeit in Monaten. """ # optionale attributes diff --git a/src/bo4e/com/regionaleraufabschlag.py b/src/bo4e/com/regionaleraufabschlag.py index 7b05f939f..7efb02472 100644 --- a/src/bo4e/com/regionaleraufabschlag.py +++ b/src/bo4e/com/regionaleraufabschlag.py @@ -16,7 +16,7 @@ from .regionalepreisstaffel import RegionalePreisstaffel from .tarifeinschraenkung import Tarifeinschraenkung from .vertragskonditionen import Vertragskonditionen -from .zeitraum import Zeitraum +from .zeitspanne import Zeitspanne # pylint: disable=too-few-public-methods, too-many-instance-attributes # pylint: disable=no-name-in-module @@ -69,8 +69,8 @@ class RegionalerAufAbschlag(COM): #: Durch die Anwendung des Auf/Abschlags kann eine Änderung des Tarifnamens auftreten tarifnamensaenderungen: Optional[str] = None - #: Zeitraum, in dem der Abschlag zur Anwendung kommen kann - gueltigkeitszeitraum: Optional[Zeitraum] = None + #: Zeitspanne, in dem der Abschlag zur Anwendung kommen kann + gueltigkeitsZeitspanne: Optional[Zeitspanne] = None energiemixaenderung: Optional[Energiemix] = None """ diff --git a/src/bo4e/com/verbrauch.py b/src/bo4e/com/verbrauch.py index 9baa55dc5..0d3d6a8fd 100644 --- a/src/bo4e/com/verbrauch.py +++ b/src/bo4e/com/verbrauch.py @@ -40,9 +40,9 @@ class Verbrauch(COM): #: Gibt die Einheit zum jeweiligen Wert an einheit: Optional[Mengeneinheit] = None - #: Inklusiver Beginn des Zeitraumes, für den der Verbrauch angegeben wird + #: Inklusiver Beginn des Zeitspannees, für den der Verbrauch angegeben wird startdatum: Optional[pydantic.AwareDatetime] = None - #: Exklusives Ende des Zeitraumes, für den der Verbrauch angegeben wird + #: Exklusives Ende des Zeitspannees, für den der Verbrauch angegeben wird enddatum: Optional[pydantic.AwareDatetime] = None #: Messwertstatus includes the plausibility of the value messwertstatus: Optional[Messwertstatus] = None diff --git a/src/bo4e/com/vertragskonditionen.py b/src/bo4e/com/vertragskonditionen.py index d724ee6b8..8058c64c3 100644 --- a/src/bo4e/com/vertragskonditionen.py +++ b/src/bo4e/com/vertragskonditionen.py @@ -8,7 +8,8 @@ from ..utils import postprocess_docstring from .com import COM -from .zeitraum import Zeitraum +from .menge import Menge +from .zeitspanne import Zeitspanne # pylint: disable=too-few-public-methods @@ -31,11 +32,11 @@ class Vertragskonditionen(COM): beschreibung: Optional[str] = None #: Anzahl der vereinbarten Abschläge pro Jahr, z.B. 12 anzahl_abschlaege: Optional[Decimal] = None - #: Über diesen Zeitraum läuft der Vertrag - vertragslaufzeit: Optional[Zeitraum] = None + #: Über diesen Zeitspanne läuft der Vertrag + vertragslaufzeit: Optional[Zeitspanne] = None #: Innerhalb dieser Frist kann der Vertrag gekündigt werden - kuendigungsfrist: Optional[Zeitraum] = None + kuendigungsfrist: Optional[Menge] = None #: Falls der Vertrag nicht gekündigt wird, verlängert er sich automatisch um die hier angegebene Zeit - vertragsverlaengerung: Optional[Zeitraum] = None + vertragsverlaengerung: Optional[Menge] = None #: In diesen Zyklen werden Abschläge gestellt. Alternativ kann auch die Anzahl in den Konditionen angeben werden. - abschlagszyklus: Optional[Zeitraum] = None + abschlagszyklus: Optional[Menge] = None diff --git a/src/bo4e/com/zaehlwerk.py b/src/bo4e/com/zaehlwerk.py index 20fa51e1b..17e24b357 100644 --- a/src/bo4e/com/zaehlwerk.py +++ b/src/bo4e/com/zaehlwerk.py @@ -46,7 +46,7 @@ class Zaehlwerk(COM): # Nur Zählwerkstände mit dieser OBIS-Kennzahl werden an diesem Zählwerk registriert. wandlerfaktor: Optional[ Decimal - ] = None # Mit diesem Faktor wird eine Zählerstandsdifferenz multipliziert, um zum eigentlichen Verbrauch im Zeitraum + ] = None # Mit diesem Faktor wird eine Zählerstandsdifferenz multipliziert, um zum eigentlichen Verbrauch im Zeitspanne # zu kommen. einheit: Optional[Mengeneinheit] = None # Die Einheit der gemessenen Größe, z.B. kWh ist_schwachlastfaehig: Optional[bool] = None #: Schwachlastfaehigkeit diff --git a/src/bo4e/com/zeitraum.py b/src/bo4e/com/zeitraum.py deleted file mode 100644 index 3c0c27a89..000000000 --- a/src/bo4e/com/zeitraum.py +++ /dev/null @@ -1,41 +0,0 @@ -""" -Contains Zeitraum class -and corresponding marshmallow schema for de-/serialization -""" - -from decimal import Decimal -from typing import Optional - -import pydantic - -from ..enum.mengeneinheit import Mengeneinheit -from ..utils import postprocess_docstring -from .com import COM - -# pylint: disable=too-few-public-methods - - -@postprocess_docstring -class Zeitraum(COM): - """ - Diese Komponente wird zur Abbildung von Zeiträumen in Form von Dauern oder der Angabe von Start und Ende verwendet. - Es muss daher eine der drei Möglichkeiten angegeben sein: - - Einheit und Dauer oder - - Zeitraum: Startdatum bis Enddatum oder - - Zeitraum: Startzeitpunkt (Datum und Uhrzeit) bis Endzeitpunkt (Datum und Uhrzeit) - - .. raw:: html - - - - .. HINT:: - `Zeitraum JSON Schema `_ - - """ - - einheit: Optional[Mengeneinheit] = None - dauer: Optional[Decimal] = None - startdatum: Optional[pydantic.AwareDatetime] = None - enddatum: Optional[pydantic.AwareDatetime] = None - startzeitpunkt: Optional[pydantic.AwareDatetime] = None - endzeitpunkt: Optional[pydantic.AwareDatetime] = None diff --git a/src/bo4e/com/zeitreihenwert.py b/src/bo4e/com/zeitreihenwert.py index 2d2e2f83b..7f8637ecd 100644 --- a/src/bo4e/com/zeitreihenwert.py +++ b/src/bo4e/com/zeitreihenwert.py @@ -18,7 +18,7 @@ @postprocess_docstring class Zeitreihenwert(COM): """ - Abbildung eines Zeitreihenwertes bestehend aus Zeitraum, Wert und Statusinformationen. + Abbildung eines Zeitreihenwertes bestehend aus Zeitspanne, Wert und Statusinformationen. .. raw:: html diff --git a/src/bo4e/com/zeitspanne.py b/src/bo4e/com/zeitspanne.py index d794a2499..1c667bf37 100644 --- a/src/bo4e/com/zeitspanne.py +++ b/src/bo4e/com/zeitspanne.py @@ -16,7 +16,7 @@ class Zeitspanne(COM): """ Eine Zeitspanne ist definiert aus Start und/oder Ende. Der Unterschied zur Menge (die auch zur Abbildung von Zeitmengen genutzt wird) ist, dass konkrete Start- und Endzeitpunkte angegeben werden. - Die Zeitspanne ist aus dem COM Zeitraum hervorgegangen, das in Zeitspanne und Menge aufgeteilt wurde. + Die Zeitspanne ist aus dem COM Zeitspanne hervorgegangen, das in Zeitspanne und Menge aufgeteilt wurde. .. raw:: html diff --git a/tests/test_angebotsteil.py b/tests/test_angebotsteil.py index 841de0abc..52865b69c 100644 --- a/tests/test_angebotsteil.py +++ b/tests/test_angebotsteil.py @@ -1,6 +1,6 @@ import pytest -from bo4e import Angebotsposition, Angebotsteil, Betrag, Marktlokation, Menge, Zeitraum +from bo4e import Angebotsposition, Angebotsteil, Betrag, Marktlokation, Menge, Zeitspanne from tests.serialization_helper import assert_serialization_roundtrip @@ -15,7 +15,7 @@ class TestAngebotsteil: lieferstellenangebotsteil=[Marktlokation()], gesamtmengeangebotsteil=Menge(), gesamtkostenangebotsteil=Betrag(), - lieferzeitraum=Zeitraum(), + lieferzeitraum=Zeitspanne(), ), id="all attributes at first level", ), diff --git a/tests/test_aufabschlag.py b/tests/test_aufabschlag.py index 1d7f3ca27..fd4a9e766 100644 --- a/tests/test_aufabschlag.py +++ b/tests/test_aufabschlag.py @@ -1,6 +1,6 @@ import pytest -from bo4e import AufAbschlag, AufAbschlagstyp, AufAbschlagsziel, Preisstaffel, Waehrungseinheit, Zeitraum +from bo4e import AufAbschlag, AufAbschlagstyp, AufAbschlagsziel, Preisstaffel, Waehrungseinheit, Zeitspanne from tests.serialization_helper import assert_serialization_roundtrip @@ -16,7 +16,7 @@ class TestAufAbschlag: auf_abschlagsziel=AufAbschlagsziel.GESAMTPREIS, einheit=Waehrungseinheit.EUR, website="foo.bar", - gueltigkeitszeitraum=Zeitraum(), + gueltigkeitsZeitspanne=Zeitspanne(), staffeln=[Preisstaffel()], ), id="all attributes at first level", diff --git a/tests/test_aufabschlagregional.py b/tests/test_aufabschlagregional.py index fec3a5c73..b86bce290 100644 --- a/tests/test_aufabschlagregional.py +++ b/tests/test_aufabschlagregional.py @@ -10,7 +10,7 @@ Tarifeinschraenkung, Vertragskonditionen, Waehrungseinheit, - Zeitraum, + Zeitspanne, ) from tests.serialization_helper import assert_serialization_roundtrip @@ -31,7 +31,7 @@ class TestAufAbschlagRegional: zusatzprodukte=["Asterix", "Obelix"], voraussetzungen=["Petterson", "Findus"], tarifnamensaenderungen="foobar", - gueltigkeitszeitraum=Zeitraum(), + gueltigkeitsZeitspanne=Zeitspanne(), energiemixaenderung=Energiemix(), vertagskonditionsaenderung=Vertragskonditionen(), garantieaenderung=Preisgarantie(), diff --git a/tests/test_ausschreibung.py b/tests/test_ausschreibung.py index 799aaa7ac..3ba658c39 100644 --- a/tests/test_ausschreibung.py +++ b/tests/test_ausschreibung.py @@ -9,7 +9,7 @@ Ausschreibungsstatus, Ausschreibungstyp, Geschaeftspartner, - Zeitraum, + Zeitspanne, ) from tests.serialization_helper import assert_serialization_roundtrip @@ -27,8 +27,8 @@ class TestAusschreibung: ausschreibungportal=Ausschreibungsportal.BMWI, webseite="https://meineausschreibungswebsite.inv/", veroeffentlichungszeitpunkt=datetime(2022, 1, 1, 0, 0, 0, tzinfo=timezone.utc), - abgabefrist=Zeitraum(), - bindefrist=Zeitraum(), + abgabefrist=Zeitspanne(), + bindefrist=Zeitspanne(), ausschreibender=Geschaeftspartner(), lose=[Ausschreibungslos()], ), diff --git a/tests/test_ausschreibungsdetail.py b/tests/test_ausschreibungsdetail.py index 8523783e4..9402f8304 100644 --- a/tests/test_ausschreibungsdetail.py +++ b/tests/test_ausschreibungsdetail.py @@ -1,6 +1,6 @@ import pytest -from bo4e import Adresse, Ausschreibungsdetail, Menge, Netzebene, Zaehlertyp, Zeitraum +from bo4e import Adresse, Ausschreibungsdetail, Menge, Netzebene, Zaehlertyp, Zeitspanne from tests.serialization_helper import assert_serialization_roundtrip @@ -14,7 +14,7 @@ class TestAusschreibungsdetail: netzebene_lieferung=Netzebene.MSP, netzebene_messung=Netzebene.NSP, marktlokationsadresse=Adresse(), - lieferzeitraum=Zeitraum(), + lieferzeitraum=Zeitspanne(), netzbetreiber="Stromnetz Hamburg GmbH", kunde="Dei Mudder ihr Kunde", zaehlernummer="1YSK4234092304", diff --git a/tests/test_ausschreibungslos.py b/tests/test_ausschreibungslos.py index 6e7d67f8e..2282c79d6 100644 --- a/tests/test_ausschreibungslos.py +++ b/tests/test_ausschreibungslos.py @@ -8,7 +8,7 @@ Rechnungslegung, Sparte, Vertragsform, - Zeitraum, + Zeitspanne, ) from tests.serialization_helper import assert_serialization_roundtrip @@ -32,10 +32,10 @@ class TestAusschreibungslos: gesamt_menge=Menge(), wunsch_mindestmenge=Menge(), wunsch_maximalmenge=Menge(), - lieferzeitraum=Zeitraum(), - wunsch_kuendingungsfrist=Zeitraum(), - wunsch_zahlungsziel=Zeitraum(), - wiederholungsintervall=Zeitraum(), + lieferzeitraum=Zeitspanne(), + wunsch_kuendingungsfrist=Zeitspanne(), + wunsch_zahlungsziel=Zeitspanne(), + wiederholungsintervall=Zeitspanne(), ), id="maximal attributes", ), diff --git a/tests/test_fremdkosten.py b/tests/test_fremdkosten.py index f893be58a..74170304d 100644 --- a/tests/test_fremdkosten.py +++ b/tests/test_fremdkosten.py @@ -1,6 +1,6 @@ import pytest -from bo4e import Betrag, Fremdkosten, Fremdkostenblock, Zeitraum +from bo4e import Betrag, Fremdkosten, Fremdkostenblock, Zeitspanne from tests.serialization_helper import assert_serialization_roundtrip @@ -10,7 +10,7 @@ class TestFremdkosten: [ pytest.param( Fremdkosten( - gueltigkeit=Zeitraum(), + gueltigkeit=Zeitspanne(), summe_kosten=Betrag(), kostenbloecke=[Fremdkostenblock()], ), diff --git a/tests/test_kosten.py b/tests/test_kosten.py index a6591de40..0cc910a56 100644 --- a/tests/test_kosten.py +++ b/tests/test_kosten.py @@ -1,6 +1,6 @@ import pytest -from bo4e import Betrag, Kosten, Kostenblock, Kostenklasse, Zeitraum +from bo4e import Betrag, Kosten, Kostenblock, Kostenklasse, Zeitspanne from tests.serialization_helper import assert_serialization_roundtrip @@ -11,7 +11,7 @@ class TestKosten: pytest.param( Kosten( kostenklasse=Kostenklasse.FREMDKOSTEN, - gueltigkeit=Zeitraum(), + gueltigkeit=Zeitspanne(), kostenbloecke=[Kostenblock()], summe_kosten=[Betrag()], ), diff --git a/tests/test_preisblatt.py b/tests/test_preisblatt.py index 7537e7966..b4f6b88d3 100644 --- a/tests/test_preisblatt.py +++ b/tests/test_preisblatt.py @@ -1,6 +1,6 @@ import pytest -from bo4e import Marktteilnehmer, Preisblatt, Preisposition, Preisstatus, Sparte, Zeitraum +from bo4e import Marktteilnehmer, Preisblatt, Preisposition, Preisstatus, Sparte, Zeitspanne from tests.serialization_helper import assert_serialization_roundtrip @@ -14,7 +14,7 @@ class TestPreisblatt: sparte=Sparte.STROM, preisstatus=Preisstatus.ENDGUELTIG, preispositionen=[Preisposition()], - gueltigkeit=Zeitraum(), + gueltigkeit=Zeitspanne(), herausgeber=Marktteilnehmer(), ) ), diff --git a/tests/test_preisblatt_dienstleistung.py b/tests/test_preisblatt_dienstleistung.py index be5e1b20b..d3b8c260d 100644 --- a/tests/test_preisblatt_dienstleistung.py +++ b/tests/test_preisblatt_dienstleistung.py @@ -9,7 +9,7 @@ Preisposition, Preisstatus, Sparte, - Zeitraum, + Zeitspanne, ) from tests.serialization_helper import assert_serialization_roundtrip @@ -24,7 +24,7 @@ class TestPreisblattDienstleistung: sparte=Sparte.STROM, preisstatus=Preisstatus.ENDGUELTIG, preispositionen=[Preisposition()], - gueltigkeit=Zeitraum(), + gueltigkeit=Zeitspanne(), herausgeber=Marktteilnehmer(), bilanzierungsmethode=Bilanzierungsmethode.TLP_GEMEINSAM, basisdienstleistung=Dienstleistungstyp.ABLESUNG_MONATLICH, diff --git a/tests/test_preisblatt_hardware.py b/tests/test_preisblatt_hardware.py index 6d35d043c..43e23d89f 100644 --- a/tests/test_preisblatt_hardware.py +++ b/tests/test_preisblatt_hardware.py @@ -10,7 +10,7 @@ Preisposition, Preisstatus, Sparte, - Zeitraum, + Zeitspanne, ) from tests.serialization_helper import assert_serialization_roundtrip @@ -25,7 +25,7 @@ class TestPreisblattHardware: sparte=Sparte.STROM, preisstatus=Preisstatus.ENDGUELTIG, preispositionen=[Preisposition()], - gueltigkeit=Zeitraum(), + gueltigkeit=Zeitspanne(), herausgeber=Marktteilnehmer(), bilanzierungsmethode=Bilanzierungsmethode.TLP_GEMEINSAM, messebene=Netzebene.MSP, diff --git a/tests/test_preisblatt_konzessionsabgabe.py b/tests/test_preisblatt_konzessionsabgabe.py index 3beaa3796..2bc433e60 100644 --- a/tests/test_preisblatt_konzessionsabgabe.py +++ b/tests/test_preisblatt_konzessionsabgabe.py @@ -7,7 +7,7 @@ Preisposition, Preisstatus, Sparte, - Zeitraum, + Zeitspanne, ) from tests.serialization_helper import assert_serialization_roundtrip @@ -22,7 +22,7 @@ class TestPreisblatt: sparte=Sparte.STROM, preisstatus=Preisstatus.ENDGUELTIG, preispositionen=[Preisposition()], - gueltigkeit=Zeitraum(), + gueltigkeit=Zeitspanne(), herausgeber=Marktteilnehmer(), kundengruppe_k_a=KundengruppeKA.G_SONDERKUNDE, ) diff --git a/tests/test_preisblatt_messung.py b/tests/test_preisblatt_messung.py index 219686df9..adb8d78a8 100644 --- a/tests/test_preisblatt_messung.py +++ b/tests/test_preisblatt_messung.py @@ -11,7 +11,7 @@ Preisstatus, Sparte, Zaehler, - Zeitraum, + Zeitspanne, ) from tests.serialization_helper import assert_serialization_roundtrip @@ -26,7 +26,7 @@ class TestPreisblattMessung: sparte=Sparte.STROM, preisstatus=Preisstatus.ENDGUELTIG, preispositionen=[Preisposition()], - gueltigkeit=Zeitraum(), + gueltigkeit=Zeitspanne(), herausgeber=Marktteilnehmer(), bilanzierungsmethode=Bilanzierungsmethode.TLP_GEMEINSAM, messebene=Netzebene.MSP, diff --git a/tests/test_preisblattnetznutzung.py b/tests/test_preisblattnetznutzung.py index d902a43aa..4e1a5e92c 100644 --- a/tests/test_preisblattnetznutzung.py +++ b/tests/test_preisblattnetznutzung.py @@ -9,7 +9,7 @@ Preisposition, Preisstatus, Sparte, - Zeitraum, + Zeitspanne, ) from tests.serialization_helper import assert_serialization_roundtrip @@ -24,7 +24,7 @@ class TestPreisblatt: sparte=Sparte.STROM, preisstatus=Preisstatus.ENDGUELTIG, preispositionen=[Preisposition()], - gueltigkeit=Zeitraum(), + gueltigkeit=Zeitspanne(), herausgeber=Marktteilnehmer(), bilanzierungsmethode=Bilanzierungsmethode.TLP_GEMEINSAM, netzebene=Netzebene.MSP, diff --git a/tests/test_preisgarantie.py b/tests/test_preisgarantie.py index 5e5ec9447..e583b91b5 100644 --- a/tests/test_preisgarantie.py +++ b/tests/test_preisgarantie.py @@ -2,7 +2,7 @@ import pytest -from bo4e import Preisgarantie, Preisgarantietyp, Zeitraum +from bo4e import Preisgarantie, Preisgarantietyp, Zeitspanne from tests.serialization_helper import assert_serialization_roundtrip @@ -13,9 +13,9 @@ class TestPreisgarantie: pytest.param( Preisgarantie( preisgarantietyp=Preisgarantietyp.NUR_ENERGIEPREIS, - zeitliche_gueltigkeit=Zeitraum( - startdatum=datetime(2020, 1, 1, tzinfo=timezone.utc), - enddatum=datetime(2020, 4, 1, tzinfo=timezone.utc), + zeitliche_gueltigkeit=Zeitspanne( + start=datetime(2020, 1, 1, tzinfo=timezone.utc), + ende=datetime(2020, 4, 1, tzinfo=timezone.utc), ), ), ), diff --git a/tests/test_rechnung.py b/tests/test_rechnung.py index 9ad9cd9e9..f4c71c36a 100644 --- a/tests/test_rechnung.py +++ b/tests/test_rechnung.py @@ -21,7 +21,7 @@ Steuerbetrag, Steuerkennzeichen, Waehrungscode, - Zeitraum, + Zeitspanne, ) from tests.serialization_helper import assert_serialization_roundtrip @@ -40,7 +40,7 @@ class TestRechnung: faelligkeitsdatum=datetime.today().replace(tzinfo=timezone.utc), rechnungstyp=Rechnungstyp.ENDKUNDENRECHNUNG, original_rechnungsnummer="RE-2022-01-21_1701", - rechnungsperiode=Zeitraum(einheit=Mengeneinheit.TAG, dauer=Decimal(21)), + rechnungsperiode=Menge(einheit=Mengeneinheit.TAG, wert=Decimal(21)), rechnungsersteller=Geschaeftspartner(), rechnungsempfaenger=Geschaeftspartner(), gesamtnetto=Betrag(wert=Decimal(12.5), waehrung=Waehrungscode.EUR), @@ -91,7 +91,7 @@ class TestRechnung: faelligkeitsdatum=datetime.today().replace(tzinfo=timezone.utc), rechnungstyp=Rechnungstyp.ENDKUNDENRECHNUNG, original_rechnungsnummer="RE-2022-01-21_1701", - rechnungsperiode=Zeitraum(einheit=Mengeneinheit.TAG, dauer=Decimal(21)), + rechnungsperiode=Menge(einheit=Mengeneinheit.TAG, wert=Decimal(21)), rechnungsersteller=Geschaeftspartner(), rechnungsempfaenger=Geschaeftspartner(), gesamtnetto=Betrag(wert=Decimal(12.5), waehrung=Waehrungscode.EUR), diff --git a/tests/test_regionalepreisgarantie.py b/tests/test_regionalepreisgarantie.py index 6ac127c54..16cc8bd57 100644 --- a/tests/test_regionalepreisgarantie.py +++ b/tests/test_regionalepreisgarantie.py @@ -9,7 +9,7 @@ RegionaleGueltigkeit, RegionalePreisgarantie, Tarifregionskriterium, - Zeitraum, + Zeitspanne, ) from tests.serialization_helper import assert_serialization_roundtrip @@ -21,9 +21,9 @@ class TestRegionalePreisgarantie: pytest.param( RegionalePreisgarantie( preisgarantietyp=Preisgarantietyp.NUR_ENERGIEPREIS, - zeitliche_gueltigkeit=Zeitraum( - startzeitpunkt=datetime(2011, 2, 5, 16, 43, tzinfo=timezone.utc), - endzeitpunkt=datetime(2021, 7, 30, tzinfo=timezone.utc), + zeitliche_gueltigkeit=Zeitspanne( + start=datetime(2011, 2, 5, 16, 43, tzinfo=timezone.utc), + ende=datetime(2021, 7, 30, tzinfo=timezone.utc), ), regionale_gueltigkeit=RegionaleGueltigkeit( gueltigkeitstyp=Gueltigkeitstyp.NUR_IN, diff --git a/tests/test_regionaleraufabschlag.py b/tests/test_regionaleraufabschlag.py index 6d828a35e..e85787c73 100644 --- a/tests/test_regionaleraufabschlag.py +++ b/tests/test_regionaleraufabschlag.py @@ -10,7 +10,7 @@ Tarifeinschraenkung, Vertragskonditionen, Waehrungseinheit, - Zeitraum, + Zeitspanne, ) from tests.serialization_helper import assert_serialization_roundtrip @@ -31,7 +31,7 @@ class TestRegionalerAufAbschlag: voraussetzungen=["lecker essen", "mit ökostrom gekocht"], tarifnamensaenderungen="Super-Duper Tarif", staffeln=[RegionalePreisstaffel()], - gueltigkeitszeitraum=Zeitraum(), + gueltigkeitsZeitspanne=Zeitspanne(), energiemixaenderung=Energiemix(), vertagskonditionsaenderung=Vertragskonditionen(), garantieaenderung=Preisgarantie(), diff --git a/tests/test_regionaltarif.py b/tests/test_regionaltarif.py index f5655969e..a6dc684c9 100644 --- a/tests/test_regionaltarif.py +++ b/tests/test_regionaltarif.py @@ -17,7 +17,7 @@ Tarifmerkmal, Tariftyp, Vertragskonditionen, - Zeitraum, + Zeitspanne, ) from tests.serialization_helper import assert_serialization_roundtrip @@ -46,7 +46,7 @@ class TestRegionaltarif: website="https://foo.inv", bemerkung="super billig aber auch super dreckig", vertragskonditionen=Vertragskonditionen(), - zeitliche_gueltigkeit=Zeitraum(), + zeitliche_gueltigkeit=Zeitspanne(), energiemix=Energiemix(), anbieter=Marktteilnehmer(), ), diff --git a/tests/test_tarif.py b/tests/test_tarif.py index 42d646427..fcb6a6867 100644 --- a/tests/test_tarif.py +++ b/tests/test_tarif.py @@ -17,7 +17,7 @@ TarifpreispositionProOrt, Tariftyp, Vertragskonditionen, - Zeitraum, + Zeitspanne, ) from tests.serialization_helper import assert_serialization_roundtrip @@ -45,7 +45,7 @@ class TestTarif: website="https://foo.inv", bemerkung="super billig aber auch super dreckig", vertragskonditionen=Vertragskonditionen(), - zeitliche_gueltigkeit=Zeitraum(), + zeitliche_gueltigkeit=Zeitspanne(), energiemix=Energiemix(), anbieter=Marktteilnehmer(), ), diff --git a/tests/test_tarifinfo.py b/tests/test_tarifinfo.py index db58bca0a..6ad97619e 100644 --- a/tests/test_tarifinfo.py +++ b/tests/test_tarifinfo.py @@ -12,7 +12,7 @@ Tarifmerkmal, Tariftyp, Vertragskonditionen, - Zeitraum, + Zeitspanne, ) from tests.serialization_helper import assert_serialization_roundtrip @@ -33,7 +33,7 @@ class TestTarifinfo: website="https://foo.inv", bemerkung="super billig aber auch super dreckig", vertragskonditionen=Vertragskonditionen(), - zeitliche_gueltigkeit=Zeitraum(), + zeitliche_gueltigkeit=Zeitspanne(), energiemix=Energiemix(), anbieter=Marktteilnehmer(), anwendung_von=datetime(2022, 1, 1, 0, 0, 0, tzinfo=timezone.utc), diff --git a/tests/test_tarifkosten.py b/tests/test_tarifkosten.py index f7e6007c8..37d211095 100644 --- a/tests/test_tarifkosten.py +++ b/tests/test_tarifkosten.py @@ -11,7 +11,7 @@ Tarifmerkmal, Tariftyp, Vertragskonditionen, - Zeitraum, + Zeitspanne, ) from tests.serialization_helper import assert_serialization_roundtrip @@ -32,7 +32,7 @@ class TestTarifkosten: website="https://foo.inv", bemerkung="super billig aber auch super dreckig", vertragskonditionen=Vertragskonditionen(), - zeitliche_gueltigkeit=Zeitraum(), + zeitliche_gueltigkeit=Zeitspanne(), energiemix=Energiemix(), anbieter=Marktteilnehmer(), kosten=Kosten(), diff --git a/tests/test_tarifpreisblatt.py b/tests/test_tarifpreisblatt.py index a03057ca6..b1e825906 100644 --- a/tests/test_tarifpreisblatt.py +++ b/tests/test_tarifpreisblatt.py @@ -17,7 +17,7 @@ Tarifpreisposition, Tariftyp, Vertragskonditionen, - Zeitraum, + Zeitspanne, ) from tests.serialization_helper import assert_serialization_roundtrip @@ -38,7 +38,7 @@ class TestTarifpreisblatt: website="https://foo.inv", bemerkung="super billig aber auch super dreckig", vertragskonditionen=Vertragskonditionen(), - zeitliche_gueltigkeit=Zeitraum(), + zeitliche_gueltigkeit=Zeitspanne(), energiemix=Energiemix(), anbieter=Marktteilnehmer(), # ^^ above is all copy pasted from Tarifinfo BO diff --git a/tests/test_vertragskonditionen.py b/tests/test_vertragskonditionen.py index f21f391cc..a6637b16e 100644 --- a/tests/test_vertragskonditionen.py +++ b/tests/test_vertragskonditionen.py @@ -3,7 +3,7 @@ import pytest -from bo4e import Mengeneinheit, Vertragskonditionen, Zeitraum +from bo4e import Menge, Mengeneinheit, Vertragskonditionen, Zeitspanne from tests.serialization_helper import assert_serialization_roundtrip @@ -15,13 +15,13 @@ class TestVertragskonditionen: Vertragskonditionen( beschreibung="Foobar", anzahl_abschlaege=Decimal(3), - vertragslaufzeit=Zeitraum( - startdatum=datetime(2012, 9, 21, tzinfo=timezone.utc), - enddatum=datetime(2013, 10, 11, tzinfo=timezone.utc), + vertragslaufzeit=Zeitspanne( + start=datetime(2012, 9, 21, tzinfo=timezone.utc), + ende=datetime(2013, 10, 11, tzinfo=timezone.utc), ), - kuendigungsfrist=Zeitraum(einheit=Mengeneinheit.WOCHE, dauer=Decimal(3)), - vertragsverlaengerung=Zeitraum(einheit=Mengeneinheit.TAG, dauer=Decimal(14)), - abschlagszyklus=Zeitraum(einheit=Mengeneinheit.TAG, dauer=Decimal(5)), + kuendigungsfrist=Menge(einheit=Mengeneinheit.WOCHE, wert=Decimal(3)), + vertragsverlaengerung=Menge(einheit=Mengeneinheit.TAG, wert=Decimal(14)), + abschlagszyklus=Menge(einheit=Mengeneinheit.TAG, wert=Decimal(5)), ), ), pytest.param( diff --git a/tests/test_zeitraum.py b/tests/test_zeitraum.py deleted file mode 100644 index 88f9c817e..000000000 --- a/tests/test_zeitraum.py +++ /dev/null @@ -1,25 +0,0 @@ -from decimal import Decimal - -import pytest - -from bo4e import Mengeneinheit, Zeitraum -from tests.serialization_helper import assert_serialization_roundtrip - - -class TestZeitraum: - @pytest.mark.parametrize( - "zeitraum", - [ - pytest.param( - Zeitraum( - einheit=Mengeneinheit.TAG, - dauer=Decimal(21), - ), - ), - ], - ) - def test_serialization_roundtrip(self, zeitraum: Zeitraum) -> None: - """ - Test de-/serialisation of Zeitraum. - """ - assert_serialization_roundtrip(zeitraum) From a3dac32158879f849e9cb7645e71f1c6bee0e136 Mon Sep 17 00:00:00 2001 From: larisa <129063905+hf-lkosareva@users.noreply.github.com> Date: Tue, 5 Mar 2024 16:46:32 +0100 Subject: [PATCH 02/11] Update src/bo4e/com/vertragskonditionen.py Co-authored-by: kevin <68426071+hf-krechan@users.noreply.github.com> --- src/bo4e/com/vertragskonditionen.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bo4e/com/vertragskonditionen.py b/src/bo4e/com/vertragskonditionen.py index 8058c64c3..eaf548efc 100644 --- a/src/bo4e/com/vertragskonditionen.py +++ b/src/bo4e/com/vertragskonditionen.py @@ -32,7 +32,7 @@ class Vertragskonditionen(COM): beschreibung: Optional[str] = None #: Anzahl der vereinbarten Abschläge pro Jahr, z.B. 12 anzahl_abschlaege: Optional[Decimal] = None - #: Über diesen Zeitspanne läuft der Vertrag + #: Über diese Zeitspanne läuft der Vertrag vertragslaufzeit: Optional[Zeitspanne] = None #: Innerhalb dieser Frist kann der Vertrag gekündigt werden kuendigungsfrist: Optional[Menge] = None From 8804f9c7e63dd32b34900a4f98533ae8c79d8768 Mon Sep 17 00:00:00 2001 From: larisa <129063905+hf-lkosareva@users.noreply.github.com> Date: Tue, 5 Mar 2024 16:46:50 +0100 Subject: [PATCH 03/11] Update CONTRIBUTING.md Co-authored-by: kevin <68426071+hf-krechan@users.noreply.github.com> --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 4dc0b760c..050640256 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -19,7 +19,7 @@ Feel free to open an issue if you run into any kind of problems. - pytest for unittests - Sphinx and Plantuml (and kroki web service) for documentation - Technical Documentation is in English; For example: "Don't use the builtin validator here because …" -- But data model docstrings are in German; For example: "Ist das Ende nicht gesetzt, so ist der Zeitspanne als offen zu verstehen." +- But data model docstrings are in German; For example: "Ist das Ende nicht gesetzt, so ist die Zeitspanne als offen zu verstehen." - Docstrings should not be trivial/useless - Bad: "Energiemenge ist eine Klasse zur Abbildung von Energiemengen." ❌ (no shit sherlock) - Good: "Eine Energiemenge ordnet einer :class:`Marktlokation` oder :class:`Messlokation`, die über die `lokations_id` referenziert werden, einen oder mehrere Energieverbräuche zu." ✔ From 1bc6475aed7153b0093eb1f583b201bcc1973610 Mon Sep 17 00:00:00 2001 From: larisa <129063905+hf-lkosareva@users.noreply.github.com> Date: Tue, 5 Mar 2024 16:47:00 +0100 Subject: [PATCH 04/11] Update src/bo4e/com/ausschreibungsdetail.py Co-authored-by: kevin <68426071+hf-krechan@users.noreply.github.com> --- src/bo4e/com/ausschreibungsdetail.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bo4e/com/ausschreibungsdetail.py b/src/bo4e/com/ausschreibungsdetail.py index b45b006da..3113b52b6 100644 --- a/src/bo4e/com/ausschreibungsdetail.py +++ b/src/bo4e/com/ausschreibungsdetail.py @@ -59,7 +59,7 @@ class Ausschreibungsdetail(COM): #: Prognosewert für die Jahresarbeit der ausgeschriebenen Lokation prognose_jahresarbeit: Optional[Menge] = None - #: Ein Prognosewert für die Arbeit innerhalb des angefragten lieferzeitraums der ausgeschriebenen Lokation + #: Ein Prognosewert für die Arbeit innerhalb des angefragten Lieferzeitraums der ausgeschriebenen Lokation prognose_arbeit_lieferzeitraum: Optional[Menge] = None #: Prognosewert für die abgenommene maximale Leistung der ausgeschriebenen Lokation prognose_leistung: Optional[Menge] = None From 636322de0054899e400507bb87fbf3065583d4c1 Mon Sep 17 00:00:00 2001 From: larisa <129063905+hf-lkosareva@users.noreply.github.com> Date: Tue, 5 Mar 2024 16:47:17 +0100 Subject: [PATCH 05/11] Update src/bo4e/com/regionaleraufabschlag.py Co-authored-by: kevin <68426071+hf-krechan@users.noreply.github.com> --- src/bo4e/com/regionaleraufabschlag.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bo4e/com/regionaleraufabschlag.py b/src/bo4e/com/regionaleraufabschlag.py index 7efb02472..3764c47ef 100644 --- a/src/bo4e/com/regionaleraufabschlag.py +++ b/src/bo4e/com/regionaleraufabschlag.py @@ -70,7 +70,7 @@ class RegionalerAufAbschlag(COM): tarifnamensaenderungen: Optional[str] = None #: Zeitspanne, in dem der Abschlag zur Anwendung kommen kann - gueltigkeitsZeitspanne: Optional[Zeitspanne] = None + gueltigkeitszeitspanne: Optional[Zeitspanne] = None energiemixaenderung: Optional[Energiemix] = None """ From 8e7ee43a56609e7ba3ee8eb1561fb71808fd8e9d Mon Sep 17 00:00:00 2001 From: larisa <129063905+hf-lkosareva@users.noreply.github.com> Date: Tue, 5 Mar 2024 16:47:26 +0100 Subject: [PATCH 06/11] Update src/bo4e/com/verbrauch.py Co-authored-by: kevin <68426071+hf-krechan@users.noreply.github.com> --- src/bo4e/com/verbrauch.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bo4e/com/verbrauch.py b/src/bo4e/com/verbrauch.py index 0d3d6a8fd..1240ab4a9 100644 --- a/src/bo4e/com/verbrauch.py +++ b/src/bo4e/com/verbrauch.py @@ -40,7 +40,7 @@ class Verbrauch(COM): #: Gibt die Einheit zum jeweiligen Wert an einheit: Optional[Mengeneinheit] = None - #: Inklusiver Beginn des Zeitspannees, für den der Verbrauch angegeben wird + #: Inklusiver Beginn der Zeitspanne, für den der Verbrauch angegeben wird startdatum: Optional[pydantic.AwareDatetime] = None #: Exklusives Ende des Zeitspannees, für den der Verbrauch angegeben wird enddatum: Optional[pydantic.AwareDatetime] = None From 187ac002d4c9c104c826826749914976208e3f9b Mon Sep 17 00:00:00 2001 From: larisa <129063905+hf-lkosareva@users.noreply.github.com> Date: Tue, 5 Mar 2024 16:47:40 +0100 Subject: [PATCH 07/11] Update src/bo4e/com/verbrauch.py Co-authored-by: kevin <68426071+hf-krechan@users.noreply.github.com> --- src/bo4e/com/verbrauch.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bo4e/com/verbrauch.py b/src/bo4e/com/verbrauch.py index 1240ab4a9..2cb75a556 100644 --- a/src/bo4e/com/verbrauch.py +++ b/src/bo4e/com/verbrauch.py @@ -42,7 +42,7 @@ class Verbrauch(COM): #: Inklusiver Beginn der Zeitspanne, für den der Verbrauch angegeben wird startdatum: Optional[pydantic.AwareDatetime] = None - #: Exklusives Ende des Zeitspannees, für den der Verbrauch angegeben wird + #: Exklusives Ende der Zeitspanne, für den der Verbrauch angegeben wird enddatum: Optional[pydantic.AwareDatetime] = None #: Messwertstatus includes the plausibility of the value messwertstatus: Optional[Messwertstatus] = None From ea5f26ffbd878c01038db874e3ab1af8be06b421 Mon Sep 17 00:00:00 2001 From: larisa <129063905+hf-lkosareva@users.noreply.github.com> Date: Tue, 5 Mar 2024 16:47:48 +0100 Subject: [PATCH 08/11] Update src/bo4e/com/zaehlwerk.py Co-authored-by: kevin <68426071+hf-krechan@users.noreply.github.com> --- src/bo4e/com/zaehlwerk.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bo4e/com/zaehlwerk.py b/src/bo4e/com/zaehlwerk.py index 17e24b357..b9f537b3c 100644 --- a/src/bo4e/com/zaehlwerk.py +++ b/src/bo4e/com/zaehlwerk.py @@ -46,7 +46,7 @@ class Zaehlwerk(COM): # Nur Zählwerkstände mit dieser OBIS-Kennzahl werden an diesem Zählwerk registriert. wandlerfaktor: Optional[ Decimal - ] = None # Mit diesem Faktor wird eine Zählerstandsdifferenz multipliziert, um zum eigentlichen Verbrauch im Zeitspanne + ] = None # Mit diesem Faktor wird eine Zählerstandsdifferenz multipliziert, um zum eigentlichen Verbrauch in der Zeitspanne # zu kommen. einheit: Optional[Mengeneinheit] = None # Die Einheit der gemessenen Größe, z.B. kWh ist_schwachlastfaehig: Optional[bool] = None #: Schwachlastfaehigkeit From 25c744d7a69f3873d3b15261b29c4eb8f7b46277 Mon Sep 17 00:00:00 2001 From: larisa Date: Tue, 5 Mar 2024 17:08:57 +0100 Subject: [PATCH 09/11] fix linting and test --- tests/test_regionaleraufabschlag.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_regionaleraufabschlag.py b/tests/test_regionaleraufabschlag.py index e85787c73..c59337515 100644 --- a/tests/test_regionaleraufabschlag.py +++ b/tests/test_regionaleraufabschlag.py @@ -31,7 +31,7 @@ class TestRegionalerAufAbschlag: voraussetzungen=["lecker essen", "mit ökostrom gekocht"], tarifnamensaenderungen="Super-Duper Tarif", staffeln=[RegionalePreisstaffel()], - gueltigkeitsZeitspanne=Zeitspanne(), + gueltigkeitszeitspanne=Zeitspanne(), energiemixaenderung=Energiemix(), vertagskonditionsaenderung=Vertragskonditionen(), garantieaenderung=Preisgarantie(), From e23481366e06690da0bd5e8d8d87d8fb1f51fe9a Mon Sep 17 00:00:00 2001 From: Franziska Date: Fri, 7 Jun 2024 23:08:39 +0200 Subject: [PATCH 10/11] WIP adapt to new main and change zeitspanne to date and time --- src/bo4e/bo/ausschreibung.py | 20 +++++++++----------- src/bo4e/bo/fremdkosten.py | 6 +++--- src/bo4e/bo/kosten.py | 6 +++--- src/bo4e/bo/preisblatt.py | 6 +++--- src/bo4e/bo/rechnung.py | 6 +++--- src/bo4e/bo/tarifinfo.py | 6 +++--- src/bo4e/com/angebotsteil.py | 4 ++-- src/bo4e/com/aufabschlag.py | 6 +++--- src/bo4e/com/aufabschlagregional.py | 4 ++-- src/bo4e/com/ausschreibungsdetail.py | 4 ++-- src/bo4e/com/ausschreibungslos.py | 11 ++++++----- src/bo4e/com/preisgarantie.py | 8 ++++---- src/bo4e/com/regionaleraufabschlag.py | 4 ++-- src/bo4e/com/vertragskonditionen.py | 11 ++++++----- src/bo4e/com/zeitspanne.py | 16 ++++++++++------ tests/test_aufabschlag.py | 2 +- tests/test_aufabschlagregional.py | 2 +- tests/test_preisgarantie.py | 12 ++---------- tests/test_rechnung.py | 5 ++--- tests/test_regionalepreisgarantie.py | 7 +------ tests/test_regionaleraufabschlag.py | 2 +- tests/test_vertragskonditionen.py | 14 +++++++------- tests/test_zeitreihenwert.py | 5 +---- tests/test_zeitspanne.py | 15 +++++++++++---- 24 files changed, 88 insertions(+), 94 deletions(-) diff --git a/src/bo4e/bo/ausschreibung.py b/src/bo4e/bo/ausschreibung.py index 6fa00c35a..7d4c5bf8c 100644 --- a/src/bo4e/bo/ausschreibung.py +++ b/src/bo4e/bo/ausschreibung.py @@ -15,7 +15,7 @@ if TYPE_CHECKING: from ..com.ausschreibungslos import Ausschreibungslos - from ..com.zeitraum import Zeitraum + from ..com.zeitspanne import Zeitspanne from ..enum.ausschreibungsportal import Ausschreibungsportal from ..enum.ausschreibungsstatus import Ausschreibungsstatus from ..enum.ausschreibungstyp import Ausschreibungstyp @@ -52,16 +52,14 @@ class Ausschreibung(Geschaeftsobjekt): Mit diesem Objekt können Geschäftspartner übertragen werden. Sowohl Unternehmen, als auch Privatpersonen können Geschäftspartner sein """ - abgabefrist: Optional["Zeitraum"] = None - """ - Diese Komponente wird zur Abbildung von Zeiträumen in Form von Dauern oder der Angabe von Start und Ende verwendet. - Es muss daher entweder eine Dauer oder ein Zeitspanne in Form von Start und Ende angegeben sein - """ - bindefrist: Optional["Zeitraum"] = None - """ - Diese Komponente wird zur Abbildung von Zeiträumen in Form von Dauern oder der Angabe von Start und Ende verwendet. - Es muss daher entweder eine Dauer oder ein Zeitspanne in Form von Start und Ende angegeben sein - """ + abgabefrist: Optional["Zeitspanne"] = None + # """ + # Todo: Sinnigen Docstring schreiben + # """ + bindefrist: Optional["Zeitspanne"] = None + # """ + # Todo: Sinnigen Docstring schreiben + # """ #: Die einzelnen Lose, aus denen sich die Ausschreibung zusammensetzt lose: Optional[list["Ausschreibungslos"]] = None diff --git a/src/bo4e/bo/fremdkosten.py b/src/bo4e/bo/fremdkosten.py index 1f4a6bbfb..c16d50a9e 100644 --- a/src/bo4e/bo/fremdkosten.py +++ b/src/bo4e/bo/fremdkosten.py @@ -13,7 +13,7 @@ if TYPE_CHECKING: from ..com.betrag import Betrag from ..com.fremdkostenblock import Fremdkostenblock - from ..com.zeitraum import Zeitraum + from ..com.zeitspanne import Zeitspanne # pylint: disable=too-few-public-methods @@ -36,8 +36,8 @@ class Fremdkosten(Geschaeftsobjekt): """ typ: Annotated[Optional["Typ"], Field(alias="_typ")] = Typ.FREMDKOSTEN - #: Für diesen Zeitraum wurden die Kosten ermittelt - gueltigkeit: Optional["Zeitraum"] = None + #: Für diese Zeitspanne wurden die Kosten ermittelt + gueltigkeit: Optional["Zeitspanne"] = None #: Die Gesamtsumme über alle Kostenblöcke und -positionen summe_kosten: Optional["Betrag"] = None #: In Kostenblöcken werden Kostenpositionen zusammengefasst. Beispiele: Netzkosten, Umlagen, Steuern etc diff --git a/src/bo4e/bo/kosten.py b/src/bo4e/bo/kosten.py index afac21efa..a37fa70ad 100644 --- a/src/bo4e/bo/kosten.py +++ b/src/bo4e/bo/kosten.py @@ -13,7 +13,7 @@ if TYPE_CHECKING: from ..com.betrag import Betrag from ..com.kostenblock import Kostenblock - from ..com.zeitraum import Zeitraum + from ..com.zeitspanne import Zeitspanne from ..enum.kostenklasse import Kostenklasse @@ -39,8 +39,8 @@ class Kosten(Geschaeftsobjekt): typ: Annotated[Optional["Typ"], Field(alias="_typ")] = Typ.KOSTEN #: Klasse der Kosten, beispielsweise Fremdkosten kostenklasse: Optional["Kostenklasse"] = None - #: Für diesen Zeitraum wurden die Kosten ermittelt - gueltigkeit: Optional["Zeitraum"] = None + #: Für diese Zeitspanne wurden die Kosten ermittelt + gueltigkeit: Optional["Zeitspanne"] = None #: In Kostenblöcken werden Kostenpositionen zusammengefasst. Beispiele: Netzkosten, Umlagen, Steuern etc kostenbloecke: Optional[list["Kostenblock"]] = None diff --git a/src/bo4e/bo/preisblatt.py b/src/bo4e/bo/preisblatt.py index 1c6803719..a379b418d 100644 --- a/src/bo4e/bo/preisblatt.py +++ b/src/bo4e/bo/preisblatt.py @@ -15,7 +15,7 @@ if TYPE_CHECKING: from ..com.preisposition import Preisposition - from ..com.zeitraum import Zeitraum + from ..com.zeitspanne import Zeitspanne from ..enum.preisstatus import Preisstatus from ..enum.sparte import Sparte from .marktteilnehmer import Marktteilnehmer @@ -47,8 +47,8 @@ class Preisblatt(Geschaeftsobjekt): sparte: Optional["Sparte"] = None #: Merkmal, das anzeigt, ob es sich um vorläufige oder endgültige Preise handelt preisstatus: Optional["Preisstatus"] = None - #: Der Zeitraum für den der Preis festgelegt ist - gueltigkeit: Optional["Zeitraum"] = None + #: Die Zeitspanne, für die der Preis festgelegt ist + gueltigkeit: Optional["Zeitspanne"] = None #: Die einzelnen Positionen, die mit dem Preisblatt abgerechnet werden können. Z.B. Arbeitspreis, Grundpreis etc preispositionen: Optional[list["Preisposition"]] = None #: Der Netzbetreiber, der die Preise veröffentlicht hat diff --git a/src/bo4e/bo/rechnung.py b/src/bo4e/bo/rechnung.py index 2672dbbea..a8655f232 100644 --- a/src/bo4e/bo/rechnung.py +++ b/src/bo4e/bo/rechnung.py @@ -16,7 +16,7 @@ from ..com.betrag import Betrag from ..com.rechnungsposition import Rechnungsposition from ..com.steuerbetrag import Steuerbetrag - from ..com.zeitraum import Zeitraum + from ..com.zeitspanne import Zeitspanne from ..enum.netznutzungrechnungsart import NetznutzungRechnungsart from ..enum.netznutzungrechnungstyp import NetznutzungRechnungstyp from ..enum.rechnungsstatus import Rechnungsstatus @@ -57,8 +57,8 @@ class Rechnung(Geschaeftsobjekt): faelligkeitsdatum: Optional[pydantic.AwareDatetime] = None #: Ein kontextbezogender Rechnungstyp, z.B. Netznutzungsrechnung rechnungstyp: Optional["Rechnungstyp"] = None - #: Der Zeitraum der zugrunde liegenden Lieferung zur Rechnung - rechnungsperiode: Optional["Zeitraum"] = None + #: Die Zeitspanne der zugrunde liegenden Lieferung zur Rechnung + rechnungsperiode: Optional["Zeitspanne"] = None #: Der Aussteller der Rechnung, die Rollencodenummer kennt man über den im Geschäftspartner verlinkten Marktteilnehmer rechnungsersteller: Optional["Geschaeftspartner"] = None #: Der Aussteller der Rechnung, die Rollencodenummer kennt man über den im Geschäftspartner verlinkten Marktteilnehmer diff --git a/src/bo4e/bo/tarifinfo.py b/src/bo4e/bo/tarifinfo.py index 9919eb232..6bc9914d8 100644 --- a/src/bo4e/bo/tarifinfo.py +++ b/src/bo4e/bo/tarifinfo.py @@ -17,7 +17,7 @@ if TYPE_CHECKING: from ..com.energiemix import Energiemix from ..com.vertragskonditionen import Vertragskonditionen - from ..com.zeitraum import Zeitraum + from ..com.zeitspanne import Zeitspanne from ..enum.kundentyp import Kundentyp from ..enum.registeranzahl import Registeranzahl from ..enum.sparte import Sparte @@ -64,8 +64,8 @@ class Tarifinfo(Geschaeftsobjekt): #: Freitext bemerkung: Optional[str] = None - #: Angabe, in welchem Zeitraum der Tarif gültig ist - zeitliche_gueltigkeit: Optional["Zeitraum"] = None + #: Angabe, in welcher Zeitspanne der Tarif gültig ist + zeitliche_gueltigkeit: Optional["Zeitspanne"] = None #: Der Energiemix, der für diesen Tarif gilt energiemix: Optional["Energiemix"] = None #: Mindestlaufzeiten und Kündigungsfristen zusammengefasst diff --git a/src/bo4e/com/angebotsteil.py b/src/bo4e/com/angebotsteil.py index ee7658e5d..02cb9a2e5 100644 --- a/src/bo4e/com/angebotsteil.py +++ b/src/bo4e/com/angebotsteil.py @@ -13,7 +13,7 @@ from .angebotsposition import Angebotsposition from .betrag import Betrag from .menge import Menge - from .zeitraum import Zeitraum + from .zeitspanne import Zeitspanne # pylint: disable=too-few-public-methods # pylint: disable=no-name-in-module @@ -52,4 +52,4 @@ class Angebotsteil(COM): #: Summe der Jahresenergiekosten aller in diesem Angebotsteil enthaltenen Lieferstellen gesamtkostenangebotsteil: Optional["Betrag"] = None #: Hier kann der Belieferungszeitraum angegeben werden, für den dieser Angebotsteil gilt - lieferzeitraum: Optional["Zeitraum"] = None + lieferzeitraum: Optional["Zeitspanne"] = None diff --git a/src/bo4e/com/aufabschlag.py b/src/bo4e/com/aufabschlag.py index c5006a6d5..46d95feef 100644 --- a/src/bo4e/com/aufabschlag.py +++ b/src/bo4e/com/aufabschlag.py @@ -13,7 +13,7 @@ from ..enum.aufabschlagsziel import AufAbschlagsziel from ..enum.waehrungseinheit import Waehrungseinheit from .preisstaffel import Preisstaffel - from .zeitraum import Zeitraum + from .zeitspanne import Zeitspanne # pylint: disable=too-few-public-methods, too-many-instance-attributes @@ -49,5 +49,5 @@ class AufAbschlag(COM): (Nur im Falle absoluter Aufschlagstypen). """ #: Internetseite, auf der die Informationen zum Auf-/Abschlag veröffentlicht sind. website: Optional[str] = None - #: Internetseite, auf der die Informationen zum Auf-/Abschlag veröffentlicht sind. - gueltigkeitszeitraum: Optional["Zeitraum"] = None + #: Zeitspanne, in der die Vereinbarung gültig ist. + gueltigkeitszeitraum: Optional["Zeitspanne"] = None diff --git a/src/bo4e/com/aufabschlagregional.py b/src/bo4e/com/aufabschlagregional.py index 0a97ad4fc..49e3b4535 100644 --- a/src/bo4e/com/aufabschlagregional.py +++ b/src/bo4e/com/aufabschlagregional.py @@ -18,7 +18,7 @@ from .preisgarantie import Preisgarantie from .tarifeinschraenkung import Tarifeinschraenkung from .vertragskonditionen import Vertragskonditionen - from .zeitraum import Zeitraum + from .zeitspanne import Zeitspanne # pylint: disable=too-few-public-methods, too-many-instance-attributes # pylint: disable=no-name-in-module @@ -64,7 +64,7 @@ class AufAbschlagRegional(COM): #: Durch die Anwendung des Auf/Abschlags kann eine Änderung des Tarifnamens auftreten. tarifnamensaenderungen: Optional[str] = None #: Zeitraum, in dem der Abschlag zur Anwendung kommen kann - gueltigkeitszeitraum: Optional["Zeitraum"] = None + gueltigkeitszeitraum: Optional["Zeitspanne"] = None energiemixaenderung: Optional["Energiemix"] = None """ Der Energiemix kann sich durch einen AufAbschlag ändern (z.B. zwei Cent Aufschlag für Ökostrom: Sollte dies der Fall sein, wird hier die neue Zusammensetzung des Energiemix angegeben.""" diff --git a/src/bo4e/com/ausschreibungsdetail.py b/src/bo4e/com/ausschreibungsdetail.py index c7b3481b3..002bc2c3a 100644 --- a/src/bo4e/com/ausschreibungsdetail.py +++ b/src/bo4e/com/ausschreibungsdetail.py @@ -11,7 +11,7 @@ from ..enum.zaehlertyp import Zaehlertyp from .adresse import Adresse from .menge import Menge - from .zeitraum import Zeitraum + from .zeitspanne import Zeitspanne # pylint: disable=too-few-public-methods, too-many-instance-attributes @@ -40,7 +40,7 @@ class Ausschreibungsdetail(COM): #: Die Adresse an der die Marktlokation sich befindet marktlokationsadresse: Optional["Adresse"] = None #: Angefragter Zeitraum für die ausgeschriebene Belieferung - lieferzeitraum: Optional["Zeitraum"] = None + lieferzeitraum: Optional["Zeitspanne"] = None #: Bezeichnung des zuständigen Netzbetreibers, z.B. 'Stromnetz Hamburg GmbH' netzbetreiber: Optional[str] = None diff --git a/src/bo4e/com/ausschreibungslos.py b/src/bo4e/com/ausschreibungslos.py index e42906f08..430b02193 100644 --- a/src/bo4e/com/ausschreibungslos.py +++ b/src/bo4e/com/ausschreibungslos.py @@ -16,7 +16,7 @@ from ..enum.vertragsform import Vertragsform from .ausschreibungsdetail import Ausschreibungsdetail from .menge import Menge - from .zeitraum import Zeitraum + from .zeitspanne import Zeitspanne @postprocess_docstring @@ -55,7 +55,7 @@ class Ausschreibungslos(COM): lieferstellen: Optional[list["Ausschreibungsdetail"]] = None #: Zeitraum, für den die in diesem Los enthaltenen Lieferstellen beliefert werden sollen - lieferzeitraum: Optional["Zeitraum"] = None + lieferzeitraum: Optional["Zeitspanne"] = None #: Bemerkung des Kunden zum Los bemerkung: Optional[str] = None @@ -66,13 +66,14 @@ class Ausschreibungslos(COM): #: Maximalmenge Toleranzband (kWh, %) wunsch_maximalmenge: Optional["Menge"] = None - wiederholungsintervall: Optional["Zeitraum"] = None + wiederholungsintervall: Optional["Zeitspanne"] = None """ In welchem Intervall die Angebotsabgabe wiederholt werden darf. Angabe nur gesetzt für die 2. Phase bei öffentlich-rechtlichen Ausschreibungen """ + #: Was bedeutet das hier genau? Wär das dann eher eine Menge? #: Kundenwunsch zur Kündigungsfrist in der Ausschreibung - wunsch_kuendingungsfrist: Optional["Zeitraum"] = None + wunsch_kuendingungsfrist: Optional["Zeitspanne"] = None #: Kundenwunsch zum Zahlungsziel in der Ausschreibung - wunsch_zahlungsziel: Optional["Zeitraum"] = None + wunsch_zahlungsziel: Optional["Zeitspanne"] = None diff --git a/src/bo4e/com/preisgarantie.py b/src/bo4e/com/preisgarantie.py index 0d9839724..3bfd6a2ad 100644 --- a/src/bo4e/com/preisgarantie.py +++ b/src/bo4e/com/preisgarantie.py @@ -10,7 +10,7 @@ if TYPE_CHECKING: from ..enum.preisgarantietyp import Preisgarantietyp - from .zeitraum import Zeitraum + from .zeitspanne import Zeitspanne # pylint: disable=too-few-public-methods @@ -31,9 +31,9 @@ class Preisgarantie(COM): #: Festlegung, auf welche Preisbestandteile die Garantie gewährt wird. preisgarantietyp: Optional["Preisgarantietyp"] = None - zeitliche_gueltigkeit: Optional["Zeitraum"] = None - """ Zeitraum, bis zu dem die Preisgarantie gilt, z.B. bis zu einem absolutem / fixem Datum - oder als Laufzeit in Monaten. """ + zeitliche_gueltigkeit: Optional["Zeitspanne"] = None + """ Zeitspanne, in der die Preisgarantie gilt, z.B. bis zu einem absoluten / fixen Datum + oder als Laufzeit mit Startdatum und Enddatum. """ # optionale attributes #: Freitext zur Beschreibung der Preisgarantie. diff --git a/src/bo4e/com/regionaleraufabschlag.py b/src/bo4e/com/regionaleraufabschlag.py index be98031ea..ad6d828c4 100644 --- a/src/bo4e/com/regionaleraufabschlag.py +++ b/src/bo4e/com/regionaleraufabschlag.py @@ -17,7 +17,7 @@ from .regionalepreisstaffel import RegionalePreisstaffel from .tarifeinschraenkung import Tarifeinschraenkung from .vertragskonditionen import Vertragskonditionen - from .zeitraum import Zeitraum + from .zeitspanne import Zeitspanne # pylint: disable=too-few-public-methods, too-many-instance-attributes # pylint: disable=no-name-in-module @@ -71,7 +71,7 @@ class RegionalerAufAbschlag(COM): tarifnamensaenderungen: Optional[str] = None #: Zeitraum, in dem der Abschlag zur Anwendung kommen kann - gueltigkeitszeitraum: Optional["Zeitraum"] = None + gueltigkeitszeitraum: Optional["Zeitspanne"] = None energiemixaenderung: Optional["Energiemix"] = None """ diff --git a/src/bo4e/com/vertragskonditionen.py b/src/bo4e/com/vertragskonditionen.py index f3156812d..718077938 100644 --- a/src/bo4e/com/vertragskonditionen.py +++ b/src/bo4e/com/vertragskonditionen.py @@ -11,7 +11,7 @@ if TYPE_CHECKING: - from .zeitraum import Zeitraum + from .zeitspanne import Zeitspanne # pylint: disable=too-few-public-methods @@ -35,10 +35,11 @@ class Vertragskonditionen(COM): #: Anzahl der vereinbarten Abschläge pro Jahr, z.B. 12 anzahl_abschlaege: Optional[Decimal] = None #: Über diesen Zeitraum läuft der Vertrag - vertragslaufzeit: Optional["Zeitraum"] = None + vertragslaufzeit: Optional["Zeitspanne"] = None #: Innerhalb dieser Frist kann der Vertrag gekündigt werden - kuendigungsfrist: Optional["Zeitraum"] = None + kuendigungsfrist: Optional["Zeitspanne"] = None #: Falls der Vertrag nicht gekündigt wird, verlängert er sich automatisch um die hier angegebene Zeit - vertragsverlaengerung: Optional["Zeitraum"] = None + vertragsverlaengerung: Optional["Zeitspanne"] = None #: In diesen Zyklen werden Abschläge gestellt. Alternativ kann auch die Anzahl in den Konditionen angeben werden. - abschlagszyklus: Optional["Zeitraum"] = None + abschlagszyklus: Optional["Zeitspanne"] = None + #: Todo: auch hier passt ja Zeitspanne nicht wirklich, Zeitraum auch nicht, vielleicht Menge? tbd diff --git a/src/bo4e/com/zeitspanne.py b/src/bo4e/com/zeitspanne.py index 1c667bf37..b11caa381 100644 --- a/src/bo4e/com/zeitspanne.py +++ b/src/bo4e/com/zeitspanne.py @@ -2,10 +2,9 @@ contains the COM Zeitspanne """ +from datetime import date, time from typing import Optional -import pydantic - from bo4e.com.com import COM from ..utils import postprocess_docstring @@ -14,9 +13,9 @@ @postprocess_docstring class Zeitspanne(COM): """ - Eine Zeitspanne ist definiert aus Start und/oder Ende. + Eine Zeitspanne ist definiert aus Start- und Enddatum sowie Start- und Enduhrzeit. Der Unterschied zur Menge (die auch zur Abbildung von Zeitmengen genutzt wird) ist, dass konkrete Start- und Endzeitpunkte angegeben werden. - Die Zeitspanne ist aus dem COM Zeitspanne hervorgegangen, das in Zeitspanne und Menge aufgeteilt wurde. + Die Zeitspanne ist aus dem COM Zeitraum hervorgegangen, das in Zeitspanne und Menge aufgeteilt wurde. .. raw:: html @@ -27,5 +26,10 @@ class Zeitspanne(COM): """ - start: Optional[pydantic.AwareDatetime] = None #: inklusiver Beginn - ende: Optional[pydantic.AwareDatetime] = None #: exklusives Ende + #: start and ende will be removed + # start: Optional[pydantic.AwareDatetime] = None #: inklusiver Beginn + # ende: Optional[pydantic.AwareDatetime] = None #: exklusives Ende + startdatum: Optional[date] = None #: inklusiver Beginn + enddatum: Optional[date] = None #: inklusives Ende + startuhrzeit: Optional[time] = None #: inklusiver Beginn + enduhrzeit: Optional[time] = None #: exklusives Ende diff --git a/tests/test_aufabschlag.py b/tests/test_aufabschlag.py index fd4a9e766..f7b944a07 100644 --- a/tests/test_aufabschlag.py +++ b/tests/test_aufabschlag.py @@ -16,7 +16,7 @@ class TestAufAbschlag: auf_abschlagsziel=AufAbschlagsziel.GESAMTPREIS, einheit=Waehrungseinheit.EUR, website="foo.bar", - gueltigkeitsZeitspanne=Zeitspanne(), + gueltigkeitszeitraum=Zeitspanne(), staffeln=[Preisstaffel()], ), id="all attributes at first level", diff --git a/tests/test_aufabschlagregional.py b/tests/test_aufabschlagregional.py index b86bce290..1c5a8c44d 100644 --- a/tests/test_aufabschlagregional.py +++ b/tests/test_aufabschlagregional.py @@ -31,7 +31,7 @@ class TestAufAbschlagRegional: zusatzprodukte=["Asterix", "Obelix"], voraussetzungen=["Petterson", "Findus"], tarifnamensaenderungen="foobar", - gueltigkeitsZeitspanne=Zeitspanne(), + gueltigkeitszeitraum=Zeitspanne(), energiemixaenderung=Energiemix(), vertagskonditionsaenderung=Vertragskonditionen(), garantieaenderung=Preisgarantie(), diff --git a/tests/test_preisgarantie.py b/tests/test_preisgarantie.py index e583b91b5..454d817e1 100644 --- a/tests/test_preisgarantie.py +++ b/tests/test_preisgarantie.py @@ -1,5 +1,3 @@ -from datetime import datetime, timezone - import pytest from bo4e import Preisgarantie, Preisgarantietyp, Zeitspanne @@ -11,14 +9,8 @@ class TestPreisgarantie: "preisgarantie", [ pytest.param( - Preisgarantie( - preisgarantietyp=Preisgarantietyp.NUR_ENERGIEPREIS, - zeitliche_gueltigkeit=Zeitspanne( - start=datetime(2020, 1, 1, tzinfo=timezone.utc), - ende=datetime(2020, 4, 1, tzinfo=timezone.utc), - ), - ), - ), + Preisgarantie(preisgarantietyp=Preisgarantietyp.NUR_ENERGIEPREIS, zeitliche_gueltigkeit=Zeitspanne()), + ) ], ) def test_preisgarantie_required_attributes(self, preisgarantie: Preisgarantie) -> None: diff --git a/tests/test_rechnung.py b/tests/test_rechnung.py index f4c71c36a..d75ffadd3 100644 --- a/tests/test_rechnung.py +++ b/tests/test_rechnung.py @@ -8,7 +8,6 @@ Geschaeftspartner, Marktlokation, Menge, - Mengeneinheit, Messlokation, NetznutzungRechnungsart, NetznutzungRechnungstyp, @@ -40,7 +39,7 @@ class TestRechnung: faelligkeitsdatum=datetime.today().replace(tzinfo=timezone.utc), rechnungstyp=Rechnungstyp.ENDKUNDENRECHNUNG, original_rechnungsnummer="RE-2022-01-21_1701", - rechnungsperiode=Menge(einheit=Mengeneinheit.TAG, wert=Decimal(21)), + rechnungsperiode=Zeitspanne(), rechnungsersteller=Geschaeftspartner(), rechnungsempfaenger=Geschaeftspartner(), gesamtnetto=Betrag(wert=Decimal(12.5), waehrung=Waehrungscode.EUR), @@ -91,7 +90,7 @@ class TestRechnung: faelligkeitsdatum=datetime.today().replace(tzinfo=timezone.utc), rechnungstyp=Rechnungstyp.ENDKUNDENRECHNUNG, original_rechnungsnummer="RE-2022-01-21_1701", - rechnungsperiode=Menge(einheit=Mengeneinheit.TAG, wert=Decimal(21)), + rechnungsperiode=Zeitspanne(), rechnungsersteller=Geschaeftspartner(), rechnungsempfaenger=Geschaeftspartner(), gesamtnetto=Betrag(wert=Decimal(12.5), waehrung=Waehrungscode.EUR), diff --git a/tests/test_regionalepreisgarantie.py b/tests/test_regionalepreisgarantie.py index 16cc8bd57..39b245afc 100644 --- a/tests/test_regionalepreisgarantie.py +++ b/tests/test_regionalepreisgarantie.py @@ -1,5 +1,3 @@ -from datetime import datetime, timezone - import pytest from bo4e import ( @@ -21,10 +19,7 @@ class TestRegionalePreisgarantie: pytest.param( RegionalePreisgarantie( preisgarantietyp=Preisgarantietyp.NUR_ENERGIEPREIS, - zeitliche_gueltigkeit=Zeitspanne( - start=datetime(2011, 2, 5, 16, 43, tzinfo=timezone.utc), - ende=datetime(2021, 7, 30, tzinfo=timezone.utc), - ), + zeitliche_gueltigkeit=Zeitspanne(), regionale_gueltigkeit=RegionaleGueltigkeit( gueltigkeitstyp=Gueltigkeitstyp.NUR_IN, kriteriums_werte=[KriteriumWert(kriterium=Tarifregionskriterium.POSTLEITZAHL, wert="01069")], diff --git a/tests/test_regionaleraufabschlag.py b/tests/test_regionaleraufabschlag.py index c59337515..1b1914bff 100644 --- a/tests/test_regionaleraufabschlag.py +++ b/tests/test_regionaleraufabschlag.py @@ -31,7 +31,7 @@ class TestRegionalerAufAbschlag: voraussetzungen=["lecker essen", "mit ökostrom gekocht"], tarifnamensaenderungen="Super-Duper Tarif", staffeln=[RegionalePreisstaffel()], - gueltigkeitszeitspanne=Zeitspanne(), + gueltigkeitszeitraum=Zeitspanne(), energiemixaenderung=Energiemix(), vertagskonditionsaenderung=Vertragskonditionen(), garantieaenderung=Preisgarantie(), diff --git a/tests/test_vertragskonditionen.py b/tests/test_vertragskonditionen.py index a6637b16e..66bd59001 100644 --- a/tests/test_vertragskonditionen.py +++ b/tests/test_vertragskonditionen.py @@ -1,9 +1,9 @@ -from datetime import datetime, timezone +from datetime import date from decimal import Decimal import pytest -from bo4e import Menge, Mengeneinheit, Vertragskonditionen, Zeitspanne +from bo4e import Vertragskonditionen, Zeitspanne from tests.serialization_helper import assert_serialization_roundtrip @@ -16,12 +16,12 @@ class TestVertragskonditionen: beschreibung="Foobar", anzahl_abschlaege=Decimal(3), vertragslaufzeit=Zeitspanne( - start=datetime(2012, 9, 21, tzinfo=timezone.utc), - ende=datetime(2013, 10, 11, tzinfo=timezone.utc), + startdatum=date(2012, 9, 21), + enddatum=date(2013, 10, 11), ), - kuendigungsfrist=Menge(einheit=Mengeneinheit.WOCHE, wert=Decimal(3)), - vertragsverlaengerung=Menge(einheit=Mengeneinheit.TAG, wert=Decimal(14)), - abschlagszyklus=Menge(einheit=Mengeneinheit.TAG, wert=Decimal(5)), + kuendigungsfrist=Zeitspanne(), + vertragsverlaengerung=Zeitspanne(), + abschlagszyklus=Zeitspanne(), ), ), pytest.param( diff --git a/tests/test_zeitreihenwert.py b/tests/test_zeitreihenwert.py index 924844181..4a7db874f 100644 --- a/tests/test_zeitreihenwert.py +++ b/tests/test_zeitreihenwert.py @@ -1,4 +1,3 @@ -from datetime import datetime, timezone from decimal import Decimal import pytest @@ -13,9 +12,7 @@ class TestZeitreihenwert: [ pytest.param( Zeitreihenwert( - zeitspanne=Zeitspanne( - start=datetime(2013, 5, 1, tzinfo=timezone.utc), ende=datetime(2022, 1, 28, tzinfo=timezone.utc) - ), + zeitspanne=Zeitspanne(), wert=Decimal(2.5), status=Messwertstatus.ABGELESEN, statuszusatz=Messwertstatuszusatz.Z78_GERAETEWECHSEL, diff --git a/tests/test_zeitspanne.py b/tests/test_zeitspanne.py index 51f9c9744..3bc414022 100644 --- a/tests/test_zeitspanne.py +++ b/tests/test_zeitspanne.py @@ -1,21 +1,28 @@ -from datetime import datetime, timezone +from datetime import date, time from bo4e.com.zeitspanne import Zeitspanne class TestZeitspanne: + def test_zeitspanne(self) -> None: """ Test de-/serialisation of Zeitspanne """ + zeitspanne = Zeitspanne( - start=datetime(2013, 5, 1, tzinfo=timezone.utc), ende=datetime(2022, 1, 28, tzinfo=timezone.utc) + startdatum=date(2013, 5, 1), # date + enddatum=date(2022, 1, 28), # date + startuhrzeit=time(12, 30), # time + enduhrzeit=time(15, 45), # time ) json_string = zeitspanne.model_dump_json(by_alias=True) - assert "2013-05-01T00:00:00Z" in json_string - assert "2022-01-28T00:00:00Z" in json_string + assert "2013-05-01" in json_string + assert "2022-01-28" in json_string + assert "12:30:00" in json_string + assert "15:45:00" in json_string zeitspanne_deserialized = Zeitspanne.model_validate_json(json_string) assert zeitspanne_deserialized == zeitspanne From a785a8409ee2f7d86874919e332ab84b8ba3ecba Mon Sep 17 00:00:00 2001 From: Franziska Date: Mon, 17 Jun 2024 16:43:31 +0200 Subject: [PATCH 11/11] Fix duplicate link --- README.rst | 1 - 1 file changed, 1 deletion(-) diff --git a/README.rst b/README.rst index dc6a1b0d7..a9f288276 100644 --- a/README.rst +++ b/README.rst @@ -96,4 +96,3 @@ Andere nennenswerte BO4E Implementierungen * `PHP `_ (und `Schemas `_) .. _`BO4E website`: https://www.bo4e.de/dokumentation -.. _`Contribution Guide`: CONTRIBUTING.md