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
diff --git a/src/bo4e/__init__.py b/src/bo4e/__init__.py
index 255977773..dd7220822 100644
--- a/src/bo4e/__init__.py
+++ b/src/bo4e/__init__.py
@@ -99,7 +99,6 @@
"VerwendungszweckProMarktrolle",
"Zaehlwerk",
"Zaehlzeitregister",
- "Zeitraum",
"Zeitreihenwert",
"Zeitspanne",
"Zustaendigkeit",
@@ -293,7 +292,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 59840cefe..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 Zeitraum 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 Zeitraum 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/verbrauch.py b/src/bo4e/com/verbrauch.py
index f39ebbf28..b49198a75 100644
--- a/src/bo4e/com/verbrauch.py
+++ b/src/bo4e/com/verbrauch.py
@@ -43,9 +43,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 der Zeitspanne, 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 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
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/zeitraum.py b/src/bo4e/com/zeitraum.py
deleted file mode 100644
index 90325ab44..000000000
--- a/src/bo4e/com/zeitraum.py
+++ /dev/null
@@ -1,44 +0,0 @@
-"""
-Contains Zeitraum class
-and corresponding marshmallow schema for de-/serialization
-"""
-
-from decimal import Decimal
-from typing import TYPE_CHECKING, Optional
-
-import pydantic
-
-from ..utils import postprocess_docstring
-from .com import COM
-
-if TYPE_CHECKING:
- from ..enum.mengeneinheit import Mengeneinheit
-
-
-# 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 2ed922a61..960cd4b65 100644
--- a/src/bo4e/com/zeitreihenwert.py
+++ b/src/bo4e/com/zeitreihenwert.py
@@ -21,7 +21,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..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,7 +13,7 @@
@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 Zeitraum hervorgegangen, das in Zeitspanne und Menge aufgeteilt wurde.
@@ -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_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..f7b944a07 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(),
+ gueltigkeitszeitraum=Zeitspanne(),
staffeln=[Preisstaffel()],
),
id="all attributes at first level",
diff --git a/tests/test_aufabschlagregional.py b/tests/test_aufabschlagregional.py
index fec3a5c73..1c5a8c44d 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(),
+ gueltigkeitszeitraum=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..454d817e1 100644
--- a/tests/test_preisgarantie.py
+++ b/tests/test_preisgarantie.py
@@ -1,8 +1,6 @@
-from datetime import datetime, timezone
-
import pytest
-from bo4e import Preisgarantie, Preisgarantietyp, Zeitraum
+from bo4e import Preisgarantie, Preisgarantietyp, Zeitspanne
from tests.serialization_helper import assert_serialization_roundtrip
@@ -11,14 +9,8 @@ class TestPreisgarantie:
"preisgarantie",
[
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),
- ),
- ),
- ),
+ 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 9ad9cd9e9..d75ffadd3 100644
--- a/tests/test_rechnung.py
+++ b/tests/test_rechnung.py
@@ -8,7 +8,6 @@
Geschaeftspartner,
Marktlokation,
Menge,
- Mengeneinheit,
Messlokation,
NetznutzungRechnungsart,
NetznutzungRechnungstyp,
@@ -21,7 +20,7 @@
Steuerbetrag,
Steuerkennzeichen,
Waehrungscode,
- Zeitraum,
+ Zeitspanne,
)
from tests.serialization_helper import assert_serialization_roundtrip
@@ -40,7 +39,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=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=Zeitraum(einheit=Mengeneinheit.TAG, dauer=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 6ac127c54..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 (
@@ -9,7 +7,7 @@
RegionaleGueltigkeit,
RegionalePreisgarantie,
Tarifregionskriterium,
- Zeitraum,
+ Zeitspanne,
)
from tests.serialization_helper import assert_serialization_roundtrip
@@ -21,10 +19,7 @@ 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(),
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 6d828a35e..1b1914bff 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(),
+ gueltigkeitszeitraum=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..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 Mengeneinheit, Vertragskonditionen, Zeitraum
+from bo4e import 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(
+ startdatum=date(2012, 9, 21),
+ enddatum=date(2013, 10, 11),
),
- 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=Zeitspanne(),
+ vertragsverlaengerung=Zeitspanne(),
+ abschlagszyklus=Zeitspanne(),
),
),
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)
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