Skip to content

Commit cf2aca7

Browse files
Use Just COM Zeitraum (#971)
* remove zeitspanne * delete test zeitspanne * fix com zeitraum * add more test to test_zeitraum * update all bos and coms with the new approach just COM Zeitraum * remove empty lines * improve naming of tests * improve docstring for `Dauer` Co-authored-by: Annika <73470827+hf-aschloegl@users.noreply.github.com> * replace property zeitspanne with zeitraum * use date in birthday * fix zeitreihenwert test --------- Co-authored-by: Annika <73470827+hf-aschloegl@users.noreply.github.com>
1 parent 3a25ac6 commit cf2aca7

13 files changed

Lines changed: 67 additions & 99 deletions

src/bo4e/__init__.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,6 @@
101101
"Zaehlzeitregister",
102102
"Zeitraum",
103103
"Zeitreihenwert",
104-
"Zeitspanne",
105104
"Zustaendigkeit",
106105
"AbgabeArt",
107106
"Angebotsstatus",
@@ -295,7 +294,6 @@
295294
from .com.zaehlzeitregister import Zaehlzeitregister
296295
from .com.zeitraum import Zeitraum
297296
from .com.zeitreihenwert import Zeitreihenwert
298-
from .com.zeitspanne import Zeitspanne
299297
from .com.zustaendigkeit import Zustaendigkeit
300298

301299
# Import Enums

src/bo4e/bo/lokationszuordnung.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
from ..bo.netzlokation import Netzlokation
1717
from ..bo.steuerbareressource import SteuerbareRessource
1818
from ..bo.technischeressource import TechnischeRessource
19-
from ..com.zeitspanne import Zeitspanne
19+
from ..com.zeitraum import Zeitraum
2020

2121

2222
@postprocess_docstring
@@ -45,8 +45,8 @@ class Lokationszuordnung(Geschaeftsobjekt):
4545
"""Liste mit referenzierten technischen Ressourcen"""
4646
steuerbare_ressourcen: Optional[list["SteuerbareRessource"]] = None
4747
"""Liste mit referenzierten steuerbaren Ressourcen"""
48-
gueltigkeit: Optional["Zeitspanne"] = None
49-
"""Zeitspanne der Gültigkeit"""
48+
gueltigkeit: Optional["Zeitraum"] = None
49+
"""Zeitraum der Gültigkeit"""
5050
zuordnungstyp: Optional[str] = None
5151
"""Verknüpfungsrichtung z.B. Malo-Melo [TODO: Eventuell anderer Datentyp]"""
5252
lokationsbuendelcode: Optional[str] = None

src/bo4e/bo/person.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33
and corresponding marshmallow schema for de-/serialization
44
"""
55

6+
from datetime import date
67
from typing import TYPE_CHECKING, Annotated, Literal, Optional
78

8-
import pydantic
99
from pydantic import Field
1010

1111
from ..enum.typ import Typ
@@ -53,7 +53,7 @@ class Person(Geschaeftsobjekt):
5353
"""Nachname (Familienname) der Person"""
5454
kontaktwege: Optional[list["Kontaktweg"]] = None
5555
"""Kontaktwege der Person"""
56-
geburtsdatum: Optional[pydantic.AwareDatetime] = None
56+
geburtsdatum: Optional[date] = None
5757
"""Geburtsdatum der Person"""
5858
kommentar: Optional[str] = None
5959
"""Weitere Informationen zur Person"""

src/bo4e/com/zeitraum.py

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,9 @@
33
and corresponding marshmallow schema for de-/serialization
44
"""
55

6-
from decimal import Decimal
6+
from datetime import date, time
77
from typing import TYPE_CHECKING, Optional
88

9-
import pydantic
10-
119
from ..utils import postprocess_docstring
1210
from .com import COM
1311

@@ -16,8 +14,6 @@
1614

1715

1816
# pylint: disable=too-few-public-methods
19-
20-
2117
@postprocess_docstring
2218
class Zeitraum(COM):
2319
"""
@@ -36,9 +32,13 @@ class Zeitraum(COM):
3632
3733
"""
3834

39-
einheit: Optional["Mengeneinheit"] = None
40-
dauer: Optional[Decimal] = None
41-
startdatum: Optional[pydantic.AwareDatetime] = None
42-
enddatum: Optional[pydantic.AwareDatetime] = None
43-
startzeitpunkt: Optional[pydantic.AwareDatetime] = None
44-
endzeitpunkt: Optional[pydantic.AwareDatetime] = None
35+
startdatum: Optional[date] = None
36+
"""Startdatum, inklusiv"""
37+
enddatum: Optional[date] = None
38+
"""Enddatum, inklusiv"""
39+
startuhrzeit: Optional[time] = None
40+
"""Startuhrzeit, inklusiv mit Zeitzone"""
41+
enduhrzeit: Optional[time] = None
42+
"""Enduhrzeit, exklusiv mit Zeitzone"""
43+
dauer: Optional[str] = None
44+
"""Dauer in ISO 8601 , example: 'P1DT30H4S', siehe https://datatracker.ietf.org/doc/html/rfc3339 """

src/bo4e/com/zeitreihenwert.py

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,12 @@
1010
from .com import COM
1111

1212
if TYPE_CHECKING:
13-
from ..com.zeitspanne import Zeitspanne
13+
from ..com.zeitraum import Zeitraum
1414
from ..enum.messwertstatus import Messwertstatus
1515
from ..enum.messwertstatuszusatz import Messwertstatuszusatz
1616

1717

1818
# pylint: disable=too-few-public-methods
19-
20-
2119
@postprocess_docstring
2220
class Zeitreihenwert(COM):
2321
"""
@@ -32,12 +30,11 @@ class Zeitreihenwert(COM):
3230
3331
"""
3432

35-
zeitspanne: Optional["Zeitspanne"] = None
36-
"""Zeitespanne für das Messintervall"""
33+
zeitraum: Optional["Zeitraum"] = None
34+
"""Zeitraum für das Messintervall"""
3735
wert: Optional[Decimal] = None
38-
"""Der in der Zeitspanne gültige Wert."""
36+
"""Der in dem Zeitraum gültige Wert."""
3937
status: Optional["Messwertstatus"] = None
4038
"""Der Status gibt an, wie der Wert zu interpretieren ist, z.B. in Berechnungen."""
41-
4239
statuszusatz: Optional["Messwertstatuszusatz"] = None
4340
"""Eine Zusatzinformation zum Status, beispielsweise ein Grund für einen fehlenden Wert."""

src/bo4e/com/zeitspanne.py

Lines changed: 0 additions & 33 deletions
This file was deleted.

tests/test_lokationszuordnung.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import pytest
2-
from pydantic import AwareDatetime
32

43
from bo4e import (
54
Lokationszuordnung,
@@ -8,7 +7,7 @@
87
Netzlokation,
98
SteuerbareRessource,
109
TechnischeRessource,
11-
Zeitspanne,
10+
Zeitraum,
1211
)
1312
from tests.serialization_helper import assert_serialization_roundtrip
1413

@@ -24,7 +23,7 @@ class TestLokationszuordnung:
2423
netzlokationen=[Netzlokation()],
2524
technische_ressourcen=[TechnischeRessource()],
2625
steuerbare_ressourcen=[SteuerbareRessource()],
27-
gueltigkeit=Zeitspanne(),
26+
gueltigkeit=Zeitraum(),
2827
zuordnungstyp="Zuordnungstyp",
2928
lokationsbuendelcode="9992 00000 125 6",
3029
),

