Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 3 additions & 7 deletions src/bo4e/com/adresse.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"""

import attr
from marshmallow import fields, post_load
from marshmallow import fields
from marshmallow_enum import EnumField # type:ignore[import]

from bo4e.com.com import COM, COMSchema
Expand Down Expand Up @@ -51,6 +51,8 @@ class AdresseSchema(COMSchema):
Schema for de-/serialization of Adresse.
"""

class_name = Adresse

# required attributes
postleitzahl = fields.Str()
ort = fields.Str()
Expand All @@ -62,9 +64,3 @@ class AdresseSchema(COMSchema):
adresszusatz = fields.Str(load_default=None)
co_ergaenzung = fields.Str(load_default=None)
landescode = EnumField(Landescode)

# pylint: disable=no-self-use
@post_load
def deserialize(self, data, **kwargs) -> Adresse:
"""Deserialize JSON to Adresse object"""
return Adresse(**data)
9 changes: 2 additions & 7 deletions src/bo4e/com/angebotsposition.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"""

import attr
from marshmallow import fields, post_load
from marshmallow import fields

from bo4e.com.betrag import Betrag, BetragSchema
from bo4e.com.com import COM, COMSchema
Expand Down Expand Up @@ -44,14 +44,9 @@ class AngebotspositionSchema(COMSchema):
Schema for de-/serialization of Angebotsposition.
"""

class_name = Angebotsposition
# required attributes
positionsbezeichnung = fields.String()
positionspreis = fields.Nested(PreisSchema)
positionsmenge = fields.Nested(MengeSchema, load_default=None)
positionskosten = fields.Nested(BetragSchema, load_default=None)

# pylint: disable=no-self-use, unused-argument
@post_load
def deserialize(self, data, **kwargs) -> Angebotsposition:
"""Deserialize JSON to Angebotsposition object"""
return Angebotsposition(**data)
9 changes: 2 additions & 7 deletions src/bo4e/com/angebotsteil.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
from typing import List, Optional

import attr
from marshmallow import fields, post_load
from marshmallow import fields

from bo4e.bo.marktlokation import Marktlokation, MarktlokationSchema
from bo4e.com.angebotsposition import Angebotsposition, AngebotspositionSchema
Expand Down Expand Up @@ -77,6 +77,7 @@ class AngebotsteilSchema(COMSchema):
Schema for de-/serialization of Angebotsteil.
"""

class_name = Angebotsteil
# required attributes
positionen = fields.List(fields.Nested(AngebotspositionSchema))

Expand All @@ -86,9 +87,3 @@ class AngebotsteilSchema(COMSchema):
gesamtmengeangebotsteil = fields.Nested(MengeSchema, load_default=None)
gesamtkostenangebotsteil = fields.Nested(BetragSchema, load_default=None)
lieferzeitraum = fields.Nested(ZeitraumSchema, load_default=None)

# pylint: disable=no-self-use, unused-argument
@post_load
def deserialize(self, data, **kwargs) -> Angebotsteil:
"""Deserialize JSON to Angebotsteil object"""
return Angebotsteil(**data)
11 changes: 3 additions & 8 deletions src/bo4e/com/aufabschlag.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
from typing import List, Optional

import attr
from marshmallow import fields, post_load
from marshmallow import fields
from marshmallow_enum import EnumField # type:ignore[import]

from bo4e.com.com import COM, COMSchema
Expand Down Expand Up @@ -64,9 +64,10 @@ class AufAbschlag(COM):

class AufAbschlagSchema(COMSchema):
"""
Schema for de-/serialization of AufAbschlag.
Schema for de-/serialization of AufAbschlag
"""

class_name = AufAbschlag
# required attributes
bezeichnung = fields.Str()
staffeln = fields.List(fields.Nested(PreisstaffelSchema))
Expand All @@ -78,9 +79,3 @@ class AufAbschlagSchema(COMSchema):
einheit = EnumField(Waehrungseinheit, allow_none=True)
website = fields.Str(load_default=None)
gueltigkeitszeitraum = fields.Nested(ZeitraumSchema, load_default=None)

# pylint: disable=no-self-use, unused-argument
@post_load
def deserialize(self, data, **kwargs) -> AufAbschlag:
"""Deserialize JSON to AufAbschlag object"""
return AufAbschlag(**data)
11 changes: 3 additions & 8 deletions src/bo4e/com/aufabschlagproort.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
from typing import List

import attr
from marshmallow import fields, post_load
from marshmallow import fields

from bo4e.com.aufabschlagstaffelproort import AufAbschlagstaffelProOrt, AufAbschlagstaffelProOrtSchema
from bo4e.com.com import COM, COMSchema
Expand Down Expand Up @@ -36,17 +36,12 @@ class AufAbschlagProOrt(COM):

class AufAbschlagProOrtSchema(COMSchema):
"""
Schema for de-/serialization of AufAbschlagProOrt.
Schema for de-/serialization of AufAbschlagProOrt
"""

class_name = AufAbschlagProOrt
# required attributes
postleitzahl = fields.Str()
ort = fields.Str()
netznr = fields.Str()
staffeln = fields.List(fields.Nested(AufAbschlagstaffelProOrtSchema))

# pylint: disable=no-self-use, unused-argument
@post_load
def deserialize(self, data, **kwargs) -> AufAbschlagProOrt:
"""Deserialize JSON to AufAbschlagstaffelProOrt object"""
return AufAbschlagProOrt(**data)
9 changes: 2 additions & 7 deletions src/bo4e/com/aufabschlagregional.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
from typing import List, Optional

import attr
from marshmallow import fields, post_load
from marshmallow import fields
from marshmallow_enum import EnumField # type:ignore[import]

from bo4e.com.aufabschlagproort import AufAbschlagProOrt, AufAbschlagProOrtSchema
Expand Down Expand Up @@ -119,6 +119,7 @@ class AufAbschlagRegionalSchema(COMSchema):
Schema for de-/serialization of AufAbschlagRegional.
"""

