Skip to content

Commit 8909b66

Browse files
authored
chore: use AwareDatetime instead of datetime (prevents naive datetimes) (#722)
1 parent 2f29295 commit 8909b66

23 files changed

+80
-69
lines changed

src/bo4e/bo/angebot.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,11 @@
22
Contains Angebot class and corresponding marshmallow schema for de-/serialization
33
"""
44

5-
from datetime import datetime
6-
75
# pylint: disable=too-few-public-methods, too-many-instance-attributes
86
# pylint: disable=no-name-in-module
97
from typing import Annotated, Optional
108

9+
import pydantic
1110
from pydantic import Field
1211

1312
from ..com.angebotsvariante import Angebotsvariante
@@ -41,7 +40,7 @@ class Angebot(Geschaeftsobjekt):
4140
#: Eindeutige Nummer des Angebotes
4241
angebotsnummer: Optional[str] = None
4342
#: Erstellungsdatum des Angebots
44-
angebotsdatum: Optional[datetime] = None
43+
angebotsdatum: Optional[pydantic.AwareDatetime] = None
4544
#: Sparte, für die das Angebot abgegeben wird (Strom/Gas)
4645
sparte: Optional[Sparte] = None
4746
#: Ersteller des Angebots
@@ -57,7 +56,7 @@ class Angebot(Geschaeftsobjekt):
5756
""" Referenz auf eine Anfrage oder Ausschreibung;
5857
Kann dem Empfänger des Angebotes bei Zuordnung des Angebotes zur Anfrage bzw. Ausschreibung helfen."""
5958
#: Bis zu diesem Zeitpunkt (Tag/Uhrzeit) inklusive gilt das Angebot
60-
bindefrist: Optional[datetime] = None
59+
bindefrist: Optional[pydantic.AwareDatetime] = None
6160
#: Person, die als Angebotsnehmer das Angebot angenommen hat
6261
unterzeichner_angebotsnehmer: Optional[Person] = None
6362
#: Person, die als Angebotsgeber das Angebots ausgestellt hat

src/bo4e/bo/ausschreibung.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,11 @@
22
Contains Ausschreibung class and corresponding marshmallow schema for de-/serialization
33
"""
44

5-
from datetime import datetime
6-
75
# pylint: disable=too-few-public-methods, too-many-instance-attributes
86
# pylint: disable=no-name-in-module
97
from typing import Annotated, Optional
108

9+
import pydantic
1110
from pydantic import Field
1211

1312
from ..com.ausschreibungslos import Ausschreibungslos
@@ -45,7 +44,7 @@ class Ausschreibung(Geschaeftsobjekt):
4544
#: Kennzeichen, ob die Ausschreibung kostenpflichtig ist
4645
ist_kostenpflichtig: Optional[bool] = None
4746
#: Gibt den Veröffentlichungszeitpunkt der Ausschreibung an
48-
veroeffentlichungszeitpunkt: Optional[datetime] = None
47+
veroeffentlichungszeitpunkt: Optional[pydantic.AwareDatetime] = None
4948
ausschreibender: Optional[Geschaeftspartner] = None
5049
"""
5150
Mit diesem Objekt können Geschäftspartner übertragen werden.

src/bo4e/bo/buendelvertrag.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44

55
# pylint: disable=too-few-public-methods
66
# pylint: disable=no-name-in-module
7-
from datetime import datetime
87
from typing import Annotated, Optional
98

9+
import pydantic
1010
from pydantic import Field
1111

1212
from ..com.unterschrift import Unterschrift
@@ -48,9 +48,9 @@ class Buendelvertrag(Geschaeftsobjekt):
4848
#: Unterscheidungsmöglichkeiten für die Sparte
4949
sparte: Optional[Sparte] = None
5050
#: Gibt an, wann der Vertrag beginnt (inklusiv)
51-
vertragsbeginn: Optional[datetime] = None
51+
vertragsbeginn: Optional[pydantic.AwareDatetime] = None
5252
#: Gibt an, wann der Vertrag (voraussichtlich) endet oder beendet wurde (exklusiv)
53-
vertragsende: Optional[datetime] = None
53+
vertragsende: Optional[pydantic.AwareDatetime] = None
5454
#: Der "erstgenannte" Vertragspartner. In der Regel der Aussteller des Vertrags.
5555
#: Beispiel: "Vertrag zwischen Vertagspartner 1 ..."
5656
vertragspartner1: Optional[Geschaeftspartner] = 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 datetime
76
from typing import Annotated, Optional
87

8+
import pydantic
99
from pydantic import Field
1010

1111
from ..com.adresse import Adresse
@@ -51,7 +51,7 @@ class Person(Geschaeftsobjekt):
5151
#: Kontaktwege der Person
5252
kontaktwege: Optional[list[Kontaktweg]] = None
5353
#: Geburtsdatum der Person
54-
geburtsdatum: Optional[datetime] = None
54+
geburtsdatum: Optional[pydantic.AwareDatetime] = None
5555
#: Weitere Informationen zur Person
5656
kommentar: Optional[str] = None
5757
#: Liste der Abteilungen und Zuständigkeiten der Person

src/bo4e/bo/rechnung.py

Lines changed: 3 additions & 3 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 datetime
76
from typing import Annotated, Optional
87

8+
import pydantic
99
from pydantic import Field
1010

1111
from ..com.betrag import Betrag
@@ -50,9 +50,9 @@ class Rechnung(Geschaeftsobjekt):
5050
#: Eine im Verwendungskontext eindeutige Nummer für die Rechnung
5151
rechnungsnummer: Optional[str] = None
5252
#: Ausstellungsdatum der Rechnung
53-
rechnungsdatum: Optional[datetime] = None
53+
rechnungsdatum: Optional[pydantic.AwareDatetime] = None
5454
#: Zu diesem Datum ist die Zahlung fällig
55-
faelligkeitsdatum: Optional[datetime] = None
55+
faelligkeitsdatum: Optional[pydantic.AwareDatetime] = None
5656
#: Ein kontextbezogender Rechnungstyp, z.B. Netznutzungsrechnung
5757
rechnungstyp: Optional[Rechnungstyp] = None
5858
#: Der Zeitraum der zugrunde liegenden Lieferung zur Rechnung

src/bo4e/bo/regionaltarif.py

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

5-
from datetime import datetime
65
from typing import Annotated, Optional
76

7+
import pydantic
88
from pydantic import Field
99

1010
from ..com.regionalepreisgarantie import RegionalePreisgarantie
@@ -34,7 +34,7 @@ class Regionaltarif(Tarifinfo):
3434

3535
typ: Annotated[Optional[Typ], Field(alias="_typ")] = Typ.REGIONALTARIF
3636
#: Gibt an, wann der Preis zuletzt angepasst wurde
37-
preisstand: Optional[datetime] = None
37+
preisstand: Optional[pydantic.AwareDatetime] = None
3838
#: Für die Berechnung der Kosten sind die hier abgebildeten Parameter heranzuziehen
3939
berechnungsparameter: Optional[Tarifberechnungsparameter] = None
4040
#: Die festgelegten Preise mit regionaler Eingrenzung, z.B. für Arbeitspreis, Grundpreis etc.

src/bo4e/bo/tarif.py

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

5-
from datetime import datetime
65
from typing import Annotated, Optional
76

7+
import pydantic
88
from pydantic import Field
99

1010
from ..com.aufabschlagregional import AufAbschlagRegional
@@ -36,7 +36,7 @@ class Tarif(Tarifinfo):
3636

3737
typ: Annotated[Optional[Typ], Field(alias="_typ")] = Typ.TARIF
3838
#: Gibt an, wann der Preis zuletzt angepasst wurde
39-
preisstand: Optional[datetime] = None
39+
preisstand: Optional[pydantic.AwareDatetime] = None
4040
#: Für die Berechnung der Kosten sind die hier abgebildeten Parameter heranzuziehen
4141
berechnungsparameter: Optional[Tarifberechnungsparameter] = None
4242
#: Die festgelegten Preise mit regionaler Eingrenzung z.B. für Arbeitspreis, Grundpreis etc.

src/bo4e/bo/tarifinfo.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55

66
# pylint: disable=too-many-instance-attributes, too-few-public-methods
77
# pylint: disable=no-name-in-module
8-
from datetime import datetime
98
from typing import Annotated, Optional
109

10+
import pydantic
1111
from pydantic import Field
1212

1313
from ..com.energiemix import Energiemix
@@ -68,7 +68,7 @@ class Tarifinfo(Geschaeftsobjekt):
6868
energiemix: Optional[Energiemix] = None
6969
#: Mindestlaufzeiten und Kündigungsfristen zusammengefasst
7070
vertragskonditionen: Optional[Vertragskonditionen] = None
71-
anwendung_von: Optional[datetime] = None
71+
anwendung_von: Optional[pydantic.AwareDatetime] = None
7272
"""
7373
Angabe des inklusiven Zeitpunkts, ab dem der Tarif bzw. der Preis angewendet und abgerechnet wird,
7474
z.B. "2021-07-20T18:31:48Z"

src/bo4e/bo/tarifpreisblatt.py

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

5-
from datetime import datetime
65
from typing import Annotated, Optional
76

7+
import pydantic
88
from pydantic import Field
99

1010
from ..com.aufabschlag import AufAbschlag
@@ -37,7 +37,7 @@ class Tarifpreisblatt(Tarifinfo):
3737
typ: Annotated[Optional[Typ], Field(alias="_typ")] = Typ.TARIFPREISBLATT
3838
# required attributes (additional to those of Tarifinfo)
3939
#: Gibt an, wann der Preis zuletzt angepasst wurde
40-
preisstand: Optional[datetime] = None
40+
preisstand: Optional[pydantic.AwareDatetime] = None
4141
#: Die festgelegten Preise, z.B. für Arbeitspreis, Grundpreis etc.
4242
tarifpreise: Optional[list[Tarifpreisposition]] = None
4343
#: Für die Berechnung der Kosten sind die hier abgebildeten Parameter heranzuziehen

src/bo4e/bo/vertrag.py

Lines changed: 3 additions & 3 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 datetime
76
from typing import Annotated, Optional
87

8+
import pydantic
99
from pydantic import Field
1010

1111
from ..com.unterschrift import Unterschrift
@@ -51,9 +51,9 @@ class Vertrag(Geschaeftsobjekt):
5151
#: Unterscheidungsmöglichkeiten für die Sparte
5252
sparte: Optional[Sparte] = None
5353
#: Gibt an, wann der Vertrag beginnt (inklusiv)
54-
vertragsbeginn: Optional[datetime] = None
54+
vertragsbeginn: Optional[pydantic.AwareDatetime] = None
5555
#: Gibt an, wann der Vertrag (voraussichtlich) endet oder beendet wurde (exklusiv)
56-
vertragsende: Optional[datetime] = None
56+
vertragsende: Optional[pydantic.AwareDatetime] = None
5757
# todo: add von/bis validator
5858
vertragspartner1: Optional[Geschaeftspartner] = None
5959
"""

0 commit comments

Comments
 (0)