tests/test_rechnung.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ class TestRechnung:
4040
faelligkeitsdatum=datetime.today().replace(tzinfo=timezone.utc),
4141
rechnungstyp=Rechnungstyp.ENDKUNDENRECHNUNG,
4242
original_rechnungsnummer="RE-2022-01-21_1701",
43-
rechnungsperiode=Zeitraum(einheit=Mengeneinheit.TAG, dauer=Decimal(21)),
43+
rechnungsperiode=Zeitraum(dauer="P21D"),
4444
rechnungsersteller=Geschaeftspartner(),
4545
rechnungsempfaenger=Geschaeftspartner(),
4646
gesamtnetto=Betrag(wert=Decimal(12.5), waehrung=Waehrungscode.EUR),
@@ -91,7 +91,7 @@ class TestRechnung:
9191
faelligkeitsdatum=datetime.today().replace(tzinfo=timezone.utc),
9292
rechnungstyp=Rechnungstyp.ENDKUNDENRECHNUNG,
9393
original_rechnungsnummer="RE-2022-01-21_1701",
94-
rechnungsperiode=Zeitraum(einheit=Mengeneinheit.TAG, dauer=Decimal(21)),
94+
rechnungsperiode=Zeitraum(dauer="P21D"),
9595
rechnungsersteller=Geschaeftspartner(),
9696
rechnungsempfaenger=Geschaeftspartner(),
9797
gesamtnetto=Betrag(wert=Decimal(12.5), waehrung=Waehrungscode.EUR),

tests/test_regionalepreisgarantie.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from datetime import datetime, timezone
1+
from datetime import datetime, time
22

33
import pytest
44

@@ -22,8 +22,10 @@ class TestRegionalePreisgarantie:
2222
RegionalePreisgarantie(
2323
preisgarantietyp=Preisgarantietyp.NUR_ENERGIEPREIS,
2424
zeitliche_gueltigkeit=Zeitraum(
25-
startzeitpunkt=datetime(2011, 2, 5, 16, 43, tzinfo=timezone.utc),
26-
endzeitpunkt=datetime(2021, 7, 30, tzinfo=timezone.utc),
25+
startdatum=datetime(2011, 2, 5),
26+
startuhrzeit=time(16, 43),
27+
enddatum=datetime(2021, 7, 30),
28+
enduhrzeit=time(16, 43),
2729
),
2830
regionale_gueltigkeit=RegionaleGueltigkeit(
2931
gueltigkeitstyp=Gueltigkeitstyp.NUR_IN,

tests/test_vertragskonditionen.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,9 @@ class TestVertragskonditionen:
1919
startdatum=datetime(2012, 9, 21, tzinfo=timezone.utc),
2020
enddatum=datetime(2013, 10, 11, tzinfo=timezone.utc),
2121
),
22-
kuendigungsfrist=Zeitraum(einheit=Mengeneinheit.WOCHE, dauer=Decimal(3)),
23-
vertragsverlaengerung=Zeitraum(einheit=Mengeneinheit.TAG, dauer=Decimal(14)),
24-
abschlagszyklus=Zeitraum(einheit=Mengeneinheit.TAG, dauer=Decimal(5)),
22+
kuendigungsfrist=Zeitraum(dauer="P3W"),
23+
vertragsverlaengerung=Zeitraum(dauer="P14D"),
24+
abschlagszyklus=Zeitraum(dauer="P5D"),
2525
),
2626
),
2727
pytest.param(

0 commit comments

Comments
 (0)