class_name = AufAbschlagRegional
# required attributes
bezeichnung = fields.Str()
betraege = fields.List(fields.Nested(AufAbschlagProOrtSchema))
Expand All @@ -137,9 +138,3 @@ class AufAbschlagRegionalSchema(COMSchema):
vertagskonditionsaenderung = fields.Nested(VertragskonditionenSchema, load_default=None)
garantieaenderung = fields.Nested(PreisgarantieSchema, load_default=None)
einschraenkungsaenderung = fields.Nested(TarifeinschraenkungSchema, load_default=None)

# pylint: disable=no-self-use, unused-argument
@post_load
def deserialize(self, data, **kwargs) -> AufAbschlagRegional:
"""Deserialize JSON to AufAbschlagRegional object"""
return AufAbschlagRegional(**data)
9 changes: 2 additions & 7 deletions src/bo4e/com/aufabschlagstaffelproort.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
from decimal import Decimal

import attr
from marshmallow import fields, post_load
from marshmallow import fields

from bo4e.com.com import COM, COMSchema

Expand All @@ -32,13 +32,8 @@ class AufAbschlagstaffelProOrtSchema(COMSchema):
Schema for de-/serialization of AufAbschlagstaffelProOrt.
"""

class_name = AufAbschlagstaffelProOrt
# required attributes
wert = fields.Decimal(as_string=True)
staffelgrenze_von = fields.Decimal(as_string=True)
staffelgrenze_bis = fields.Decimal(as_string=True)

# pylint: disable=no-self-use, unused-argument
@post_load
def deserialize(self, data, **kwargs) -> AufAbschlagstaffelProOrt:
"""Deserialize JSON to AufAbschlagstaffelProOrt object"""
return AufAbschlagstaffelProOrt(**data)
9 changes: 2 additions & 7 deletions src/bo4e/com/ausschreibungsdetail.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
from typing import Optional

import attr
from marshmallow import fields, post_load
from marshmallow import fields
from marshmallow_enum import EnumField # type:ignore[import]

from bo4e.com.adresse import Adresse, AdresseSchema
Expand Down Expand Up @@ -87,6 +87,7 @@ class AusschreibungsdetailSchema(COMSchema):
Schema for de-/serialization of Ausschreibungsdetail
"""

class_name = Ausschreibungsdetail
# required attributes
lokations_id = fields.Str()
netzebene_lieferung = EnumField(Netzebene)
Expand All @@ -105,9 +106,3 @@ class AusschreibungsdetailSchema(COMSchema):
prognose_arbeit_lieferzeitraum = fields.Nested(MengeSchema, allow_none=True)
prognose_leistung = fields.Nested(MengeSchema, allow_none=True)
rechnungsadresse = fields.Nested(AdresseSchema, allow_none=True)

# pylint: disable=no-self-use, unused-argument
@post_load
def deserialize(self, data, **kwargs) -> Ausschreibungsdetail:
"""Deserialize JSON to Ausschreibungsdetail object"""
return Ausschreibungsdetail(**data)
14 changes: 4 additions & 10 deletions src/bo4e/com/betrag.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,14 @@
from decimal import Decimal

import attr
from marshmallow import fields, post_load
from marshmallow import fields
from marshmallow_enum import EnumField # type:ignore[import]

from bo4e.com.com import COM, COMSchema

# pylint: disable=too-few-public-methods
from bo4e.enum.waehrungscode import Waehrungscode


# pylint: disable=too-few-public-methods
@attr.s(auto_attribs=True, kw_only=True)
class Betrag(COM):
"""
Expand All @@ -31,15 +30,10 @@ class Betrag(COM):

class BetragSchema(COMSchema):
"""
Schema for de-/serialization of Betrag.
Schema for de-/serialization of Betrag
"""

class_name = Betrag
# required attributes
wert = fields.Decimal(as_string=True)
waehrung = EnumField(Waehrungscode)

# pylint: disable=no-self-use, unused-argument
@post_load
def deserialize(self, data, **kwargs) -> Betrag:
"""Deserialize JSON to Betrag object"""
return Betrag(**data)
19 changes: 18 additions & 1 deletion src/bo4e/com/com.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
"""
Contains base class for all components
"""
from typing import TypeVar, Generic, Type

import attr
from marshmallow import post_load

from bo4e.schemata.caseconverterschema import CaseConverterSchema

Expand All @@ -14,8 +17,22 @@ class COM:
"""


class COMSchema(CaseConverterSchema):
#: Any type derived from COM including those that do not directly inherit from COM
TCom = TypeVar("TCom", bound=Type[COM])
# todo: find out if this way of typing is correct


class COMSchema(CaseConverterSchema, Generic[TCom]):
"""
This is a base class.
All components objects schemata are inherited from this class.
"""

#: class_name is needed to use the correct schema for deserialization
class_name: TCom

@post_load
# pylint:disable=unused-argument
def deserialize(self, data, **kwargs) -> TCom:
"""Deserialize JSON to python object."""
return type(self).class_name(**data) # type:ignore[return-value,call-arg]
9 changes: 2 additions & 7 deletions src/bo4e/com/dienstleistung.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"""

import attr
from marshmallow import fields, post_load
from marshmallow import fields
from marshmallow_enum import EnumField # type:ignore[import]

from bo4e.com.com import COM, COMSchema
Expand All @@ -28,12 +28,7 @@ class DienstleistungSchema(COMSchema):
Schema for de-/serialization of Dienstleistung.
"""

class_name = Dienstleistung
# required attributes
dienstleistungstyp = EnumField(Dienstleistungstyp)
bezeichnung = fields.Str()

# pylint: disable=no-self-use, unused-argument
@post_load
def deserialize(self, data, **kwargs) -> Dienstleistung:
"""Deserialize JSON to Dienstleistung object"""
return Dienstleistung(**data)
9 changes: 2 additions & 7 deletions src/bo4e/com/energieherkunft.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
from decimal import Decimal

import attr
from marshmallow import fields, post_load
from marshmallow import fields
from marshmallow_enum import EnumField # type:ignore[import]

from bo4e.com.com import COM, COMSchema
Expand Down Expand Up @@ -39,12 +39,7 @@ class EnergieherkunftSchema(COMSchema):
Schema for de-/serialization of Energieherkunft.
"""

class_name = Energieherkunft
# required attributes
erzeugungsart = EnumField(Erzeugungsart)
anteil_prozent = fields.Decimal(as_string=True)

# pylint: disable=no-self-use, unused-argument
@post_load
def deserialize(self, data, **kwargs) -> Energieherkunft:
"""Deserialize JSON to Energieherkunft object"""
return Energieherkunft(**data)
9 changes: 2 additions & 7 deletions src/bo4e/com/energiemix.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
from typing import List

import attr
from marshmallow import fields, post_load
from marshmallow import fields
from marshmallow_enum import EnumField # type:ignore[import]

from bo4e.com.com import COM, COMSchema
Expand Down Expand Up @@ -61,6 +61,7 @@ class EnergiemixSchema(COMSchema):
Schema for de-/serialization of Energiemix.
"""

class_name = Energiemix
# required attributes
energiemixnummer = fields.Int()
energieart = EnumField(Sparte)
Expand All @@ -76,9 +77,3 @@ class EnergiemixSchema(COMSchema):
oekolabel = fields.List(EnumField(Oekolabel), load_default=None)
oeko_top_ten = fields.Bool(load_default=None)
website = fields.Str(load_default=None)

# pylint: disable=no-self-use, unused-argument
@post_load
def deserialize(self, data, **kwargs) -> Energiemix:
"""Deserialize JSON to Energiemix object"""
return Energiemix(**data)
9 changes: 2 additions & 7 deletions src/bo4e/com/externereferenz.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
and corresponding marshmallow schema for de-/serialization
"""
import attr
from marshmallow import fields, post_load
from marshmallow import fields

from bo4e.com.com import COM, COMSchema

Expand All @@ -28,11 +28,6 @@ class ExterneReferenzSchema(COMSchema):
Inherits from Schema and JavaScriptMixin.
"""

class_name = ExterneReferenz
ex_ref_name = fields.Str()
ex_ref_wert = fields.Str()

# pylint: disable=no-self-use, unused-argument
@post_load
def deserialize(self, data, **kwargs) -> ExterneReferenz:
"""Deserialize JSON to ExterneReferenz object"""
return ExterneReferenz(**data)
Loading