From 8c3e0b264bd37f9aa678dc0c21f83cf804fc8dcf Mon Sep 17 00:00:00 2001 From: konstantin Date: Mon, 18 Oct 2021 10:10:32 +0200 Subject: [PATCH 1/6] =?UTF-8?q?=F0=9F=9A=A8=20Add=20and=20check=20static?= =?UTF-8?q?=20type=20hints=20using=20mypy=20(#65)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/linting.yml | 5 +- pyproject.toml | 2 +- src/bo4e/bo/ansprechpartner.py | 8 +- src/bo4e/bo/geschaeftsobjekt.py | 18 +++- src/bo4e/bo/geschaeftspartner.py | 23 ++-- src/bo4e/bo/marktlokation.py | 4 +- src/bo4e/bo/marktteilnehmer.py | 5 +- src/bo4e/bo/messlokation.py | 4 +- src/bo4e/bo/vertrag.py | 10 +- src/bo4e/bo/zaehler.py | 3 +- src/bo4e/com/adresse.py | 5 +- src/bo4e/com/com.py | 2 + src/bo4e/com/dienstleistung.py | 4 +- src/bo4e/com/externereferenz.py | 1 + src/bo4e/com/hardware.py | 4 +- src/bo4e/com/katasteradresse.py | 1 + src/bo4e/com/menge.py | 3 +- src/bo4e/com/messlokationszuordnung.py | 3 +- src/bo4e/com/rufnummer.py | 4 +- src/bo4e/com/unterschrift.py | 3 + src/bo4e/com/vertragskonditionen.py | 3 + src/bo4e/com/vertragsteil.py | 5 +- src/bo4e/com/zaehlwerk.py | 2 +- src/bo4e/com/zeitraum.py | 7 +- src/bo4e/com/zustaendigkeit.py | 8 +- src/bo4e/enum/anrede.py | 18 ++-- src/bo4e/enum/arithmetische_operation.py | 16 +-- src/bo4e/enum/bilanzierungsmethode.py | 18 ++-- src/bo4e/enum/botyp.py | 64 +++++------ src/bo4e/enum/dienstleistungstyp.py | 87 ++++++++------- src/bo4e/enum/energierichtung.py | 3 +- src/bo4e/enum/gasqualitaet.py | 12 ++- src/bo4e/enum/gebiettyp.py | 26 ++--- src/bo4e/enum/geraetetyp.py | 97 +++++++++-------- src/bo4e/enum/geschaeftspartnerrolle.py | 18 ++-- src/bo4e/enum/kontaktart.py | 18 ++-- src/bo4e/enum/landescode.py | 4 +- src/bo4e/enum/marktrolle.py | 36 ++++--- src/bo4e/enum/mengeneinheit.py | 36 ++++--- src/bo4e/enum/netzebene.py | 28 ++--- src/bo4e/enum/rollencodetyp.py | 14 +-- src/bo4e/enum/rufnummernart.py | 26 ++--- src/bo4e/enum/sparte.py | 20 ++-- src/bo4e/enum/tarifart.py | 18 ++-- src/bo4e/enum/themengebiet.py | 130 +++++++++++------------ src/bo4e/enum/titel.py | 14 +-- src/bo4e/enum/verbrauchsart.py | 18 ++-- src/bo4e/enum/vertragsart.py | 18 ++-- src/bo4e/enum/vertragsstatus.py | 26 ++--- src/bo4e/enum/zaehlerauspraegung.py | 12 ++- src/bo4e/enum/zaehlertyp.py | 26 ++--- src/bo4e/enum/zeiteinheit.py | 28 ++--- src/bo4e/schemata/caseconverterschema.py | 2 +- tests/test_adresse.py | 1 + tests/test_case_conversions.py | 3 +- tests/test_geokoordinaten.py | 1 + tests/test_geschaeftsobjekt.py | 1 + tests/test_geschaeftspartner.py | 1 + tests/test_marktlokation.py | 1 + tests/test_menge.py | 2 + tests/test_messlokationszuordnung.py | 5 +- tests/test_unterschrift.py | 2 + tests/test_vertrag.py | 12 ++- tests/test_vertragskonditionen.py | 1 + tests/test_vertragsteil.py | 2 + tests/test_zaehler.py | 1 + tox.ini | 10 ++ 67 files changed, 568 insertions(+), 445 deletions(-) diff --git a/.github/workflows/linting.yml b/.github/workflows/linting.yml index 3a64a265c..df55b62d5 100644 --- a/.github/workflows/linting.yml +++ b/.github/workflows/linting.yml @@ -8,6 +8,7 @@ jobs: matrix: python-version: [ 3.8 ] os: [ ubuntu-latest ] + linter-env: ["linting", "type_check"] steps: - uses: actions/checkout@v2 - name: Set up Python ${{ matrix.python-version }} @@ -18,6 +19,6 @@ jobs: run: | python -m pip install --upgrade pip pip install tox - - name: Linting bo4e + - name: Run ${{ matrix.linter-env }} run: | - tox -e linting + tox -e ${{ matrix.linter-env }} diff --git a/pyproject.toml b/pyproject.toml index 4ff0d6ae3..79a35cb2b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -15,4 +15,4 @@ markers = ["datafiles: load datafiles"] max-line-length = 120 [tool.isort] -line_length = 120 \ No newline at end of file +line_length = 120 diff --git a/src/bo4e/bo/ansprechpartner.py b/src/bo4e/bo/ansprechpartner.py index bd745b5b6..b87f0853f 100644 --- a/src/bo4e/bo/ansprechpartner.py +++ b/src/bo4e/bo/ansprechpartner.py @@ -4,16 +4,18 @@ """ import attr from marshmallow import fields -from marshmallow_enum import EnumField -from bo4e.com.rufnummer import Rufnummer, RufnummerSchema -from bo4e.com.adresse import Adresse, AdresseSchema +from marshmallow_enum import EnumField # type:ignore + from bo4e.bo.geschaeftsobjekt import Geschaeftsobjekt, GeschaeftsobjektSchema from bo4e.bo.geschaeftspartner import Geschaeftspartner, GeschaeftspartnerSchema +from bo4e.com.adresse import Adresse, AdresseSchema +from bo4e.com.rufnummer import Rufnummer, RufnummerSchema from bo4e.com.zustaendigkeit import Zustaendigkeit, ZustaendigkeitSchema from bo4e.enum.anrede import Anrede from bo4e.enum.botyp import BoTyp from bo4e.enum.titel import Titel + # pylint: disable=too-many-instance-attributes, too-few-public-methods @attr.s(auto_attribs=True, kw_only=True) class Ansprechpartner(Geschaeftsobjekt): diff --git a/src/bo4e/bo/geschaeftsobjekt.py b/src/bo4e/bo/geschaeftsobjekt.py index b0b04614f..33efb3ed4 100644 --- a/src/bo4e/bo/geschaeftsobjekt.py +++ b/src/bo4e/bo/geschaeftsobjekt.py @@ -3,16 +3,26 @@ and corresponding marshmallow schema for de-/serialization """ # pylint: disable=unused-argument, too-few-public-methods -from typing import List, Optional +from typing import List, Optional, Type import attr from marshmallow import fields, post_load -from marshmallow_enum import EnumField +from marshmallow_enum import EnumField # type:ignore + from bo4e.com.externereferenz import ExterneReferenz, ExterneReferenzSchema from bo4e.enum.botyp import BoTyp from bo4e.schemata.caseconverterschema import CaseConverterSchema +def _create_empty_referenzen_list() -> List[ExterneReferenz]: + """ + A method with a type hint to please mypy + https://stackoverflow.com/a/61281305/10009545 + :return: + """ + return [] + + @attr.s(auto_attribs=True, kw_only=True) class Geschaeftsobjekt: """ @@ -25,7 +35,7 @@ class Geschaeftsobjekt: # optional attributes externe_referenzen: Optional[List[ExterneReferenz]] = attr.ib( - default=[], validator=attr.validators.instance_of(List) + default=_create_empty_referenzen_list(), validator=attr.validators.instance_of(List) # type:ignore ) @@ -36,7 +46,7 @@ class GeschaeftsobjektSchema(CaseConverterSchema): """ # class_name is needed to use the correct schema for deserialization. - class_name = Geschaeftsobjekt + class_name: Type[Geschaeftsobjekt] = Geschaeftsobjekt # required attributes versionstruktur = fields.String() diff --git a/src/bo4e/bo/geschaeftspartner.py b/src/bo4e/bo/geschaeftspartner.py index cc996c3d1..a223f81fc 100644 --- a/src/bo4e/bo/geschaeftspartner.py +++ b/src/bo4e/bo/geschaeftspartner.py @@ -3,11 +3,12 @@ and corresponding marshmallow schema for de-/serialization """ # pylint: disable=too-many-instance-attributes, too-few-public-methods -from typing import List +from typing import List, Optional, Type import attr from marshmallow import fields -from marshmallow_enum import EnumField +from marshmallow_enum import EnumField # type:ignore + from bo4e.bo.geschaeftsobjekt import Geschaeftsobjekt, GeschaeftsobjektSchema from bo4e.com.adresse import Adresse, AdresseSchema from bo4e.enum.anrede import Anrede @@ -30,15 +31,15 @@ class Geschaeftspartner(Geschaeftsobjekt): # optional attributes anrede: Anrede = attr.ib(default=None) - name2: str = attr.ib(default=None) - name3: str = attr.ib(default=None) - hrnummer: str = attr.ib(default=None) - amtsgericht: str = attr.ib(default=None) + name2: Optional[str] = attr.ib(default=None) + name3: Optional[str] = attr.ib(default=None) + hrnummer: Optional[str] = attr.ib(default=None) + amtsgericht: Optional[str] = attr.ib(default=None) kontaktweg: List[Kontaktart] = attr.ib(default=[]) - umsatzsteuer_id: str = attr.ib(default=None) - glaeubiger_id: str = attr.ib(default=None) - e_mail_adresse: str = attr.ib(default=None) - website: str = attr.ib(default=None) + umsatzsteuer_id: Optional[str] = attr.ib(default=None) + glaeubiger_id: Optional[str] = attr.ib(default=None) + e_mail_adresse: Optional[str] = attr.ib(default=None) + website: Optional[str] = attr.ib(default=None) partneradresse: Adresse = attr.ib(default=None) @@ -49,7 +50,7 @@ class GeschaeftspartnerSchema(GeschaeftsobjektSchema): # class_name is needed to use the correct schema for deserialisation. # see function `deserialize` in geschaeftsobjekt.py - class_name = Geschaeftspartner + class_name: Type[Geschaeftspartner] = Geschaeftspartner # required attributes name1 = fields.Str() diff --git a/src/bo4e/bo/marktlokation.py b/src/bo4e/bo/marktlokation.py index 93f8075db..7c7682728 100644 --- a/src/bo4e/bo/marktlokation.py +++ b/src/bo4e/bo/marktlokation.py @@ -6,7 +6,8 @@ import attr from marshmallow import fields -from marshmallow_enum import EnumField +from marshmallow_enum import EnumField # type:ignore + from bo4e.bo.geschaeftsobjekt import Geschaeftsobjekt, GeschaeftsobjektSchema from bo4e.bo.geschaeftspartner import Geschaeftspartner, GeschaeftspartnerSchema from bo4e.com.adresse import Adresse, AdresseSchema @@ -22,7 +23,6 @@ from bo4e.enum.sparte import Sparte from bo4e.enum.verbrauchsart import Verbrauchsart - _malo_id_pattern = re.compile(r"^[1-9][\d]{10}$") diff --git a/src/bo4e/bo/marktteilnehmer.py b/src/bo4e/bo/marktteilnehmer.py index c253a428f..d031bfc30 100644 --- a/src/bo4e/bo/marktteilnehmer.py +++ b/src/bo4e/bo/marktteilnehmer.py @@ -3,9 +3,10 @@ and corresponding marshmallow schema for de-/serialization """ import attr -from marshmallow import fields -from marshmallow_enum import EnumField from attr.validators import matches_re +from marshmallow import fields +from marshmallow_enum import EnumField # type:ignore + from bo4e.bo.geschaeftspartner import Geschaeftspartner, GeschaeftspartnerSchema from bo4e.enum.botyp import BoTyp from bo4e.enum.marktrolle import Marktrolle diff --git a/src/bo4e/bo/messlokation.py b/src/bo4e/bo/messlokation.py index 518df6c59..84eea07cb 100644 --- a/src/bo4e/bo/messlokation.py +++ b/src/bo4e/bo/messlokation.py @@ -6,9 +6,9 @@ from typing import List, Optional import attr -from iso3166 import countries +from iso3166 import countries # type:ignore from marshmallow import fields -from marshmallow_enum import EnumField +from marshmallow_enum import EnumField # type:ignore from bo4e.bo.geschaeftsobjekt import Geschaeftsobjekt, GeschaeftsobjektSchema from bo4e.bo.zaehler import Zaehler, ZaehlerSchema diff --git a/src/bo4e/bo/vertrag.py b/src/bo4e/bo/vertrag.py index 6b55b703c..0b16bb98f 100644 --- a/src/bo4e/bo/vertrag.py +++ b/src/bo4e/bo/vertrag.py @@ -4,19 +4,21 @@ """ from datetime import datetime from typing import List, Optional + import attr from marshmallow import fields -from marshmallow_enum import EnumField +from marshmallow_enum import EnumField # type:ignore from bo4e.bo.geschaeftsobjekt import Geschaeftsobjekt, GeschaeftsobjektSchema from bo4e.bo.geschaeftspartner import Geschaeftspartner, GeschaeftspartnerSchema -from bo4e.com.vertragsteil import Vertragsteil, VertragsteilSchema -from bo4e.com.vertragskonditionen import Vertragskonditionen, VertragskonditionenSchema from bo4e.com.unterschrift import Unterschrift, UnterschriftSchema +from bo4e.com.vertragskonditionen import Vertragskonditionen, VertragskonditionenSchema +from bo4e.com.vertragsteil import Vertragsteil, VertragsteilSchema from bo4e.enum.botyp import BoTyp +from bo4e.enum.sparte import Sparte from bo4e.enum.vertragsart import Vertragsart from bo4e.enum.vertragsstatus import Vertragsstatus -from bo4e.enum.sparte import Sparte + # pylint: disable=unused-argument def at_least_one_vertragsteil(instance, attribute, value): diff --git a/src/bo4e/bo/zaehler.py b/src/bo4e/bo/zaehler.py index 70eba8a55..3f5dd144b 100644 --- a/src/bo4e/bo/zaehler.py +++ b/src/bo4e/bo/zaehler.py @@ -8,7 +8,7 @@ import attr from marshmallow import fields -from marshmallow_enum import EnumField +from marshmallow_enum import EnumField # type:ignore from bo4e.bo.geschaeftsobjekt import Geschaeftsobjekt, GeschaeftsobjektSchema from bo4e.bo.geschaeftspartner import Geschaeftspartner, GeschaeftspartnerSchema @@ -19,6 +19,7 @@ from bo4e.enum.zaehlerauspraegung import Zaehlerauspraegung from bo4e.enum.zaehlertyp import Zaehlertyp + # pylint: disable=unused-argument def at_least_one_zaehlwerk(instance, attribute, value): """ diff --git a/src/bo4e/com/adresse.py b/src/bo4e/com/adresse.py index fcccea202..0efb013da 100644 --- a/src/bo4e/com/adresse.py +++ b/src/bo4e/com/adresse.py @@ -5,7 +5,8 @@ import attr from marshmallow import fields, post_load -from marshmallow_enum import EnumField +from marshmallow_enum import EnumField # type:ignore + from bo4e.com.com import COM, COMSchema from bo4e.enum.landescode import Landescode @@ -42,7 +43,7 @@ class Adresse(COM): postfach: str = attr.ib(default=None, validator=strasse_xor_postfach) adresszusatz: str = attr.ib(default=None) co_ergaenzung: str = attr.ib(default=None) - landescode: Landescode = attr.ib(default=Landescode.DE) + landescode: Landescode = attr.ib(default=Landescode.DE) # type:ignore class AdresseSchema(COMSchema): diff --git a/src/bo4e/com/com.py b/src/bo4e/com/com.py index 59c8397cd..c946a5676 100644 --- a/src/bo4e/com/com.py +++ b/src/bo4e/com/com.py @@ -2,8 +2,10 @@ Contains base class for all components """ import attr + from bo4e.schemata.caseconverterschema import CaseConverterSchema + # pylint: disable=too-few-public-methods @attr.s(auto_attribs=True, kw_only=True) class COM: diff --git a/src/bo4e/com/dienstleistung.py b/src/bo4e/com/dienstleistung.py index 5ecb3778f..ce06b17a0 100644 --- a/src/bo4e/com/dienstleistung.py +++ b/src/bo4e/com/dienstleistung.py @@ -5,10 +5,12 @@ import attr from marshmallow import fields, post_load -from marshmallow_enum import EnumField +from marshmallow_enum import EnumField # type:ignore + from bo4e.com.com import COM, COMSchema from bo4e.enum.dienstleistungstyp import Dienstleistungstyp + # pylint: disable=too-few-public-methods @attr.s(auto_attribs=True, kw_only=True) class Dienstleistung(COM): diff --git a/src/bo4e/com/externereferenz.py b/src/bo4e/com/externereferenz.py index 68037822c..3f03266c1 100644 --- a/src/bo4e/com/externereferenz.py +++ b/src/bo4e/com/externereferenz.py @@ -4,6 +4,7 @@ """ import attr from marshmallow import fields, post_load + from bo4e.com.com import COM, COMSchema diff --git a/src/bo4e/com/hardware.py b/src/bo4e/com/hardware.py index 296982c16..701fc8f50 100644 --- a/src/bo4e/com/hardware.py +++ b/src/bo4e/com/hardware.py @@ -5,10 +5,12 @@ import attr from marshmallow import fields, post_load -from marshmallow_enum import EnumField +from marshmallow_enum import EnumField # type:ignore + from bo4e.com.com import COM, COMSchema from bo4e.enum.geraetetyp import Geraetetyp + # pylint: disable=too-few-public-methods @attr.s(auto_attribs=True, kw_only=True) class Hardware(COM): diff --git a/src/bo4e/com/katasteradresse.py b/src/bo4e/com/katasteradresse.py index 0ac480d04..2b393e08f 100644 --- a/src/bo4e/com/katasteradresse.py +++ b/src/bo4e/com/katasteradresse.py @@ -4,6 +4,7 @@ """ import attr from marshmallow import fields, post_load + from bo4e.com.com import COM, COMSchema diff --git a/src/bo4e/com/menge.py b/src/bo4e/com/menge.py index 00792fe25..c93c1cb0b 100644 --- a/src/bo4e/com/menge.py +++ b/src/bo4e/com/menge.py @@ -7,11 +7,12 @@ import attr from marshmallow import fields, post_load -from marshmallow_enum import EnumField +from marshmallow_enum import EnumField # type:ignore from bo4e.com.com import COM, COMSchema from bo4e.enum.mengeneinheit import Mengeneinheit + # pylint: disable=too-few-public-methods @attr.s(auto_attribs=True, kw_only=True) class Menge(COM): diff --git a/src/bo4e/com/messlokationszuordnung.py b/src/bo4e/com/messlokationszuordnung.py index e9514abac..ff5493a3b 100644 --- a/src/bo4e/com/messlokationszuordnung.py +++ b/src/bo4e/com/messlokationszuordnung.py @@ -6,7 +6,8 @@ import attr from marshmallow import fields, post_load -from marshmallow_enum import EnumField +from marshmallow_enum import EnumField # type:ignore + from bo4e.com.com import COM, COMSchema from bo4e.enum.arithmetische_operation import ArithmetischeOperation diff --git a/src/bo4e/com/rufnummer.py b/src/bo4e/com/rufnummer.py index a8ab61a6f..1acee7dea 100644 --- a/src/bo4e/com/rufnummer.py +++ b/src/bo4e/com/rufnummer.py @@ -5,10 +5,12 @@ import attr from marshmallow import fields, post_load -from marshmallow_enum import EnumField +from marshmallow_enum import EnumField # type:ignore + from bo4e.com.com import COM, COMSchema from bo4e.enum.rufnummernart import Rufnummernart + # pylint: disable=too-few-public-methods @attr.s(auto_attribs=True, kw_only=True) class Rufnummer(COM): diff --git a/src/bo4e/com/unterschrift.py b/src/bo4e/com/unterschrift.py index 865cbcc2c..c2fc5a655 100644 --- a/src/bo4e/com/unterschrift.py +++ b/src/bo4e/com/unterschrift.py @@ -3,10 +3,13 @@ and corresponding marshmallow schema for de-/serialization """ from datetime import datetime + import attr from marshmallow import fields, post_load + from bo4e.com.com import COM, COMSchema + # pylint: disable=too-few-public-methods @attr.s(auto_attribs=True, kw_only=True) class Unterschrift(COM): diff --git a/src/bo4e/com/vertragskonditionen.py b/src/bo4e/com/vertragskonditionen.py index eac11af48..c439df4f9 100644 --- a/src/bo4e/com/vertragskonditionen.py +++ b/src/bo4e/com/vertragskonditionen.py @@ -3,11 +3,14 @@ and corresponding marshmallow schema for de-/serialization """ from decimal import Decimal + import attr from marshmallow import fields, post_load + from bo4e.com.com import COM, COMSchema from bo4e.com.zeitraum import Zeitraum, ZeitraumSchema + # pylint: disable=too-few-public-methods @attr.s(auto_attribs=True, kw_only=True) class Vertragskonditionen(COM): diff --git a/src/bo4e/com/vertragsteil.py b/src/bo4e/com/vertragsteil.py index 6e689a934..2336510e0 100644 --- a/src/bo4e/com/vertragsteil.py +++ b/src/bo4e/com/vertragsteil.py @@ -2,13 +2,16 @@ Contains Vertragsteil class and corresponding marshmallow schema for de-/serialization """ -from typing import Optional from datetime import datetime +from typing import Optional + import attr from marshmallow import fields, post_load + from bo4e.com.com import COM, COMSchema from bo4e.com.menge import Menge, MengeSchema + # pylint: disable=too-few-public-methods @attr.s(auto_attribs=True, kw_only=True) class Vertragsteil(COM): diff --git a/src/bo4e/com/zaehlwerk.py b/src/bo4e/com/zaehlwerk.py index bdf787446..c140f7033 100644 --- a/src/bo4e/com/zaehlwerk.py +++ b/src/bo4e/com/zaehlwerk.py @@ -7,7 +7,7 @@ import attr from attr.validators import matches_re from marshmallow import fields, post_load -from marshmallow_enum import EnumField +from marshmallow_enum import EnumField # type:ignore from bo4e.com.com import COM, COMSchema from bo4e.enum.energierichtung import Energierichtung diff --git a/src/bo4e/com/zeitraum.py b/src/bo4e/com/zeitraum.py index ecef8f67f..258589b07 100644 --- a/src/bo4e/com/zeitraum.py +++ b/src/bo4e/com/zeitraum.py @@ -3,17 +3,18 @@ and corresponding marshmallow schema for de-/serialization """ -from typing import Optional -from decimal import Decimal from datetime import datetime +from decimal import Decimal +from typing import Optional import attr from marshmallow import fields, post_load -from marshmallow_enum import EnumField +from marshmallow_enum import EnumField # type:ignore from bo4e.com.com import COM, COMSchema from bo4e.enum.zeiteinheit import Zeiteinheit + # pylint: disable=unused-argument def time_range_possibilities(instance, attribute, value): """ diff --git a/src/bo4e/com/zustaendigkeit.py b/src/bo4e/com/zustaendigkeit.py index c64a86079..df682afe4 100644 --- a/src/bo4e/com/zustaendigkeit.py +++ b/src/bo4e/com/zustaendigkeit.py @@ -5,10 +5,12 @@ import attr from marshmallow import fields, post_load -from marshmallow_enum import EnumField +from marshmallow_enum import EnumField # type:ignore + from bo4e.com.com import COM, COMSchema from bo4e.enum.themengebiet import Themengebiet + # pylint: disable=too-few-public-methods @attr.s(auto_attribs=True, kw_only=True) class Zustaendigkeit(COM): @@ -33,8 +35,8 @@ class ZustaendigkeitSchema(COMSchema): themengebiet = EnumField(Themengebiet) # optional attributes - jobtitel: str = fields.Str(missing=None) - abteilung: str = fields.Str(missing=None) + jobtitel = fields.Str(missing=None) + abteilung = fields.Str(missing=None) # pylint: disable=no-self-use, unused-argument @post_load diff --git a/src/bo4e/enum/anrede.py b/src/bo4e/enum/anrede.py index f708f0b12..d98321ced 100644 --- a/src/bo4e/enum/anrede.py +++ b/src/bo4e/enum/anrede.py @@ -4,11 +4,13 @@ from enum import Enum -_anrede = { - "HERR": "HERR", - "FRAU": "FRAU", - "EHELEUTE": "EHELEUTE", - "FIRMA": "FIRMA", - "INDIVIDUELL": "INDIVIDUELL", -} -Anrede = Enum("Anrede", _anrede) +Anrede = Enum( + "Anrede", + { + "HERR": "HERR", + "FRAU": "FRAU", + "EHELEUTE": "EHELEUTE", + "FIRMA": "FIRMA", + "INDIVIDUELL": "INDIVIDUELL", + }, +) diff --git a/src/bo4e/enum/arithmetische_operation.py b/src/bo4e/enum/arithmetische_operation.py index 93c9da026..797cccad3 100644 --- a/src/bo4e/enum/arithmetische_operation.py +++ b/src/bo4e/enum/arithmetische_operation.py @@ -4,10 +4,12 @@ from enum import Enum -_arithmetische_operation = { - "ADDITION": "ADDITION", - "SUBTRAKTION": "SUBTRAKTION", - "MULTIPLIKATION": "MULTIPLIKATION", - "DIVISION": "DIVISION", -} -ArithmetischeOperation = Enum("ArithmetischeOperation", _arithmetische_operation) +ArithmetischeOperation = Enum( + "ArithmetischeOperation", + { + "ADDITION": "ADDITION", + "SUBTRAKTION": "SUBTRAKTION", + "MULTIPLIKATION": "MULTIPLIKATION", + "DIVISION": "DIVISION", + }, +) diff --git a/src/bo4e/enum/bilanzierungsmethode.py b/src/bo4e/enum/bilanzierungsmethode.py index cee56bf3e..53690fc66 100644 --- a/src/bo4e/enum/bilanzierungsmethode.py +++ b/src/bo4e/enum/bilanzierungsmethode.py @@ -3,11 +3,13 @@ """ from enum import Enum -_bilanzierungsmethode = { - "RLM": "RLM", # Registrierende Leistungsmessung - "SLP": "SLP", # Standard Lastprofil - "TLP_GEMEINSAM": "TLP_GEMEINSAM", # TLP gemeinsame Messung - "TLP_GETRENNT": "TLP_GETRENNT", # TLP getrennte Messung - "PAUSCHAL": "PAUSCHAL", # Pauschale Betrachtung (Band) -} -Bilanzierungsmethode = Enum("Bilanzierungsmethode", _bilanzierungsmethode) +Bilanzierungsmethode = Enum( + "Bilanzierungsmethode", + { + "RLM": "RLM", # Registrierende Leistungsmessung + "SLP": "SLP", # Standard Lastprofil + "TLP_GEMEINSAM": "TLP_GEMEINSAM", # TLP gemeinsame Messung + "TLP_GETRENNT": "TLP_GETRENNT", # TLP getrennte Messung + "PAUSCHAL": "PAUSCHAL", # Pauschale Betrachtung (Band) + }, +) diff --git a/src/bo4e/enum/botyp.py b/src/bo4e/enum/botyp.py index fb6063df1..ea852a3b9 100644 --- a/src/bo4e/enum/botyp.py +++ b/src/bo4e/enum/botyp.py @@ -4,34 +4,36 @@ from enum import Enum -_boTyp = { - "ANGEBOT": "ANGEBOT", - "ANSPRECHPARTNER": "ANSPRECHPARTNER", - "AUSSCHREIBUNG": "AUSSCHREIUNG", - "ENERGIEMENGE": "ENERGIEMENGE", - # It is practical to use the BoTyp Enum as discriminator in the database. - # Therefore we added one additional entry for GESCHAEFTSOBJEKT - # This is not defined by the documentation! - "GESCHAEFTSOBJEKT": "GESCHAEFTSOBJEKT", - "GESCHAEFTSPARTNER": "GESCHAEFTSPARTNER", - "KOSTEN": "KOSTEN", - "MARKTLOKATION": "MARKTLOKATION", - "MESSLOKATION": "MESSLOKATION", - "MARKTTEILNEHMER": "MARKTTEILNEHMER", - "NETZNUTZUNGSRECHNUNG": "NETZNUTZUNGSRECHNUNG", - "PREISBLATT": "PREISBLATT", - "PREISBLATTDIENSTLEISTUNG": "PREISBLATTDIENSTLEISTUNG", - "PREISBLATTKONZESSIONSABGABE": "PREISBLATTKONZESSIONSABGABE", - "PREISBLATTMESSUNG": "PREISBLATTMESSUNG", - "PREISBLATTNETZNUTZUNG": "PREISBLATTNETZNUTZUNG", - "PREISBLATTUMLAGEN": "PREISBLATTUMLAGEN", - "RECHNUNG": "RECHNUNG", - "REGIONALTARIF": "REGIONALTARIF", - "TARIFINFO": "TARIFINFO", - "TARIFKOSTEN": "TARIFKOSTEN", - "TARIFPREISBLATT": "TARIFPREISBLATT", - "VERTRAG": "VERTRAG", - "ZAEHLER": "ZAEHLER", - "ZEITREIHE": "ZEITREIHE", -} -BoTyp = Enum("BoTyp", _boTyp) +BoTyp = Enum( + "BoTyp", + { + "ANGEBOT": "ANGEBOT", + "ANSPRECHPARTNER": "ANSPRECHPARTNER", + "AUSSCHREIBUNG": "AUSSCHREIUNG", + "ENERGIEMENGE": "ENERGIEMENGE", + # It is practical to use the BoTyp Enum as discriminator in the database. + # Therefore we added one additional entry for GESCHAEFTSOBJEKT + # This is not defined by the documentation! + "GESCHAEFTSOBJEKT": "GESCHAEFTSOBJEKT", + "GESCHAEFTSPARTNER": "GESCHAEFTSPARTNER", + "KOSTEN": "KOSTEN", + "MARKTLOKATION": "MARKTLOKATION", + "MESSLOKATION": "MESSLOKATION", + "MARKTTEILNEHMER": "MARKTTEILNEHMER", + "NETZNUTZUNGSRECHNUNG": "NETZNUTZUNGSRECHNUNG", + "PREISBLATT": "PREISBLATT", + "PREISBLATTDIENSTLEISTUNG": "PREISBLATTDIENSTLEISTUNG", + "PREISBLATTKONZESSIONSABGABE": "PREISBLATTKONZESSIONSABGABE", + "PREISBLATTMESSUNG": "PREISBLATTMESSUNG", + "PREISBLATTNETZNUTZUNG": "PREISBLATTNETZNUTZUNG", + "PREISBLATTUMLAGEN": "PREISBLATTUMLAGEN", + "RECHNUNG": "RECHNUNG", + "REGIONALTARIF": "REGIONALTARIF", + "TARIFINFO": "TARIFINFO", + "TARIFKOSTEN": "TARIFKOSTEN", + "TARIFPREISBLATT": "TARIFPREISBLATT", + "VERTRAG": "VERTRAG", + "ZAEHLER": "ZAEHLER", + "ZEITREIHE": "ZEITREIHE", + }, +) diff --git a/src/bo4e/enum/dienstleistungstyp.py b/src/bo4e/enum/dienstleistungstyp.py index cd62eeb7d..e9d14e43f 100644 --- a/src/bo4e/enum/dienstleistungstyp.py +++ b/src/bo4e/enum/dienstleistungstyp.py @@ -4,41 +4,52 @@ from enum import Enum # pylint: disable=line-too-long -_dienstleistungstyp = { - "DATENBEREITSTELLUNG_TAEGLICH": "DATENBEREITSTELLUNG_TAEGLICH", # Datenbereitstellung täglich - "DATENBEREITSTELLUNG_WOECHENTLICH": "DATENBEREITSTELLUNG_WOECHENTLICH", # Datenbereitstellung wöchentlich - "DATENBEREITSTELLUNG_MONATLICH": "DATENBEREITSTELLUNG_MONATLICH", # Datenbereitstellung monatlich - "DATENBEREITSTELLUNG_JAEHRLICH": "DATENBEREITSTELLUNG_JAEHRLICH", # Datenbereitstellung jährlich - "DATENBEREITSTELLUNG_HISTORISCHE_LG": "DATENBEREITSTELLUNG_HISTORISCHE_LG", # Datenbereitstellung historischer Lastgänge - "DATENBEREITSTELLUNG_STUENDLICH": "DATENBEREITSTELLUNG_STUENDLICH", # Datenbereitstellung stündlich - "DATENBEREITSTELLUNG_VIERTELJAEHRLICH": "DATENBEREITSTELLUNG_VIERTELJAEHRLICH", # Datenbereitstellung vierteljährlich - "DATENBEREITSTELLUNG_HALBJAEHRLICH": "DATENBEREITSTELLUNG_HALBJAEHRLICH", # Datenbereitstellung halbjährlich - "DATENBEREITSTELLUNG_MONATLICH_ZUSAETZLICH": "DATENBEREITSTELLUNG_MONATLICH_ZUSAETZLICH", # Datenbereitstellung monatlich zusätzlich - "DATENBEREITSTELLUNG_EINMALIG": "DATENBEREITSTELLUNG_EINMALIG", # Datenbereitstellung einmalig - "AUSLESUNG_2X_TAEGLICH_FERNAUSLESUNG": "AUSLESUNG_2X_TAEGLICH_FERNAUSLESUNG", # Auslesung 2x täglich mittels Fernauslesung - "AUSLESUNG_TAEGLICH_FERNAUSLESUNG": "AUSLESUNG_TAEGLICH_FERNAUSLESUNG", # Auslesung täglich mittels Fernauslesung - "AUSLESUNG_MANUELL_MSB": "AUSLESUNG_MANUELL_MSB", # Auslesung, manuell vom Messstellenbetreiber vorgenommen - "AUSLESUNG_MONATLICH_FERNAUSLESUNG": "AUSLESUNG_MONATLICH_FERNAUSLESUNG", # Auslesung monatlich bei mittels Fernauslesung - "AUSLESUNG_JAEHRLICH_FERNAUSLESUNG": "AUSLESUNG_JAEHRLICH_FERNAUSLESUNG", # Auslesung jährlich bei SLP mittels Fernauslesung - "AUSLESUNG_MDE": "AUSLESUNG_MDE", # Auslesung mit mobiler Daten Erfassung (MDE) - "ABLESUNG_MONATLICH": "ABLESUNG_MONATLICH", # Ablesung monatlich - "ABLESUNG_VIERTELJAEHRLICH": "ABLESUNG_VIERTELJAEHRLICH", # Ablesung vierteljährlich - "ABLESUNG_HALBJAEHRLICH": "ABLESUNG_HALBJAEHRLICH", # Ablesung halbjährlich - "ABLESUNG_JAEHRLICH": "ABLESUNG_JAEHRLICH", # Ablesung jährlich - "AUSLESUNG_FERNAUSLESUNG": "AUSLESUNG_FERNAUSLESUNG", # Auslesung mittels Fernauslesung - "ABLESUNG_ZUSAETZLICH_MSB": "ABLESUNG_ZUSAETZLICH_MSB", # Ablesung, zusätzlich vom Messstellenbetreiber vorgenommen - "ABLESUNG_ZUSAETZLICH_KUNDE": "ABLESUNG_ZUSAETZLICH_KUNDE", # Ablesung SLP, zusätzlich vom Kunden vorgenommen - "AUSLESUNG_FERNAUSLESUNG_ZUSAETZLICH_MSB": "AUSLESUNG_FERNAUSLESUNG_ZUSAETZLICH_MSB", # Auslesung, mittels Fernauslesung, zusätzlich vom Messstellenbetreiber vorgenommen - "AUSLESUNG_MOATLICH_FERNAUSLESUNG": "AUSLESUNG_MOATLICH_FERNAUSLESUNG", # Auslesung monatlich mittels Fernauslesung - "AUSLESUNG_STUENDLICH_FERNAUSLESUNG": "AUSLESUNG_STUENDLICH_FERNAUSLESUNG", # Auslesung stündlich mittels Fernauslesung - "AUSLESUNG_TEMPERATURMENGENUMWERTER": "AUSLESUNG_TEMPERATURMENGENUMWERTER", # Auslesung Temperaturmengenumwerter - "AUSLESUNG_ZUSTANDSMENGENUMWERTER": "AUSLESUNG_ZUSTANDSMENGENUMWERTER", # Auslesung Zustandsmengenumwerter - "AUSLESUNG_SYSTEMMENGENUMWERTER": "AUSLESUNG_SYSTEMMENGENUMWERTER", # Auslesung Systemmengenumwerter - "AUSLESUNG_VORGANG": "AUSLESUNG_VORGANG", # Auslesung je Vorgang - "AUSLESUNG_KOMPAKTMENGENUMWERTER": "AUSLESUNG_KOMPAKTMENGENUMWERTER", # Auslesung Kompaktmengenumwerter - "SPERRUNG": "SPERRUNG", # Sperrung einer Abnahmestelle - "ENTSPERRUNG": "ENTSPERRUNG", # Entsperrung einer Abnahmestelle - "MAHNKOSTEN": "MAHNKOSTEN", # Mahnkosten - "INKASSOKOSTEN": "INKASSOKOSTEN", # Inkassokosten -} -Dienstleistungstyp: Enum = Enum("Dienstleistungstyp", _dienstleistungstyp) + +Dienstleistungstyp: Enum = Enum( + "Dienstleistungstyp", + { + "DATENBEREITSTELLUNG_TAEGLICH": "DATENBEREITSTELLUNG_TAEGLICH", # Datenbereitstellung täglich + "DATENBEREITSTELLUNG_WOECHENTLICH": "DATENBEREITSTELLUNG_WOECHENTLICH", # Datenbereitstellung wöchentlich + "DATENBEREITSTELLUNG_MONATLICH": "DATENBEREITSTELLUNG_MONATLICH", # Datenbereitstellung monatlich + "DATENBEREITSTELLUNG_JAEHRLICH": "DATENBEREITSTELLUNG_JAEHRLICH", # Datenbereitstellung jährlich + "DATENBEREITSTELLUNG_HISTORISCHE_LG": "DATENBEREITSTELLUNG_HISTORISCHE_LG", + # Datenbereitstellung historischer Lastgänge + "DATENBEREITSTELLUNG_STUENDLICH": "DATENBEREITSTELLUNG_STUENDLICH", # Datenbereitstellung stündlich + "DATENBEREITSTELLUNG_VIERTELJAEHRLICH": "DATENBEREITSTELLUNG_VIERTELJAEHRLICH", + # Datenbereitstellung vierteljährlich + "DATENBEREITSTELLUNG_HALBJAEHRLICH": "DATENBEREITSTELLUNG_HALBJAEHRLICH", # Datenbereitstellung halbjährlich + "DATENBEREITSTELLUNG_MONATLICH_ZUSAETZLICH": "DATENBEREITSTELLUNG_MONATLICH_ZUSAETZLICH", + # Datenbereitstellung monatlich zusätzlich + "DATENBEREITSTELLUNG_EINMALIG": "DATENBEREITSTELLUNG_EINMALIG", # Datenbereitstellung einmalig + "AUSLESUNG_2X_TAEGLICH_FERNAUSLESUNG": "AUSLESUNG_2X_TAEGLICH_FERNAUSLESUNG", + # Auslesung 2x täglich mittels Fernauslesung + "AUSLESUNG_TAEGLICH_FERNAUSLESUNG": "AUSLESUNG_TAEGLICH_FERNAUSLESUNG", # Auslesung täglich mittels Fernauslesung + "AUSLESUNG_MANUELL_MSB": "AUSLESUNG_MANUELL_MSB", # Auslesung, manuell vom Messstellenbetreiber vorgenommen + "AUSLESUNG_MONATLICH_FERNAUSLESUNG": "AUSLESUNG_MONATLICH_FERNAUSLESUNG", + # Auslesung monatlich bei mittels Fernauslesung + "AUSLESUNG_JAEHRLICH_FERNAUSLESUNG": "AUSLESUNG_JAEHRLICH_FERNAUSLESUNG", + # Auslesung jährlich bei SLP mittels Fernauslesung + "AUSLESUNG_MDE": "AUSLESUNG_MDE", # Auslesung mit mobiler Daten Erfassung (MDE) + "ABLESUNG_MONATLICH": "ABLESUNG_MONATLICH", # Ablesung monatlich + "ABLESUNG_VIERTELJAEHRLICH": "ABLESUNG_VIERTELJAEHRLICH", # Ablesung vierteljährlich + "ABLESUNG_HALBJAEHRLICH": "ABLESUNG_HALBJAEHRLICH", # Ablesung halbjährlich + "ABLESUNG_JAEHRLICH": "ABLESUNG_JAEHRLICH", # Ablesung jährlich + "AUSLESUNG_FERNAUSLESUNG": "AUSLESUNG_FERNAUSLESUNG", # Auslesung mittels Fernauslesung + "ABLESUNG_ZUSAETZLICH_MSB": "ABLESUNG_ZUSAETZLICH_MSB", # Ablesung, zusätzlich vom Messstellenbetreiber vorgenommen + "ABLESUNG_ZUSAETZLICH_KUNDE": "ABLESUNG_ZUSAETZLICH_KUNDE", # Ablesung SLP, zusätzlich vom Kunden vorgenommen + "AUSLESUNG_FERNAUSLESUNG_ZUSAETZLICH_MSB": "AUSLESUNG_FERNAUSLESUNG_ZUSAETZLICH_MSB", + # Auslesung, mittels Fernauslesung, zusätzlich vom Messstellenbetreiber vorgenommen + "AUSLESUNG_MOATLICH_FERNAUSLESUNG": "AUSLESUNG_MOATLICH_FERNAUSLESUNG", # Auslesung monatlich mittels Fernauslesung + "AUSLESUNG_STUENDLICH_FERNAUSLESUNG": "AUSLESUNG_STUENDLICH_FERNAUSLESUNG", + # Auslesung stündlich mittels Fernauslesung + "AUSLESUNG_TEMPERATURMENGENUMWERTER": "AUSLESUNG_TEMPERATURMENGENUMWERTER", # Auslesung Temperaturmengenumwerter + "AUSLESUNG_ZUSTANDSMENGENUMWERTER": "AUSLESUNG_ZUSTANDSMENGENUMWERTER", # Auslesung Zustandsmengenumwerter + "AUSLESUNG_SYSTEMMENGENUMWERTER": "AUSLESUNG_SYSTEMMENGENUMWERTER", # Auslesung Systemmengenumwerter + "AUSLESUNG_VORGANG": "AUSLESUNG_VORGANG", # Auslesung je Vorgang + "AUSLESUNG_KOMPAKTMENGENUMWERTER": "AUSLESUNG_KOMPAKTMENGENUMWERTER", # Auslesung Kompaktmengenumwerter + "SPERRUNG": "SPERRUNG", # Sperrung einer Abnahmestelle + "ENTSPERRUNG": "ENTSPERRUNG", # Entsperrung einer Abnahmestelle + "MAHNKOSTEN": "MAHNKOSTEN", # Mahnkosten + "INKASSOKOSTEN": "INKASSOKOSTEN", # Inkassokosten + }, +) diff --git a/src/bo4e/enum/energierichtung.py b/src/bo4e/enum/energierichtung.py index 1b929019b..ffca6eb58 100644 --- a/src/bo4e/enum/energierichtung.py +++ b/src/bo4e/enum/energierichtung.py @@ -3,5 +3,4 @@ """ from enum import Enum -_energierichtung = {"AUSSP": "AUSSP", "EINSP": "EINSP"} # Ausspeisung # Einspeisung -Energierichtung = Enum("Energierichtung", _energierichtung) +Energierichtung = Enum("Energierichtung", {"AUSSP": "AUSSP", "EINSP": "EINSP"}) # Ausspeisung # Einspeisung diff --git a/src/bo4e/enum/gasqualitaet.py b/src/bo4e/enum/gasqualitaet.py index 464203484..8e70e8eeb 100644 --- a/src/bo4e/enum/gasqualitaet.py +++ b/src/bo4e/enum/gasqualitaet.py @@ -3,8 +3,10 @@ """ from enum import Enum -_gasqualitaet = { - "H_GAS": "H_GAS", # High Caloric Gas - "L_GAS": "L_GAS", # Low Caloric Gas -} -Gasqualitaet = Enum("Gasqualitaet", _gasqualitaet) +Gasqualitaet = Enum( + "Gasqualitaet", + { + "H_GAS": "H_GAS", # High Caloric Gas + "L_GAS": "L_GAS", # Low Caloric Gas + }, +) # type: ignore diff --git a/src/bo4e/enum/gebiettyp.py b/src/bo4e/enum/gebiettyp.py index d42baedb8..7ed104c30 100644 --- a/src/bo4e/enum/gebiettyp.py +++ b/src/bo4e/enum/gebiettyp.py @@ -3,15 +3,17 @@ """ from enum import Enum -_gebiettyp = { - "REGELZONE": "REGELZONE", - "MARKTGEBIET": "MARKTGEBIET", - "BILANZIERUNGSGEBIET": "BILANZIERUNGSGEBIET", - "VERTEILNETZ": "VERTEILNETZ", - "TRANSPORTNETZ": "TRANSPORTNETZ", - "REGIONALNETZ": "REGIONALNETZ", - "AREALNETZ": "AREALNETZ", - "GRUNDVERSORGUNGSGEBIET": "GRUNDVERSORGUNGSGEBIET", - "VERSORGUNGSGEBIET": "VERSORGUNGSGEBIET", -} -Gebiettyp = Enum("Gebiettyp", _gebiettyp) +Gebiettyp = Enum( + "Gebiettyp", + { + "REGELZONE": "REGELZONE", + "MARKTGEBIET": "MARKTGEBIET", + "BILANZIERUNGSGEBIET": "BILANZIERUNGSGEBIET", + "VERTEILNETZ": "VERTEILNETZ", + "TRANSPORTNETZ": "TRANSPORTNETZ", + "REGIONALNETZ": "REGIONALNETZ", + "AREALNETZ": "AREALNETZ", + "GRUNDVERSORGUNGSGEBIET": "GRUNDVERSORGUNGSGEBIET", + "VERSORGUNGSGEBIET": "VERSORGUNGSGEBIET", + }, +) diff --git a/src/bo4e/enum/geraetetyp.py b/src/bo4e/enum/geraetetyp.py index 0e168fa63..70dc369b7 100644 --- a/src/bo4e/enum/geraetetyp.py +++ b/src/bo4e/enum/geraetetyp.py @@ -4,50 +4,53 @@ from enum import Enum # pylint: disable=line-too-long -_geraetetyp = { - "WECHSELSTROMZAEHLER": "WECHSELSTROMZAEHLER", # Wechselstromzähler - "DREHSTROMZAEHLER": "DREHSTROMZAEHLER", # Drehstromzähler - "ZWEIRICHTUNGSZAEHLER": "ZWEIRICHTUNGSZAEHLER", # Zweirichtungszähler - "RLM_ZAEHLER": "RLM_ZAEHLER", # RLM-Zähler - "BALGENGASZAEHLER": "BALGENGASZAEHLER", # Balgengaszähler - "MAXIMUMZAEHLER": "MAXIMUMZAEHLER", # Maximumzähler (Schleppzähler) - "MULTIPLEXANLAGE": "MULTIPLEXANLAGE", # Multiplexeranlage - "PAUSCHALANLAGE": "PAUSCHALANLAGE", # Pauschalanlagen - "VERSTAERKERANLAGE": "VERSTAERKERANLAGE", # Verstärkeranlage - "SUMMATIONSGERAET": "SUMMATIONSGERAET", # Summationsgerät - "IMPULSGEBER": "IMPULSGEBER", # Impulsgeber - "EDL_21_ZAEHLERAUFSATZ": "EDL_21_ZAEHLERAUFSATZ", # EDL 21 Zähleraufsatz für Zähler - "VIER_QUADRANTEN_LASTGANGZAEHLER": "VIER_QUADRANTEN_LASTGANGZAEHLER", # Vier-Quadranten-Lastgangzähler - "MENGENUMWERTER": "MENGENUMWERTER", # Mengenumwerter - "STROMWANDLER": "STROMWANDLER", # Stromwandler - "SPANNUNGSWANDLER": "SPANNUNGSWANDLER", # Spannungs-Wandler - "KOMBIMESSWANDLER": "KOMBIMESSWANDLER", # Kombimesswandler - "BLOCKSTROMWANDLER": "BLOCKSTROMWANDLER", # Blockstromwandler - "DATENLOGGER": "DATENLOGGER", # Datenlogger - "KOMMUNIKATIONSANSCHLUSS": "KOMMUNIKATIONSANSCHLUSS", # Kommunikationsanschluss - "MODEM": "MODEM", # Modem - "TELEKOMMUNIKATIONSEINRICHTUNG": "TELEKOMMUNIKATIONSEINRICHTUNG", # vom Messstellenbetreiber beigestellte Telekommunikationseinrichtung (Telefonanschluss) - "DREHKOLBENGASZAEHLER": "DREHKOLBENGASZAEHLER", # Drehkolbengaszähler - "TURBINENRADGASZAEHLER": "TURBINENRADGASZAEHLER", # Turbinenradgaszähler - "ULTRASCHALLZAEHLER": "ULTRASCHALLZAEHLER", # Ultraschallzähler - "WIRBELGASZAEHLER": "WIRBELGASZAEHLER", # Wirbelgaszähler - "MODERNE_MESSEINRICHTUNG": "MODERNE_MESSEINRICHTUNG", # moderne Messeinrichtung - "INTELLIGENTES_MESSYSTEM": "INTELLIGENTES_MESSYSTEM", # Intelligentes Messystem - "ELEKTRONISCHER_HAUSHALTSZAEHLER": "ELEKTRONISCHER_HAUSHALTSZAEHLER", # elektronischer Haushaltszähler - "STEUEREINRICHTUNG": "STEUEREINRICHTUNG", # Steuereinrichtung - "TARIFSCHALTGERAET": "TARIFSCHALTGERAET", # Tarifschaltgerät - "RUNDSTEUEREMPFAENGER": "RUNDSTEUEREMPFAENGER", # Rundsteuerempfänger - "OPTIONALE_ZUS_ZAEHLEINRICHTUNG": "OPTIONALE_ZUS_ZAEHLEINRICHTUNG", # optionale zusätzliche Zähleinrichtung - "MESSWANDLERSATZ_IMS_MME": "MESSWANDLERSATZ_IMS_MME", # Messwandlersatz Strom iMS und mME, NSP - "KOMBIMESSWANDLER_IMS_MME": "KOMBIMESSWANDLER_IMS_MME", # Kombimesswandlersatz (Strom u. Spg) iMS und mME - "TARIFSCHALTGERAET_IMS_MME": "TARIFSCHALTGERAET_IMS_MME", # Tarifschaltung iMS und mME - "RUNDSTEUEREMPFAENGER_IMS_MME": "RUNDSTEUEREMPFAENGER_IMS_MME", # Rundsteuerempfänger iMS und mME - "TEMPERATUR_KOMPENSATION": "TEMPERATUR_KOMPENSATION", # Temperaturkompensation - "HOECHSTBELASTUNGS_ANZEIGER": "HOECHSTBELASTUNGS_ANZEIGER", # Höchsbelastungsanzeiger - "SONSTIGES_GERAET": "SONSTIGES_GERAET", # Sonstiges Gerät - "PREPAYMENTZAEHLER": "PREPAYMENTZAEHLER", # Prepaymentzähler - "EDL_21": "EDL_21", # EDL21 - "96_H_ZAEHLER": "96_H_ZAEHLER", # 96 h Zähler - "EDL_40_ZAEHLERAUFSATZ": "EDL_40_ZAEHLERAUFSATZ", # EDL 40 Zähleraufsatz für Zähler -} -Geraetetyp = Enum("Geraetetyp", _geraetetyp) +Geraetetyp = Enum( + "Geraetetyp", + { + "WECHSELSTROMZAEHLER": "WECHSELSTROMZAEHLER", # Wechselstromzähler + "DREHSTROMZAEHLER": "DREHSTROMZAEHLER", # Drehstromzähler + "ZWEIRICHTUNGSZAEHLER": "ZWEIRICHTUNGSZAEHLER", # Zweirichtungszähler + "RLM_ZAEHLER": "RLM_ZAEHLER", # RLM-Zähler + "BALGENGASZAEHLER": "BALGENGASZAEHLER", # Balgengaszähler + "MAXIMUMZAEHLER": "MAXIMUMZAEHLER", # Maximumzähler (Schleppzähler) + "MULTIPLEXANLAGE": "MULTIPLEXANLAGE", # Multiplexeranlage + "PAUSCHALANLAGE": "PAUSCHALANLAGE", # Pauschalanlagen + "VERSTAERKERANLAGE": "VERSTAERKERANLAGE", # Verstärkeranlage + "SUMMATIONSGERAET": "SUMMATIONSGERAET", # Summationsgerät + "IMPULSGEBER": "IMPULSGEBER", # Impulsgeber + "EDL_21_ZAEHLERAUFSATZ": "EDL_21_ZAEHLERAUFSATZ", # EDL 21 Zähleraufsatz für Zähler + "VIER_QUADRANTEN_LASTGANGZAEHLER": "VIER_QUADRANTEN_LASTGANGZAEHLER", # Vier-Quadranten-Lastgangzähler + "MENGENUMWERTER": "MENGENUMWERTER", # Mengenumwerter + "STROMWANDLER": "STROMWANDLER", # Stromwandler + "SPANNUNGSWANDLER": "SPANNUNGSWANDLER", # Spannungs-Wandler + "KOMBIMESSWANDLER": "KOMBIMESSWANDLER", # Kombimesswandler + "BLOCKSTROMWANDLER": "BLOCKSTROMWANDLER", # Blockstromwandler + "DATENLOGGER": "DATENLOGGER", # Datenlogger + "KOMMUNIKATIONSANSCHLUSS": "KOMMUNIKATIONSANSCHLUSS", # Kommunikationsanschluss + "MODEM": "MODEM", # Modem + "TELEKOMMUNIKATIONSEINRICHTUNG": "TELEKOMMUNIKATIONSEINRICHTUNG", + # vom Messstellenbetreiber beigestellte Telekommunikationseinrichtung (Telefonanschluss) + "DREHKOLBENGASZAEHLER": "DREHKOLBENGASZAEHLER", # Drehkolbengaszähler + "TURBINENRADGASZAEHLER": "TURBINENRADGASZAEHLER", # Turbinenradgaszähler + "ULTRASCHALLZAEHLER": "ULTRASCHALLZAEHLER", # Ultraschallzähler + "WIRBELGASZAEHLER": "WIRBELGASZAEHLER", # Wirbelgaszähler + "MODERNE_MESSEINRICHTUNG": "MODERNE_MESSEINRICHTUNG", # moderne Messeinrichtung + "INTELLIGENTES_MESSYSTEM": "INTELLIGENTES_MESSYSTEM", # Intelligentes Messystem + "ELEKTRONISCHER_HAUSHALTSZAEHLER": "ELEKTRONISCHER_HAUSHALTSZAEHLER", # elektronischer Haushaltszähler + "STEUEREINRICHTUNG": "STEUEREINRICHTUNG", # Steuereinrichtung + "TARIFSCHALTGERAET": "TARIFSCHALTGERAET", # Tarifschaltgerät + "RUNDSTEUEREMPFAENGER": "RUNDSTEUEREMPFAENGER", # Rundsteuerempfänger + "OPTIONALE_ZUS_ZAEHLEINRICHTUNG": "OPTIONALE_ZUS_ZAEHLEINRICHTUNG", # optionale zusätzliche Zähleinrichtung + "MESSWANDLERSATZ_IMS_MME": "MESSWANDLERSATZ_IMS_MME", # Messwandlersatz Strom iMS und mME, NSP + "KOMBIMESSWANDLER_IMS_MME": "KOMBIMESSWANDLER_IMS_MME", # Kombimesswandlersatz (Strom u. Spg) iMS und mME + "TARIFSCHALTGERAET_IMS_MME": "TARIFSCHALTGERAET_IMS_MME", # Tarifschaltung iMS und mME + "RUNDSTEUEREMPFAENGER_IMS_MME": "RUNDSTEUEREMPFAENGER_IMS_MME", # Rundsteuerempfänger iMS und mME + "TEMPERATUR_KOMPENSATION": "TEMPERATUR_KOMPENSATION", # Temperaturkompensation + "HOECHSTBELASTUNGS_ANZEIGER": "HOECHSTBELASTUNGS_ANZEIGER", # Höchsbelastungsanzeiger + "SONSTIGES_GERAET": "SONSTIGES_GERAET", # Sonstiges Gerät + "PREPAYMENTZAEHLER": "PREPAYMENTZAEHLER", # Prepaymentzähler + "EDL_21": "EDL_21", # EDL21 + "96_H_ZAEHLER": "96_H_ZAEHLER", # 96 h Zähler + "EDL_40_ZAEHLERAUFSATZ": "EDL_40_ZAEHLERAUFSATZ", # EDL 40 Zähleraufsatz für Zähler + }, +) diff --git a/src/bo4e/enum/geschaeftspartnerrolle.py b/src/bo4e/enum/geschaeftspartnerrolle.py index 560bd8a35..9233e979c 100644 --- a/src/bo4e/enum/geschaeftspartnerrolle.py +++ b/src/bo4e/enum/geschaeftspartnerrolle.py @@ -3,11 +3,13 @@ """ from enum import Enum -_geschaeftspartnerrolle = { - "LIEFERANT": "LIEFERANT", - "DIENSTLEISTER": "DIENSTLEISTER", - "KUNDE": "KUNDE", - "INTERESSENT": "INTERESSENT", - "MARKTPARTNER": "MARKTPARTNER", -} -Geschaeftspartnerrolle = Enum("Geschaeftspartnerrolle", _geschaeftspartnerrolle) +Geschaeftspartnerrolle = Enum( + "Geschaeftspartnerrolle", + { + "LIEFERANT": "LIEFERANT", + "DIENSTLEISTER": "DIENSTLEISTER", + "KUNDE": "KUNDE", + "INTERESSENT": "INTERESSENT", + "MARKTPARTNER": "MARKTPARTNER", + }, +) diff --git a/src/bo4e/enum/kontaktart.py b/src/bo4e/enum/kontaktart.py index f0b5942bb..518508fc5 100644 --- a/src/bo4e/enum/kontaktart.py +++ b/src/bo4e/enum/kontaktart.py @@ -3,11 +3,13 @@ """ from enum import Enum -_kontaktart = { - "ANSCHREIBEN": "ANSCHREIBEN", - "TELEFONAT": "TELEFONAT", - "FAX": "FAX", - "E_MAIL": "E_MAIL", - "SMS": "SMS", -} -Kontaktart = Enum("Kontaktart", _kontaktart) +Kontaktart = Enum( + "Kontaktart", + { + "ANSCHREIBEN": "ANSCHREIBEN", + "TELEFONAT": "TELEFONAT", + "FAX": "FAX", + "E_MAIL": "E_MAIL", + "SMS": "SMS", + }, +) diff --git a/src/bo4e/enum/landescode.py b/src/bo4e/enum/landescode.py index f8a9fd5a5..a21211c0f 100644 --- a/src/bo4e/enum/landescode.py +++ b/src/bo4e/enum/landescode.py @@ -3,8 +3,8 @@ """ from enum import Enum -from iso3166 import countries +from iso3166 import countries # type: ignore alpha2codes = {c.alpha2: c.alpha2 for c in countries} -Landescode = Enum("Landescode", alpha2codes) +Landescode = Enum("Landescode", alpha2codes) # type: ignore diff --git a/src/bo4e/enum/marktrolle.py b/src/bo4e/enum/marktrolle.py index 9682e9cf0..bbbefe919 100644 --- a/src/bo4e/enum/marktrolle.py +++ b/src/bo4e/enum/marktrolle.py @@ -3,20 +3,22 @@ """ from enum import Enum -_marktrolle = { - "NB": "NB", # Grid Operator - "LF": "LF", # Supplier - "MSB": "MSB", # Messstellenbetreiber - "DL": "DL", # Dienstleister - "BKV": "BKV", # Bilanzkreisverantwortlicher, - "BKO": "BKO", # Bilanzkoordinator / Marktgebietsverantwortlicher - "UENB": "UENB", # Übertragungsnetzbetreiber - "KUNDE_SELBST_NN": "KUNDE_SELBST_NN", # Kunden, die Netznutzungsentgelte selbst zahlen - "MGV": "MGV", # Marktgebietsverantwortlicher - "EIV": "EIV", # Einsatzverantwortlicher - "RB": "RB", # Registerbetreiber - "KUNDE": "KUNDE", - "INTERESSENT": "INTERESSENT", - "BTR": "BTR", # Betreiber einer technischen Ressource -} -Marktrolle = Enum("Marktrolle", _marktrolle) +Marktrolle = Enum( + "Marktrolle", + { + "NB": "NB", # Grid Operator + "LF": "LF", # Supplier + "MSB": "MSB", # Messstellenbetreiber + "DL": "DL", # Dienstleister + "BKV": "BKV", # Bilanzkreisverantwortlicher, + "BKO": "BKO", # Bilanzkoordinator / Marktgebietsverantwortlicher + "UENB": "UENB", # Übertragungsnetzbetreiber + "KUNDE_SELBST_NN": "KUNDE_SELBST_NN", # Kunden, die Netznutzungsentgelte selbst zahlen + "MGV": "MGV", # Marktgebietsverantwortlicher + "EIV": "EIV", # Einsatzverantwortlicher + "RB": "RB", # Registerbetreiber + "KUNDE": "KUNDE", + "INTERESSENT": "INTERESSENT", + "BTR": "BTR", # Betreiber einer technischen Ressource + }, +) diff --git a/src/bo4e/enum/mengeneinheit.py b/src/bo4e/enum/mengeneinheit.py index 1eb29136e..aceb96759 100644 --- a/src/bo4e/enum/mengeneinheit.py +++ b/src/bo4e/enum/mengeneinheit.py @@ -3,20 +3,22 @@ """ from enum import Enum -_mengeneinheit = { - "W": "W", # Watt - "WH": "WH", # Wattstunde - "KW": "KW", # Kilowatt - "KWH": "KWH", # Kilowattstunde - "KVARH": "KVARH", # Kilovarstunde - "MW": "MW", # Megawatt - "MWH": "MWH", # Megawattstunde - "STUECK": "STUECK", # Stückzahl - "KUBIKMETER": "KUBIKMETER", # Kubikmeter (Gas) - "STUNDE": "STUNDE", # Stunde - "TAG": "TAG", # Tage - "MONAT": "MONAT", # Monat - "JAHR": "JAHR", # Jahr - "PROZENT": "PROZENT", # Prozent -} -Mengeneinheit = Enum("Mengeneinheit", _mengeneinheit) +Mengeneinheit = Enum( + "Mengeneinheit", + { + "W": "W", # Watt + "WH": "WH", # Wattstunde + "KW": "KW", # Kilowatt + "KWH": "KWH", # Kilowattstunde + "KVARH": "KVARH", # Kilovarstunde + "MW": "MW", # Megawatt + "MWH": "MWH", # Megawattstunde + "STUECK": "STUECK", # Stückzahl + "KUBIKMETER": "KUBIKMETER", # Kubikmeter (Gas) + "STUNDE": "STUNDE", # Stunde + "TAG": "TAG", # Tage + "MONAT": "MONAT", # Monat + "JAHR": "JAHR", # Jahr + "PROZENT": "PROZENT", # Prozent + }, +) diff --git a/src/bo4e/enum/netzebene.py b/src/bo4e/enum/netzebene.py index e15094875..c31ad07c5 100644 --- a/src/bo4e/enum/netzebene.py +++ b/src/bo4e/enum/netzebene.py @@ -4,16 +4,18 @@ from enum import Enum -_netzebene = { - "NSP": "NSP", # Niederspannung; Strom - "MSP": "MSP", # Mittelspannung; Strom - "HSP": "HSP", # Hochspannung; Strom - "HSS": "HSS", # Hoechstspannung; Strom - "MSP_NSP_UMSP": "MSP_NSP_UMSP", # MS/NS Umspannung; Strom - "HSP_MSP_UMSP": "HSP_MSP_UMSP", # HS/MS Umspannung; Strom - "HSS_HSP_UMSP": "HSS_HSP_UMSP", # HOES/HS Umspannung; Strom - "HD": "HD", # Hochdruck; Gas - "MD": "MD", # Mitteldruck; Gas - "ND": "ND", # Niederdruck; Gas -} -Netzebene = Enum("Netzebene", _netzebene) +Netzebene = Enum( + "Netzebene", + { + "NSP": "NSP", # Niederspannung; Strom + "MSP": "MSP", # Mittelspannung; Strom + "HSP": "HSP", # Hochspannung; Strom + "HSS": "HSS", # Hoechstspannung; Strom + "MSP_NSP_UMSP": "MSP_NSP_UMSP", # MS/NS Umspannung; Strom + "HSP_MSP_UMSP": "HSP_MSP_UMSP", # HS/MS Umspannung; Strom + "HSS_HSP_UMSP": "HSS_HSP_UMSP", # HOES/HS Umspannung; Strom + "HD": "HD", # Hochdruck; Gas + "MD": "MD", # Mitteldruck; Gas + "ND": "ND", # Niederdruck; Gas + }, +) diff --git a/src/bo4e/enum/rollencodetyp.py b/src/bo4e/enum/rollencodetyp.py index f9a84147f..3c3311903 100644 --- a/src/bo4e/enum/rollencodetyp.py +++ b/src/bo4e/enum/rollencodetyp.py @@ -4,9 +4,11 @@ from enum import Enum -_rollenrodetyp = { - "BDEW": "BDEW", # Bundesverband der Energie- u. Wasserwirtschaft - "DVG": "DVG", # Deutscher Verein des Gas- und Wasserfaches - "GLN": "GLN", # Global Location Number -} -Rollencodetyp = Enum("Rollencodetyp", _rollenrodetyp) +Rollencodetyp = Enum( + "Rollencodetyp", + { + "BDEW": "BDEW", # Bundesverband der Energie- u. Wasserwirtschaft + "DVG": "DVG", # Deutscher Verein des Gas- und Wasserfaches + "GLN": "GLN", # Global Location Number + }, +) diff --git a/src/bo4e/enum/rufnummernart.py b/src/bo4e/enum/rufnummernart.py index 24733be44..e5b3484dc 100644 --- a/src/bo4e/enum/rufnummernart.py +++ b/src/bo4e/enum/rufnummernart.py @@ -4,15 +4,17 @@ from enum import Enum -_rufnummernart = { - "RUF_ZENTRALE": "RUF_ZENTRALE", # Rufnummer Zentrale - "FAX_ZENTRALE": "FAX_ZENTRALE", # Faxnummer Zentrale - "SAMMELRUF": "SAMMELRUF", # Sammelrufnummer - "SAMMELFAX": "SAMMELFAX", # Sammelfaxnummer - "ABTEILUNGRUF": "ABTEILUNGRUF", # Rufnummer Abteilung - "ABTEILUNGFAX": "ABTEILUNGFAX", # Faxnummer Abteilung - "RUF_DURCHWAHL": "RUF_DURCHWAHL", # Rufnummer Durchwahl - "FAX_DURCHWAHL": "FAX_DURCHWAHL", # Faxnummer Durchwahl - "MOBIL_NUMMER": "MOBIL_NUMMER", # Nummer des mobilen Telefons -} -Rufnummernart = Enum("Rufnummernart", _rufnummernart) +Rufnummernart = Enum( + "Rufnummernart", + { + "RUF_ZENTRALE": "RUF_ZENTRALE", # Rufnummer Zentrale + "FAX_ZENTRALE": "FAX_ZENTRALE", # Faxnummer Zentrale + "SAMMELRUF": "SAMMELRUF", # Sammelrufnummer + "SAMMELFAX": "SAMMELFAX", # Sammelfaxnummer + "ABTEILUNGRUF": "ABTEILUNGRUF", # Rufnummer Abteilung + "ABTEILUNGFAX": "ABTEILUNGFAX", # Faxnummer Abteilung + "RUF_DURCHWAHL": "RUF_DURCHWAHL", # Rufnummer Durchwahl + "FAX_DURCHWAHL": "FAX_DURCHWAHL", # Faxnummer Durchwahl + "MOBIL_NUMMER": "MOBIL_NUMMER", # Nummer des mobilen Telefons + }, +) diff --git a/src/bo4e/enum/sparte.py b/src/bo4e/enum/sparte.py index 9bd628b6d..b38b3fc80 100644 --- a/src/bo4e/enum/sparte.py +++ b/src/bo4e/enum/sparte.py @@ -3,12 +3,14 @@ """ from enum import Enum -_sparte = { - "STROM": "STROM", - "GAS": "GAS", - "FERNWAERME": "FERNWAERME", - "NAHWAERME": "NAHWAERME", - "WASSER": "WASSER", - "ABWASSER": "ABWASSER", -} -Sparte = Enum("Sparte", _sparte) +Sparte = Enum( + "Sparte", + { + "STROM": "STROM", + "GAS": "GAS", + "FERNWAERME": "FERNWAERME", + "NAHWAERME": "NAHWAERME", + "WASSER": "WASSER", + "ABWASSER": "ABWASSER", + }, +) diff --git a/src/bo4e/enum/tarifart.py b/src/bo4e/enum/tarifart.py index 95d661932..0d557ed61 100644 --- a/src/bo4e/enum/tarifart.py +++ b/src/bo4e/enum/tarifart.py @@ -4,11 +4,13 @@ from enum import Enum -_tarifart = { - "EINTARIF": "EINTARIF", # Eintarif - "ZWEITARIF": "ZWEITARIF", # Zweitarif - "MEHRTARIF": "MEHRTARIF", # Mehrtarif - "SMART_METER": "SMART_METER", # Smart Meter Tarif - "LEISTUNGSGEMESSEN": "LEISTUNGSGEMESSEN", # Leistungsgemessener Tarif -} -Tarifart = Enum("Tarifart", _tarifart) +Tarifart = Enum( + "Tarifart", + { + "EINTARIF": "EINTARIF", # Eintarif + "ZWEITARIF": "ZWEITARIF", # Zweitarif + "MEHRTARIF": "MEHRTARIF", # Mehrtarif + "SMART_METER": "SMART_METER", # Smart Meter Tarif + "LEISTUNGSGEMESSEN": "LEISTUNGSGEMESSEN", # Leistungsgemessener Tarif + }, +) diff --git a/src/bo4e/enum/themengebiet.py b/src/bo4e/enum/themengebiet.py index b6dbbb386..5ec2bd5ad 100644 --- a/src/bo4e/enum/themengebiet.py +++ b/src/bo4e/enum/themengebiet.py @@ -4,68 +4,68 @@ from enum import Enum - -_themengebiet = { - "ALLGEMEINER_INFORMATIONSAUSTAUSCH": "ALLGEMEINER_INFORMATIONSAUSTAUSCH", # Allgemeiner Informationsaustausch - "AN_UND_ABMELDUNG": "AN_UND_ABMELDUNG", # An- und Abmeldung - "ANSPRECHPARTNER_ALLGEMEIN": "ANSPRECHPARTNER_ALLGEMEIN", # Ansprechpartner Allgemein - "ANSPRECHPARTNER_BDEW_DVGW": "ANSPRECHPARTNER_BDEW_DVGW", # Ansprechpartner BDEW/DVGW - "ANSPRECHPARTNER_IT_TECHNIK": "ANSPRECHPARTNER_IT_TECHNIK", # Ansprechpartner IT/Technik - "BILANZIERUNG": "BILANZIERUNG", # Bilanzierung - "BILANZKREISKOORDINATOR": "BILANZKREISKOORDINATOR", # Bilanzkreiskoordinator - "BILANZKREISVERANTWORTLICHER": "BILANZKREISVERANTWORTLICHER", # Bilanzkreisverantwortlicher - "DATENFORMATE_ZERTIFIKATE_VERSCHLUESSELUNGEN": "DATENFORMATE_ZERTIFIKATE_VERSCHLUESSELUNGEN", - # Datenformate, Zertifikate, Verschlüsselungen - "DEBITORENMANAGEMENT": "DEBITORENMANAGEMENT", # Debitorenmanagement - "DEMAND_SIDE_MANAGEMENT": "DEMAND_SIDE_MANAGEMENT", # Demand-Side-Management - "EDI_VEREINBARUNG": "EDI_VEREINBARUNG", # EDI-Vereinbarung - "EDIFACT": "EDIFACT", # EDIFACT - "ENERGIEDATENMANAGEMENT": "ENERGIEDATENMANAGEMENT", # Energiedatenmanagement - "FAHRPLANMANAGEMENT": "FAHRPLANMANAGEMENT", # Fahrplanmanagement - "ALOCAT": "ALOCAT", # Format:ALOCAT - "APERAK": "APERAK", # Format:APERAK - "CONTRL": "CONTRL", # Format:CONTRL - "INVOIC": "INVOIC", # Format:INVOIC - "MSCONS": "MSCONS", # Format:MSCONS - "ORDERS": "ORDERS", # Format:ORDERS - "ORDERSP": "ORDERSP", # Format:ORDERSP - "REMADV": "REMADV", # Format:REMADV - "UTILMD": "UTILMD", # Format:UTILMD - "GABI": "GABI", # GaBi Gas - "GELI": "GELI", # GeLi Gas - "GERAETERUECKGABE": "GERAETERUECKGABE", # Geräterückgabe - "GERAETEWECHSEL": "GERAETEWECHSEL", # Gerätewechsel - "GPKE": "GPKE", # GPKE - "INBETRIEBNAHME": "INBETRIEBNAHME", # Inbetriebnahme - "KAPAZITAETSMANAGEMENT": "KAPAZITAETSMANAGEMENT", # Kapazitätsmanagement - "KLAERFAELLE": "KLAERFAELLE", # Klärfälle - "LASTGAENGE_RLM": "LASTGAENGE_RLM", # Lastgänge RLM - "LIEFERANTENRAHMENVERTRAG": "LIEFERANTENRAHMENVERTRAG", # Lieferantenrahmenvertrag - "LIEFERANTENWECHSEL": "LIEFERANTENWECHSEL", # Lieferantenwechsel - "MABIS": "MABIS", # MaBiS - "MAHNWESEN": "MAHNWESEN", # Mahnwesen - "MARKTGEBIETSVERANTWORTLICHER": "MARKTGEBIETSVERANTWORTLICHER", # Marktgebietsverantwortlicher - "MARKTKOMMUNIKATION": "MARKTKOMMUNIKATION", # Marktkommunikation - "MEHR_MINDERMENGEN": "MEHR_MINDERMENGEN", # Mehr- Mindermengen - "MSB_MDL": "MSB_MDL", # MSB - MDL - "NETZABRECHNUNG": "NETZABRECHNUNG", # Netzabrechnung - "NETZENTGELTE": "NETZENTGELTE", # Netzentgelte - "NETZMANAGEMENT": "NETZMANAGEMENT", # Netzmanagement - "RECHT": "RECHT", # Recht - "REGULIERUNGSMANAGEMENT": "REGULIERUNGSMANAGEMENT", # Regulierungsmanagement - "REKLAMATIONEN": "REKLAMATIONEN", # Reklamationen - "SPERREN_ENTSPERREN_INKASSO": "SPERREN_ENTSPERREN_INKASSO", # Sperren/Entsperren/Inkasso - "STAMMDATEN": "STAMMDATEN", # Stammdaten - "STOERUNGSFAELLE": "STOERUNGSFAELLE", # Übermittlung_Störungsfälle - "TECHNISCHE_FRAGEN": "TECHNISCHE_FRAGEN", # Technische Fragen - "UMSTELLUNG_INVOIC": "UMSTELLUNG_INVOIC", # Umstellung INVOIC - "VERSCHLUESSELUNG_SIGNATUR": "VERSCHLUESSELUNG_SIGNATUR", # Verschlüsselung/Signatur - "VERTRAGSMANAGEMENT": "VERTRAGSMANAGEMENT", # Vertragsmanagement - "VERTRIEB": "VERTRIEB", # Vertrieb - "WIM": "WIM", # WiM - "ZAEHLERSTAENDE_SLP": "ZAEHLERSTAENDE_SLP", # Zählerstände SLP - "ZAHLUNGSVERKEHR": "ZAHLUNGSVERKEHR", # Zahlungsverkehr - "ZUORDNUNGSVEREINBARUNG": "ZUORDNUNGSVEREINBARUNG", # Zuordnungsvereinbarung -} - -Themengebiet = Enum("Themengebiet", _themengebiet) +Themengebiet = Enum( + "Themengebiet", + { + "ALLGEMEINER_INFORMATIONSAUSTAUSCH": "ALLGEMEINER_INFORMATIONSAUSTAUSCH", # Allgemeiner Informationsaustausch + "AN_UND_ABMELDUNG": "AN_UND_ABMELDUNG", # An- und Abmeldung + "ANSPRECHPARTNER_ALLGEMEIN": "ANSPRECHPARTNER_ALLGEMEIN", # Ansprechpartner Allgemein + "ANSPRECHPARTNER_BDEW_DVGW": "ANSPRECHPARTNER_BDEW_DVGW", # Ansprechpartner BDEW/DVGW + "ANSPRECHPARTNER_IT_TECHNIK": "ANSPRECHPARTNER_IT_TECHNIK", # Ansprechpartner IT/Technik + "BILANZIERUNG": "BILANZIERUNG", # Bilanzierung + "BILANZKREISKOORDINATOR": "BILANZKREISKOORDINATOR", # Bilanzkreiskoordinator + "BILANZKREISVERANTWORTLICHER": "BILANZKREISVERANTWORTLICHER", # Bilanzkreisverantwortlicher + "DATENFORMATE_ZERTIFIKATE_VERSCHLUESSELUNGEN": "DATENFORMATE_ZERTIFIKATE_VERSCHLUESSELUNGEN", + # Datenformate, Zertifikate, Verschlüsselungen + "DEBITORENMANAGEMENT": "DEBITORENMANAGEMENT", # Debitorenmanagement + "DEMAND_SIDE_MANAGEMENT": "DEMAND_SIDE_MANAGEMENT", # Demand-Side-Management + "EDI_VEREINBARUNG": "EDI_VEREINBARUNG", # EDI-Vereinbarung + "EDIFACT": "EDIFACT", # EDIFACT + "ENERGIEDATENMANAGEMENT": "ENERGIEDATENMANAGEMENT", # Energiedatenmanagement + "FAHRPLANMANAGEMENT": "FAHRPLANMANAGEMENT", # Fahrplanmanagement + "ALOCAT": "ALOCAT", # Format:ALOCAT + "APERAK": "APERAK", # Format:APERAK + "CONTRL": "CONTRL", # Format:CONTRL + "INVOIC": "INVOIC", # Format:INVOIC + "MSCONS": "MSCONS", # Format:MSCONS + "ORDERS": "ORDERS", # Format:ORDERS + "ORDERSP": "ORDERSP", # Format:ORDERSP + "REMADV": "REMADV", # Format:REMADV + "UTILMD": "UTILMD", # Format:UTILMD + "GABI": "GABI", # GaBi Gas + "GELI": "GELI", # GeLi Gas + "GERAETERUECKGABE": "GERAETERUECKGABE", # Geräterückgabe + "GERAETEWECHSEL": "GERAETEWECHSEL", # Gerätewechsel + "GPKE": "GPKE", # GPKE + "INBETRIEBNAHME": "INBETRIEBNAHME", # Inbetriebnahme + "KAPAZITAETSMANAGEMENT": "KAPAZITAETSMANAGEMENT", # Kapazitätsmanagement + "KLAERFAELLE": "KLAERFAELLE", # Klärfälle + "LASTGAENGE_RLM": "LASTGAENGE_RLM", # Lastgänge RLM + "LIEFERANTENRAHMENVERTRAG": "LIEFERANTENRAHMENVERTRAG", # Lieferantenrahmenvertrag + "LIEFERANTENWECHSEL": "LIEFERANTENWECHSEL", # Lieferantenwechsel + "MABIS": "MABIS", # MaBiS + "MAHNWESEN": "MAHNWESEN", # Mahnwesen + "MARKTGEBIETSVERANTWORTLICHER": "MARKTGEBIETSVERANTWORTLICHER", # Marktgebietsverantwortlicher + "MARKTKOMMUNIKATION": "MARKTKOMMUNIKATION", # Marktkommunikation + "MEHR_MINDERMENGEN": "MEHR_MINDERMENGEN", # Mehr- Mindermengen + "MSB_MDL": "MSB_MDL", # MSB - MDL + "NETZABRECHNUNG": "NETZABRECHNUNG", # Netzabrechnung + "NETZENTGELTE": "NETZENTGELTE", # Netzentgelte + "NETZMANAGEMENT": "NETZMANAGEMENT", # Netzmanagement + "RECHT": "RECHT", # Recht + "REGULIERUNGSMANAGEMENT": "REGULIERUNGSMANAGEMENT", # Regulierungsmanagement + "REKLAMATIONEN": "REKLAMATIONEN", # Reklamationen + "SPERREN_ENTSPERREN_INKASSO": "SPERREN_ENTSPERREN_INKASSO", # Sperren/Entsperren/Inkasso + "STAMMDATEN": "STAMMDATEN", # Stammdaten + "STOERUNGSFAELLE": "STOERUNGSFAELLE", # Übermittlung_Störungsfälle + "TECHNISCHE_FRAGEN": "TECHNISCHE_FRAGEN", # Technische Fragen + "UMSTELLUNG_INVOIC": "UMSTELLUNG_INVOIC", # Umstellung INVOIC + "VERSCHLUESSELUNG_SIGNATUR": "VERSCHLUESSELUNG_SIGNATUR", # Verschlüsselung/Signatur + "VERTRAGSMANAGEMENT": "VERTRAGSMANAGEMENT", # Vertragsmanagement + "VERTRIEB": "VERTRIEB", # Vertrieb + "WIM": "WIM", # WiM + "ZAEHLERSTAENDE_SLP": "ZAEHLERSTAENDE_SLP", # Zählerstände SLP + "ZAHLUNGSVERKEHR": "ZAHLUNGSVERKEHR", # Zahlungsverkehr + "ZUORDNUNGSVEREINBARUNG": "ZUORDNUNGSVEREINBARUNG", # Zuordnungsvereinbarung + }, +) diff --git a/src/bo4e/enum/titel.py b/src/bo4e/enum/titel.py index 8fa6b92ed..c3b06b9d4 100644 --- a/src/bo4e/enum/titel.py +++ b/src/bo4e/enum/titel.py @@ -4,9 +4,11 @@ from enum import Enum -_titel = { - "DR": "DR", # Doktor - "PROF": "PROF", # Professor - "PROF_DR": "PROF_DR", # Professor Dr. -} -Titel = Enum("Titel", _titel) +Titel = Enum( + "Titel", + { + "DR": "DR", # Doktor*In + "PROF": "PROF", # Professor*In + "PROF_DR": "PROF_DR", # Professor*In Dr. + }, +) diff --git a/src/bo4e/enum/verbrauchsart.py b/src/bo4e/enum/verbrauchsart.py index 010ffc7b3..d8de65444 100644 --- a/src/bo4e/enum/verbrauchsart.py +++ b/src/bo4e/enum/verbrauchsart.py @@ -3,11 +3,13 @@ """ from enum import Enum -_verbrauchsart = { - "KL": "KL", # Kraft/Licht - "KLW": "KLW", # Kraft/Licht/Wärme - "KLWS": "KLWS", # Kraft/Licht/Wärme/Speicherheizung - "W": "W", # Wärme - "WS": "WS", # Wärme/Speicherheizung -} -Verbrauchsart = Enum("Verbrauchsart", _verbrauchsart) +Verbrauchsart = Enum( + "Verbrauchsart", + { + "KL": "KL", # Kraft/Licht + "KLW": "KLW", # Kraft/Licht/Wärme + "KLWS": "KLWS", # Kraft/Licht/Wärme/Speicherheizung + "W": "W", # Wärme + "WS": "WS", # Wärme/Speicherheizung + }, +) diff --git a/src/bo4e/enum/vertragsart.py b/src/bo4e/enum/vertragsart.py index d96128459..e243dfc32 100644 --- a/src/bo4e/enum/vertragsart.py +++ b/src/bo4e/enum/vertragsart.py @@ -3,11 +3,13 @@ """ from enum import Enum -_vertragsart = { - "ENERGIELIEFERVERTRAG": "ENERGIELIEFERVERTRAG", # Energieliefervertrag - "NETZNUTZUNGSVERTRAG": "NETZNUTZUNGSVERTRAG", # Netznutzungsvertrag - "BILANZIERUNGSVERTRAG": "BILANZIERUNGSVERTRAG", # Bilanzierungsvertrag - "MESSSTELLENBETRIEBSVERTRAG": "MESSSTELLENBETRIEBSVERTRAG", # Messstellenabetriebsvertrag - "BUENDELVERTRAG": "BUENDELVERTRAG", # Bündelvertrag -} -Vertragsart = Enum("Vertragsart", _vertragsart) +Vertragsart = Enum( + "Vertragsart", + { + "ENERGIELIEFERVERTRAG": "ENERGIELIEFERVERTRAG", # Energieliefervertrag + "NETZNUTZUNGSVERTRAG": "NETZNUTZUNGSVERTRAG", # Netznutzungsvertrag + "BILANZIERUNGSVERTRAG": "BILANZIERUNGSVERTRAG", # Bilanzierungsvertrag + "MESSSTELLENBETRIEBSVERTRAG": "MESSSTELLENBETRIEBSVERTRAG", # Messstellenabetriebsvertrag + "BUENDELVERTRAG": "BUENDELVERTRAG", # Bündelvertrag + }, +) diff --git a/src/bo4e/enum/vertragsstatus.py b/src/bo4e/enum/vertragsstatus.py index b6912241b..a4843f684 100644 --- a/src/bo4e/enum/vertragsstatus.py +++ b/src/bo4e/enum/vertragsstatus.py @@ -3,15 +3,17 @@ """ from enum import Enum -_vertragsstatus = { - "IN_ARBEIT": "IN_ARBEIT", # in Arbeit - "UEBERMITTELT": "UEBERMITTELT", # übermittelt - "ANGENOMMEN": "ANGENOMMEN", # angenommen - "AKTIV": "AKTIV", # aktiv - "ABGELEHNT": "ABGELEHNT", # abgelehnt - "WIDERRUFEN": "WIDERRUFEN", # widerrufen - "STORNIERT": "STORNIERT", # storniert - "GEKUENDIGT": "GEKUENDIGT", # gekündigt - "BEENDET": "BEENDET", # beendet -} -Vertragsstatus = Enum("Vertragsstatus", _vertragsstatus) +Vertragsstatus = Enum( + "Vertragsstatus", + { + "IN_ARBEIT": "IN_ARBEIT", # in Arbeit + "UEBERMITTELT": "UEBERMITTELT", # übermittelt + "ANGENOMMEN": "ANGENOMMEN", # angenommen + "AKTIV": "AKTIV", # aktiv + "ABGELEHNT": "ABGELEHNT", # abgelehnt + "WIDERRUFEN": "WIDERRUFEN", # widerrufen + "STORNIERT": "STORNIERT", # storniert + "GEKUENDIGT": "GEKUENDIGT", # gekündigt + "BEENDET": "BEENDET", # beendet + }, +) diff --git a/src/bo4e/enum/zaehlerauspraegung.py b/src/bo4e/enum/zaehlerauspraegung.py index 0594873aa..4d8103092 100644 --- a/src/bo4e/enum/zaehlerauspraegung.py +++ b/src/bo4e/enum/zaehlerauspraegung.py @@ -4,8 +4,10 @@ from enum import Enum -_zaehlerauspraegung = { - "EINRICHTUNGSZAEHLER": "EINRICHTUNGSZAEHLER", # Einrichtungszaehler - "ZWEIRICHTUNGSZAEHLER": "ZWEIRICHTUNGSZAEHLER", # Zweirichtungszaehler -} -Zaehlerauspraegung = Enum("Zaehlerauspraegung", _zaehlerauspraegung) +Zaehlerauspraegung = Enum( + "Zaehlerauspraegung", + { + "EINRICHTUNGSZAEHLER": "EINRICHTUNGSZAEHLER", # Einrichtungszaehler + "ZWEIRICHTUNGSZAEHLER": "ZWEIRICHTUNGSZAEHLER", # Zweirichtungszaehler + }, +) diff --git a/src/bo4e/enum/zaehlertyp.py b/src/bo4e/enum/zaehlertyp.py index e3c8e7cd5..e5bd9223e 100644 --- a/src/bo4e/enum/zaehlertyp.py +++ b/src/bo4e/enum/zaehlertyp.py @@ -4,15 +4,17 @@ from enum import Enum -_zaehlertyp = { - "DREHSTROMZAEHLER": "DREHSTROMZAEHLER", # Drehstromzähler - "BALGENGASZAEHLER": "BALGENGASZAEHLER", # Balgengaszähler - "DREHKOLBENZAEHLER": "DREHKOLBENZAEHLER", # Drehkolbengaszähler - "SMARTMETER": "SMARTMETER", # Smart Meter Zähler - "LEISTUNGSZAEHLER": "LEISTUNGSZAEHLER", # leistungsmessender Zähler - "MAXIMUMZAEHLER": "MAXIMUMZAEHLER", # Maximumzähler - "TURBINENRADGASZAEHLER": "TURBINENRADGASZAEHLER", # Turbinenradgaszähler - "ULTRASCHALLGASZAEHLER": "ULTRASCHALLGASZAEHLER", # Ultraschallgaszähler - "WECHSELSTROMZAEHLER": "WECHSELSTROMZAEHLER", # Wechselstromzähler -} -Zaehlertyp = Enum("Zaehlertyp", _zaehlertyp) +Zaehlertyp = Enum( + "Zaehlertyp", + { + "DREHSTROMZAEHLER": "DREHSTROMZAEHLER", # Drehstromzähler + "BALGENGASZAEHLER": "BALGENGASZAEHLER", # Balgengaszähler + "DREHKOLBENZAEHLER": "DREHKOLBENZAEHLER", # Drehkolbengaszähler + "SMARTMETER": "SMARTMETER", # Smart Meter Zähler + "LEISTUNGSZAEHLER": "LEISTUNGSZAEHLER", # leistungsmessender Zähler + "MAXIMUMZAEHLER": "MAXIMUMZAEHLER", # Maximumzähler + "TURBINENRADGASZAEHLER": "TURBINENRADGASZAEHLER", # Turbinenradgaszähler + "ULTRASCHALLGASZAEHLER": "ULTRASCHALLGASZAEHLER", # Ultraschallgaszähler + "WECHSELSTROMZAEHLER": "WECHSELSTROMZAEHLER", # Wechselstromzähler + }, +) diff --git a/src/bo4e/enum/zeiteinheit.py b/src/bo4e/enum/zeiteinheit.py index afcbabd62..4019b0b43 100644 --- a/src/bo4e/enum/zeiteinheit.py +++ b/src/bo4e/enum/zeiteinheit.py @@ -4,16 +4,18 @@ from enum import Enum -_zeiteinheit = { - "SEKUNDE": "SEKUNDE", # Sekunde - "MINUTE": "MINUTE", # Minute - "STUNDE": "STUNDE", # Stunde - "VIERTEL_STUNDE": "VIERTEL_STUNDE", # Viertelstunde - "TAG": "TAG", # Tag - "WOCHE": "WOCHE", # Woche - "MONAT": "MONAT", # Monat - "QUARTAL": "QUARTAL", # Quartal - "HALBJAHR": "HALBJAHR", # Halbjahr - "JAHR": "JAHR", # Jahr -} -Zeiteinheit = Enum("Zeiteinheit", _zeiteinheit) +Zeiteinheit = Enum( + "Zeiteinheit", + { + "SEKUNDE": "SEKUNDE", # Sekunde + "MINUTE": "MINUTE", # Minute + "STUNDE": "STUNDE", # Stunde + "VIERTEL_STUNDE": "VIERTEL_STUNDE", # Viertelstunde + "TAG": "TAG", # Tag + "WOCHE": "WOCHE", # Woche + "MONAT": "MONAT", # Monat + "QUARTAL": "QUARTAL", # Quartal + "HALBJAHR": "HALBJAHR", # Halbjahr + "JAHR": "JAHR", # Jahr + }, +) diff --git a/src/bo4e/schemata/caseconverterschema.py b/src/bo4e/schemata/caseconverterschema.py index 2fc93092b..efdabd445 100644 --- a/src/bo4e/schemata/caseconverterschema.py +++ b/src/bo4e/schemata/caseconverterschema.py @@ -4,7 +4,7 @@ import re from typing import Pattern -from marshmallow import Schema, pre_load, post_dump +from marshmallow import Schema, post_dump, pre_load def snake_to_lower_camel_case(string: str) -> str: diff --git a/tests/test_adresse.py b/tests/test_adresse.py index 29eceddfb..1bf324420 100644 --- a/tests/test_adresse.py +++ b/tests/test_adresse.py @@ -1,6 +1,7 @@ import json import pytest + from bo4e.com.adresse import Adresse, AdresseSchema from bo4e.enum.landescode import Landescode diff --git a/tests/test_case_conversions.py b/tests/test_case_conversions.py index 72e10c7ee..9fd316d67 100644 --- a/tests/test_case_conversions.py +++ b/tests/test_case_conversions.py @@ -2,9 +2,10 @@ import attr import pytest -from bo4e.schemata.caseconverterschema import to_snake_case, snake_to_lower_camel_case, CaseConverterSchema from marshmallow import fields, post_load +from bo4e.schemata.caseconverterschema import CaseConverterSchema, snake_to_lower_camel_case, to_snake_case + @attr.s(auto_attribs=True) class MyClass: diff --git a/tests/test_geokoordinaten.py b/tests/test_geokoordinaten.py index e213ec69e..93853e80a 100644 --- a/tests/test_geokoordinaten.py +++ b/tests/test_geokoordinaten.py @@ -1,6 +1,7 @@ from decimal import Decimal import pytest + from bo4e.com.geokoordinaten import Geokoordinaten, GeokoordinatenSchema diff --git a/tests/test_geschaeftsobjekt.py b/tests/test_geschaeftsobjekt.py index 4731682cf..bea614208 100644 --- a/tests/test_geschaeftsobjekt.py +++ b/tests/test_geschaeftsobjekt.py @@ -1,4 +1,5 @@ import pytest + from bo4e.bo.geschaeftsobjekt import Geschaeftsobjekt, GeschaeftsobjektSchema from bo4e.com.externereferenz import ExterneReferenz from bo4e.enum.botyp import BoTyp diff --git a/tests/test_geschaeftspartner.py b/tests/test_geschaeftspartner.py index f045f16f0..9f84682da 100644 --- a/tests/test_geschaeftspartner.py +++ b/tests/test_geschaeftspartner.py @@ -1,6 +1,7 @@ import json import pytest + from bo4e.bo.geschaeftspartner import Geschaeftspartner, GeschaeftspartnerSchema from bo4e.com.adresse import Adresse from bo4e.enum.anrede import Anrede diff --git a/tests/test_marktlokation.py b/tests/test_marktlokation.py index cc28c1e52..4ab864003 100644 --- a/tests/test_marktlokation.py +++ b/tests/test_marktlokation.py @@ -2,6 +2,7 @@ from typing import Tuple import pytest + from bo4e.bo.geschaeftspartner import Geschaeftspartner from bo4e.bo.marktlokation import Marktlokation, MarktlokationSchema from bo4e.com.adresse import Adresse diff --git a/tests/test_menge.py b/tests/test_menge.py index 9232aa81b..eab8e5c2f 100644 --- a/tests/test_menge.py +++ b/tests/test_menge.py @@ -1,5 +1,7 @@ from decimal import Decimal + import pytest + from bo4e.com.menge import Menge, MengeSchema from bo4e.enum.mengeneinheit import Mengeneinheit diff --git a/tests/test_messlokationszuordnung.py b/tests/test_messlokationszuordnung.py index 5b00a40fb..57d85d7c3 100644 --- a/tests/test_messlokationszuordnung.py +++ b/tests/test_messlokationszuordnung.py @@ -1,9 +1,6 @@ from datetime import datetime -from bo4e.com.messlokationszuordnung import ( - Messlokationszuordnung, - MesslokationszuordnungSchema, -) +from bo4e.com.messlokationszuordnung import Messlokationszuordnung, MesslokationszuordnungSchema from bo4e.enum.arithmetische_operation import ArithmetischeOperation diff --git a/tests/test_unterschrift.py b/tests/test_unterschrift.py index 92fad6324..20e2f7e35 100644 --- a/tests/test_unterschrift.py +++ b/tests/test_unterschrift.py @@ -1,5 +1,7 @@ from datetime import datetime, timezone + import pytest + from bo4e.com.unterschrift import Unterschrift, UnterschriftSchema diff --git a/tests/test_vertrag.py b/tests/test_vertrag.py index 77c1abca5..7396bf4e2 100644 --- a/tests/test_vertrag.py +++ b/tests/test_vertrag.py @@ -1,18 +1,20 @@ from datetime import datetime, timezone + import pytest + from bo4e.bo.geschaeftspartner import Geschaeftspartner from bo4e.bo.vertrag import Vertrag, VertragSchema +from bo4e.com.adresse import Adresse from bo4e.com.unterschrift import Unterschrift from bo4e.com.vertragskonditionen import Vertragskonditionen from bo4e.com.vertragsteil import Vertragsteil -from bo4e.enum.botyp import BoTyp -from bo4e.enum.sparte import Sparte -from bo4e.enum.vertragsstatus import Vertragsstatus from bo4e.enum.anrede import Anrede -from bo4e.enum.kontaktart import Kontaktart +from bo4e.enum.botyp import BoTyp from bo4e.enum.geschaeftspartnerrolle import Geschaeftspartnerrolle -from bo4e.com.adresse import Adresse +from bo4e.enum.kontaktart import Kontaktart +from bo4e.enum.sparte import Sparte from bo4e.enum.vertragsart import Vertragsart +from bo4e.enum.vertragsstatus import Vertragsstatus class TestVertrag: diff --git a/tests/test_vertragskonditionen.py b/tests/test_vertragskonditionen.py index 5403a3441..cf21cef4c 100644 --- a/tests/test_vertragskonditionen.py +++ b/tests/test_vertragskonditionen.py @@ -1,5 +1,6 @@ from datetime import datetime, timezone from decimal import Decimal + from bo4e.com.vertragskonditionen import Vertragskonditionen, VertragskonditionenSchema from bo4e.com.zeitraum import Zeitraum from bo4e.enum.zeiteinheit import Zeiteinheit diff --git a/tests/test_vertragsteil.py b/tests/test_vertragsteil.py index c367839cf..d6f0212e9 100644 --- a/tests/test_vertragsteil.py +++ b/tests/test_vertragsteil.py @@ -1,6 +1,8 @@ from datetime import datetime, timezone from decimal import Decimal + import pytest + from bo4e.com.menge import Menge from bo4e.com.vertragsteil import Vertragsteil, VertragsteilSchema from bo4e.enum.mengeneinheit import Mengeneinheit diff --git a/tests/test_zaehler.py b/tests/test_zaehler.py index be6509253..1aa3c93cd 100644 --- a/tests/test_zaehler.py +++ b/tests/test_zaehler.py @@ -2,6 +2,7 @@ from decimal import Decimal import pytest + from bo4e.bo.zaehler import Zaehler, ZaehlerSchema from bo4e.com.externereferenz import ExterneReferenz from bo4e.com.zaehlwerk import Zaehlwerk diff --git a/tox.ini b/tox.ini index d4e14b461..21914027f 100644 --- a/tox.ini +++ b/tox.ini @@ -4,6 +4,7 @@ envlist = linting coverage docs + type_check skip_missing_interpreters = True isolated_build = True @@ -25,6 +26,14 @@ deps = pylint commands = pylint src/bo4e +[testenv:type_check] +# the type_check environment checks the type hints using mypy +deps = + -rrequirements.txt + mypy +commands = + mypy src/bo4e + # add single files (ending with .py) or packages here [testenv:coverage] usedevelop = True @@ -42,6 +51,7 @@ usedevelop = True deps = {[testenv:tests]deps} {[testenv:linting]deps} + {[testenv:type_check]deps} {[testenv:coverage]deps} black==21.5b2 # Replace by any tag/version: https://github.com/psf/black/tags From f9b02b2543de0bd024fd7a2e8dcda6618545b90d Mon Sep 17 00:00:00 2001 From: konstantin Date: Mon, 25 Oct 2021 13:41:14 +0200 Subject: [PATCH 2/6] =?UTF-8?q?=F0=9F=8E=A8=20Make=20type-ignores=20more?= =?UTF-8?q?=20specific=20(#66)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/conf.py | 1 - src/bo4e/bo/ansprechpartner.py | 2 +- src/bo4e/bo/geschaeftsobjekt.py | 4 ++-- src/bo4e/bo/geschaeftspartner.py | 2 +- src/bo4e/bo/marktlokation.py | 2 +- src/bo4e/bo/marktteilnehmer.py | 2 +- src/bo4e/bo/messlokation.py | 4 ++-- src/bo4e/bo/vertrag.py | 2 +- src/bo4e/bo/zaehler.py | 2 +- src/bo4e/com/adresse.py | 2 +- src/bo4e/com/dienstleistung.py | 2 +- src/bo4e/com/hardware.py | 2 +- src/bo4e/com/menge.py | 2 +- src/bo4e/com/messlokationszuordnung.py | 2 +- src/bo4e/com/rufnummer.py | 2 +- src/bo4e/com/zaehlwerk.py | 2 +- src/bo4e/com/zeitraum.py | 2 +- src/bo4e/com/zustaendigkeit.py | 2 +- tox.ini | 2 +- 19 files changed, 20 insertions(+), 21 deletions(-) diff --git a/docs/conf.py b/docs/conf.py index a7cf9e918..c17b18aca 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -13,7 +13,6 @@ import shutil import sys - __location__ = os.path.join(os.getcwd(), os.path.dirname(inspect.getfile(inspect.currentframe()))) # If extensions (or modules to document with autodoc) are in another directory, diff --git a/src/bo4e/bo/ansprechpartner.py b/src/bo4e/bo/ansprechpartner.py index b87f0853f..83daeb9e7 100644 --- a/src/bo4e/bo/ansprechpartner.py +++ b/src/bo4e/bo/ansprechpartner.py @@ -4,7 +4,7 @@ """ import attr from marshmallow import fields -from marshmallow_enum import EnumField # type:ignore +from marshmallow_enum import EnumField # type:ignore[import] from bo4e.bo.geschaeftsobjekt import Geschaeftsobjekt, GeschaeftsobjektSchema from bo4e.bo.geschaeftspartner import Geschaeftspartner, GeschaeftspartnerSchema diff --git a/src/bo4e/bo/geschaeftsobjekt.py b/src/bo4e/bo/geschaeftsobjekt.py index 33efb3ed4..21be8d66a 100644 --- a/src/bo4e/bo/geschaeftsobjekt.py +++ b/src/bo4e/bo/geschaeftsobjekt.py @@ -7,7 +7,7 @@ import attr from marshmallow import fields, post_load -from marshmallow_enum import EnumField # type:ignore +from marshmallow_enum import EnumField # type:ignore[import] from bo4e.com.externereferenz import ExterneReferenz, ExterneReferenzSchema from bo4e.enum.botyp import BoTyp @@ -35,7 +35,7 @@ class Geschaeftsobjekt: # optional attributes externe_referenzen: Optional[List[ExterneReferenz]] = attr.ib( - default=_create_empty_referenzen_list(), validator=attr.validators.instance_of(List) # type:ignore + default=_create_empty_referenzen_list(), validator=attr.validators.instance_of(List) # type:ignore[arg-type] ) diff --git a/src/bo4e/bo/geschaeftspartner.py b/src/bo4e/bo/geschaeftspartner.py index a223f81fc..920bfdd6f 100644 --- a/src/bo4e/bo/geschaeftspartner.py +++ b/src/bo4e/bo/geschaeftspartner.py @@ -7,7 +7,7 @@ import attr from marshmallow import fields -from marshmallow_enum import EnumField # type:ignore +from marshmallow_enum import EnumField # type:ignore[import] from bo4e.bo.geschaeftsobjekt import Geschaeftsobjekt, GeschaeftsobjektSchema from bo4e.com.adresse import Adresse, AdresseSchema diff --git a/src/bo4e/bo/marktlokation.py b/src/bo4e/bo/marktlokation.py index 7c7682728..1d27b0767 100644 --- a/src/bo4e/bo/marktlokation.py +++ b/src/bo4e/bo/marktlokation.py @@ -6,7 +6,7 @@ import attr from marshmallow import fields -from marshmallow_enum import EnumField # type:ignore +from marshmallow_enum import EnumField # type:ignore[import] from bo4e.bo.geschaeftsobjekt import Geschaeftsobjekt, GeschaeftsobjektSchema from bo4e.bo.geschaeftspartner import Geschaeftspartner, GeschaeftspartnerSchema diff --git a/src/bo4e/bo/marktteilnehmer.py b/src/bo4e/bo/marktteilnehmer.py index d031bfc30..df16682da 100644 --- a/src/bo4e/bo/marktteilnehmer.py +++ b/src/bo4e/bo/marktteilnehmer.py @@ -5,7 +5,7 @@ import attr from attr.validators import matches_re from marshmallow import fields -from marshmallow_enum import EnumField # type:ignore +from marshmallow_enum import EnumField # type:ignore[import] from bo4e.bo.geschaeftspartner import Geschaeftspartner, GeschaeftspartnerSchema from bo4e.enum.botyp import BoTyp diff --git a/src/bo4e/bo/messlokation.py b/src/bo4e/bo/messlokation.py index 84eea07cb..962ab21de 100644 --- a/src/bo4e/bo/messlokation.py +++ b/src/bo4e/bo/messlokation.py @@ -6,9 +6,9 @@ from typing import List, Optional import attr -from iso3166 import countries # type:ignore +from iso3166 import countries # type:ignore[import] from marshmallow import fields -from marshmallow_enum import EnumField # type:ignore +from marshmallow_enum import EnumField # type:ignore[import] from bo4e.bo.geschaeftsobjekt import Geschaeftsobjekt, GeschaeftsobjektSchema from bo4e.bo.zaehler import Zaehler, ZaehlerSchema diff --git a/src/bo4e/bo/vertrag.py b/src/bo4e/bo/vertrag.py index 0b16bb98f..7b2961a31 100644 --- a/src/bo4e/bo/vertrag.py +++ b/src/bo4e/bo/vertrag.py @@ -7,7 +7,7 @@ import attr from marshmallow import fields -from marshmallow_enum import EnumField # type:ignore +from marshmallow_enum import EnumField # type:ignore[import] from bo4e.bo.geschaeftsobjekt import Geschaeftsobjekt, GeschaeftsobjektSchema from bo4e.bo.geschaeftspartner import Geschaeftspartner, GeschaeftspartnerSchema diff --git a/src/bo4e/bo/zaehler.py b/src/bo4e/bo/zaehler.py index 3f5dd144b..d08203a16 100644 --- a/src/bo4e/bo/zaehler.py +++ b/src/bo4e/bo/zaehler.py @@ -8,7 +8,7 @@ import attr from marshmallow import fields -from marshmallow_enum import EnumField # type:ignore +from marshmallow_enum import EnumField # type:ignore[import] from bo4e.bo.geschaeftsobjekt import Geschaeftsobjekt, GeschaeftsobjektSchema from bo4e.bo.geschaeftspartner import Geschaeftspartner, GeschaeftspartnerSchema diff --git a/src/bo4e/com/adresse.py b/src/bo4e/com/adresse.py index 0efb013da..a34b3d7c3 100644 --- a/src/bo4e/com/adresse.py +++ b/src/bo4e/com/adresse.py @@ -5,7 +5,7 @@ import attr from marshmallow import fields, post_load -from marshmallow_enum import EnumField # type:ignore +from marshmallow_enum import EnumField # type:ignore[import] from bo4e.com.com import COM, COMSchema from bo4e.enum.landescode import Landescode diff --git a/src/bo4e/com/dienstleistung.py b/src/bo4e/com/dienstleistung.py index ce06b17a0..51af480f8 100644 --- a/src/bo4e/com/dienstleistung.py +++ b/src/bo4e/com/dienstleistung.py @@ -5,7 +5,7 @@ import attr from marshmallow import fields, post_load -from marshmallow_enum import EnumField # type:ignore +from marshmallow_enum import EnumField # type:ignore[import] from bo4e.com.com import COM, COMSchema from bo4e.enum.dienstleistungstyp import Dienstleistungstyp diff --git a/src/bo4e/com/hardware.py b/src/bo4e/com/hardware.py index 701fc8f50..4ab4ca400 100644 --- a/src/bo4e/com/hardware.py +++ b/src/bo4e/com/hardware.py @@ -5,7 +5,7 @@ import attr from marshmallow import fields, post_load -from marshmallow_enum import EnumField # type:ignore +from marshmallow_enum import EnumField # type:ignore[import] from bo4e.com.com import COM, COMSchema from bo4e.enum.geraetetyp import Geraetetyp diff --git a/src/bo4e/com/menge.py b/src/bo4e/com/menge.py index c93c1cb0b..7fa3482fa 100644 --- a/src/bo4e/com/menge.py +++ b/src/bo4e/com/menge.py @@ -7,7 +7,7 @@ import attr from marshmallow import fields, post_load -from marshmallow_enum import EnumField # type:ignore +from marshmallow_enum import EnumField # type:ignore[import] from bo4e.com.com import COM, COMSchema from bo4e.enum.mengeneinheit import Mengeneinheit diff --git a/src/bo4e/com/messlokationszuordnung.py b/src/bo4e/com/messlokationszuordnung.py index ff5493a3b..a30b7397d 100644 --- a/src/bo4e/com/messlokationszuordnung.py +++ b/src/bo4e/com/messlokationszuordnung.py @@ -6,7 +6,7 @@ import attr from marshmallow import fields, post_load -from marshmallow_enum import EnumField # type:ignore +from marshmallow_enum import EnumField # type:ignore[import] from bo4e.com.com import COM, COMSchema from bo4e.enum.arithmetische_operation import ArithmetischeOperation diff --git a/src/bo4e/com/rufnummer.py b/src/bo4e/com/rufnummer.py index 1acee7dea..551eab737 100644 --- a/src/bo4e/com/rufnummer.py +++ b/src/bo4e/com/rufnummer.py @@ -5,7 +5,7 @@ import attr from marshmallow import fields, post_load -from marshmallow_enum import EnumField # type:ignore +from marshmallow_enum import EnumField # type:ignore[import] from bo4e.com.com import COM, COMSchema from bo4e.enum.rufnummernart import Rufnummernart diff --git a/src/bo4e/com/zaehlwerk.py b/src/bo4e/com/zaehlwerk.py index c140f7033..23864e853 100644 --- a/src/bo4e/com/zaehlwerk.py +++ b/src/bo4e/com/zaehlwerk.py @@ -7,7 +7,7 @@ import attr from attr.validators import matches_re from marshmallow import fields, post_load -from marshmallow_enum import EnumField # type:ignore +from marshmallow_enum import EnumField # type:ignore[import] from bo4e.com.com import COM, COMSchema from bo4e.enum.energierichtung import Energierichtung diff --git a/src/bo4e/com/zeitraum.py b/src/bo4e/com/zeitraum.py index 258589b07..ac744ee20 100644 --- a/src/bo4e/com/zeitraum.py +++ b/src/bo4e/com/zeitraum.py @@ -9,7 +9,7 @@ import attr from marshmallow import fields, post_load -from marshmallow_enum import EnumField # type:ignore +from marshmallow_enum import EnumField # type:ignore[import] from bo4e.com.com import COM, COMSchema from bo4e.enum.zeiteinheit import Zeiteinheit diff --git a/src/bo4e/com/zustaendigkeit.py b/src/bo4e/com/zustaendigkeit.py index df682afe4..5852f6dba 100644 --- a/src/bo4e/com/zustaendigkeit.py +++ b/src/bo4e/com/zustaendigkeit.py @@ -5,7 +5,7 @@ import attr from marshmallow import fields, post_load -from marshmallow_enum import EnumField # type:ignore +from marshmallow_enum import EnumField # type:ignore[import] from bo4e.com.com import COM, COMSchema from bo4e.enum.themengebiet import Themengebiet diff --git a/tox.ini b/tox.ini index 21914027f..ce514cd4f 100644 --- a/tox.ini +++ b/tox.ini @@ -32,7 +32,7 @@ deps = -rrequirements.txt mypy commands = - mypy src/bo4e + mypy --show-error-codes src/bo4e # add single files (ending with .py) or packages here [testenv:coverage] From 9924d07019b0842744718be8bcddb9810e6408a0 Mon Sep 17 00:00:00 2001 From: konstantin Date: Wed, 3 Nov 2021 11:24:02 +0100 Subject: [PATCH 3/6] =?UTF-8?q?=F0=9F=93=A6=EF=B8=8F=20Mark=20Package=20as?= =?UTF-8?q?=20PEP=20561=20(Type=20Hints)=20compatible=20(#67)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * add py.typed filed * add section to setup.cfg --- setup.cfg | 3 +++ src/bo4e/py.typed | 2 ++ 2 files changed, 5 insertions(+) create mode 100644 src/bo4e/py.typed diff --git a/setup.cfg b/setup.cfg index 9b5fd13d9..680cefd98 100644 --- a/setup.cfg +++ b/setup.cfg @@ -35,3 +35,6 @@ install_requires = where = src exclude = tests + +[options.package_data] +* = py.typed diff --git a/src/bo4e/py.typed b/src/bo4e/py.typed new file mode 100644 index 000000000..5f3ea3d91 --- /dev/null +++ b/src/bo4e/py.typed @@ -0,0 +1,2 @@ +# Instruct type checkers to look for inline type annotations in this package. +# See PEP 561. From 300e012f9a0908ee2f73b244b25b5e843aff55ab Mon Sep 17 00:00:00 2001 From: konstantin Date: Wed, 3 Nov 2021 11:25:31 +0100 Subject: [PATCH 4/6] =?UTF-8?q?=F0=9F=8E=A8=20Type=20check=20the=20Unittes?= =?UTF-8?q?ts,=20too=20(#69)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/test_adresse.py | 2 +- tests/test_case_conversions.py | 2 +- tests/test_geokoordinaten.py | 2 +- tests/test_geschaeftsobjekt.py | 8 ++++++-- tests/test_geschaeftspartner.py | 2 +- tests/test_marktlokation.py | 2 +- tests/test_menge.py | 2 +- tests/test_messlokation.py | 2 +- tests/test_unterschrift.py | 2 +- tests/test_vertrag.py | 2 +- tests/test_vertragsteil.py | 2 +- tests/test_zaehler.py | 2 +- tests/test_zeitraum.py | 2 +- tox.ini | 1 + 14 files changed, 19 insertions(+), 14 deletions(-) diff --git a/tests/test_adresse.py b/tests/test_adresse.py index 1bf324420..846d5f5b7 100644 --- a/tests/test_adresse.py +++ b/tests/test_adresse.py @@ -1,6 +1,6 @@ import json -import pytest +import pytest # type:ignore[import] from bo4e.com.adresse import Adresse, AdresseSchema from bo4e.enum.landescode import Landescode diff --git a/tests/test_case_conversions.py b/tests/test_case_conversions.py index 9fd316d67..8825ccc7b 100644 --- a/tests/test_case_conversions.py +++ b/tests/test_case_conversions.py @@ -1,7 +1,7 @@ from typing import Dict, Optional import attr -import pytest +import pytest # type:ignore[import] from marshmallow import fields, post_load from bo4e.schemata.caseconverterschema import CaseConverterSchema, snake_to_lower_camel_case, to_snake_case diff --git a/tests/test_geokoordinaten.py b/tests/test_geokoordinaten.py index 93853e80a..e0f00af22 100644 --- a/tests/test_geokoordinaten.py +++ b/tests/test_geokoordinaten.py @@ -1,6 +1,6 @@ from decimal import Decimal -import pytest +import pytest # type:ignore[import] from bo4e.com.geokoordinaten import Geokoordinaten, GeokoordinatenSchema diff --git a/tests/test_geschaeftsobjekt.py b/tests/test_geschaeftsobjekt.py index bea614208..03f72df2a 100644 --- a/tests/test_geschaeftsobjekt.py +++ b/tests/test_geschaeftsobjekt.py @@ -1,4 +1,6 @@ -import pytest +from typing import List, Optional + +import pytest # type:ignore[import] from bo4e.bo.geschaeftsobjekt import Geschaeftsobjekt, GeschaeftsobjektSchema from bo4e.com.externereferenz import ExterneReferenz @@ -25,7 +27,9 @@ class TestGeschaeftsobjet: (BoTyp.ENERGIEMENGE, "2", []), ], ) - def test_serialisation(self, bo_typ: BoTyp, versionstruktur: int, externe_referenzen: ExterneReferenz): + def test_serialisation( + self, bo_typ: BoTyp, versionstruktur: str, externe_referenzen: Optional[List[ExterneReferenz]] + ): go = Geschaeftsobjekt( bo_typ=bo_typ, versionstruktur=versionstruktur, diff --git a/tests/test_geschaeftspartner.py b/tests/test_geschaeftspartner.py index 9f84682da..dec231f34 100644 --- a/tests/test_geschaeftspartner.py +++ b/tests/test_geschaeftspartner.py @@ -1,6 +1,6 @@ import json -import pytest +import pytest # type:ignore[import] from bo4e.bo.geschaeftspartner import Geschaeftspartner, GeschaeftspartnerSchema from bo4e.com.adresse import Adresse diff --git a/tests/test_marktlokation.py b/tests/test_marktlokation.py index 4ab864003..363efb3b0 100644 --- a/tests/test_marktlokation.py +++ b/tests/test_marktlokation.py @@ -1,7 +1,7 @@ import json from typing import Tuple -import pytest +import pytest # type:ignore[import] from bo4e.bo.geschaeftspartner import Geschaeftspartner from bo4e.bo.marktlokation import Marktlokation, MarktlokationSchema diff --git a/tests/test_menge.py b/tests/test_menge.py index eab8e5c2f..971f24858 100644 --- a/tests/test_menge.py +++ b/tests/test_menge.py @@ -1,6 +1,6 @@ from decimal import Decimal -import pytest +import pytest # type:ignore[import] from bo4e.com.menge import Menge, MengeSchema from bo4e.enum.mengeneinheit import Mengeneinheit diff --git a/tests/test_messlokation.py b/tests/test_messlokation.py index 15a35a32c..2c9adb2df 100644 --- a/tests/test_messlokation.py +++ b/tests/test_messlokation.py @@ -2,7 +2,7 @@ from datetime import datetime from decimal import Decimal -import pytest +import pytest # type:ignore[import] from bo4e.bo.messlokation import Messlokation, MesslokationSchema from bo4e.bo.zaehler import Zaehler diff --git a/tests/test_unterschrift.py b/tests/test_unterschrift.py index 20e2f7e35..b61e77c90 100644 --- a/tests/test_unterschrift.py +++ b/tests/test_unterschrift.py @@ -1,6 +1,6 @@ from datetime import datetime, timezone -import pytest +import pytest # type:ignore[import] from bo4e.com.unterschrift import Unterschrift, UnterschriftSchema diff --git a/tests/test_vertrag.py b/tests/test_vertrag.py index 7396bf4e2..106f57f4e 100644 --- a/tests/test_vertrag.py +++ b/tests/test_vertrag.py @@ -1,6 +1,6 @@ from datetime import datetime, timezone -import pytest +import pytest # type:ignore[import] from bo4e.bo.geschaeftspartner import Geschaeftspartner from bo4e.bo.vertrag import Vertrag, VertragSchema diff --git a/tests/test_vertragsteil.py b/tests/test_vertragsteil.py index d6f0212e9..5cdc72357 100644 --- a/tests/test_vertragsteil.py +++ b/tests/test_vertragsteil.py @@ -1,7 +1,7 @@ from datetime import datetime, timezone from decimal import Decimal -import pytest +import pytest # type:ignore[import] from bo4e.com.menge import Menge from bo4e.com.vertragsteil import Vertragsteil, VertragsteilSchema diff --git a/tests/test_zaehler.py b/tests/test_zaehler.py index 1aa3c93cd..6e954e10b 100644 --- a/tests/test_zaehler.py +++ b/tests/test_zaehler.py @@ -1,7 +1,7 @@ from datetime import datetime from decimal import Decimal -import pytest +import pytest # type:ignore[import] from bo4e.bo.zaehler import Zaehler, ZaehlerSchema from bo4e.com.externereferenz import ExterneReferenz diff --git a/tests/test_zeitraum.py b/tests/test_zeitraum.py index e3356a7bf..7e1298bb3 100644 --- a/tests/test_zeitraum.py +++ b/tests/test_zeitraum.py @@ -1,7 +1,7 @@ from datetime import datetime, timezone from decimal import Decimal -import pytest +import pytest # type:ignore[import] from bo4e.com.zeitraum import Zeitraum, ZeitraumSchema from bo4e.enum.zeiteinheit import Zeiteinheit diff --git a/tox.ini b/tox.ini index ce514cd4f..64287bad4 100644 --- a/tox.ini +++ b/tox.ini @@ -33,6 +33,7 @@ deps = mypy commands = mypy --show-error-codes src/bo4e + mypy --show-error-codes tests # add single files (ending with .py) or packages here [testenv:coverage] From ae4bb36e898168fc0a1b355b637e95bdc62833e3 Mon Sep 17 00:00:00 2001 From: konstantin Date: Wed, 3 Nov 2021 11:55:11 +0100 Subject: [PATCH 5/6] =?UTF-8?q?=F0=9F=91=B7=20Test=20in=20Multiple=20Pytho?= =?UTF-8?q?n=20Versions;=20Run=20Black,=20Coverage=20and=20Linter=20in=20m?= =?UTF-8?q?ost=20recent=20version=20only=20(#70)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/black.yml | 2 +- .github/workflows/codeql-analysis.yml | 58 +++++++++++++-------------- .github/workflows/coverage.yml | 2 +- .github/workflows/linting.yml | 6 +-- .github/workflows/python-publish.yml | 6 +-- .github/workflows/tests.yml | 6 +-- 6 files changed, 40 insertions(+), 40 deletions(-) diff --git a/.github/workflows/black.yml b/.github/workflows/black.yml index 12235d39f..2cfb31f83 100644 --- a/.github/workflows/black.yml +++ b/.github/workflows/black.yml @@ -6,7 +6,7 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - python-version: [3.9] + python-version: ["3.10"] os: [ubuntu-latest] steps: - uses: actions/checkout@v2 diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 296327629..5f166bff1 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -13,12 +13,12 @@ name: "CodeQL" on: push: - branches: [ develop, master ] + branches: [develop, master] pull_request: # The branches below must be a subset of the branches above - branches: [ develop ] + branches: [develop] schedule: - - cron: '20 18 * * 4' + - cron: "20 18 * * 4" jobs: analyze: @@ -32,40 +32,40 @@ jobs: strategy: fail-fast: false matrix: - language: [ 'python' ] + language: ["python"] # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ] # Learn more: # https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed steps: - - name: Checkout repository - uses: actions/checkout@v2 + - name: Checkout repository + uses: actions/checkout@v2 - # Initializes the CodeQL tools for scanning. - - name: Initialize CodeQL - uses: github/codeql-action/init@v1 - with: - languages: ${{ matrix.language }} - # If you wish to specify custom queries, you can do so here or in a config file. - # By default, queries listed here will override any specified in a config file. - # Prefix the list here with "+" to use these queries and those in the config file. - # queries: ./path/to/local/query, your-org/your-repo/queries@main + # Initializes the CodeQL tools for scanning. + - name: Initialize CodeQL + uses: github/codeql-action/init@v1 + with: + languages: ${{ matrix.language }} + # If you wish to specify custom queries, you can do so here or in a config file. + # By default, queries listed here will override any specified in a config file. + # Prefix the list here with "+" to use these queries and those in the config file. + # queries: ./path/to/local/query, your-org/your-repo/queries@main - # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). - # If this step fails, then you should remove it and run the build manually (see below) - - name: Autobuild - uses: github/codeql-action/autobuild@v1 + # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). + # If this step fails, then you should remove it and run the build manually (see below) + - name: Autobuild + uses: github/codeql-action/autobuild@v1 - # ℹ️ Command-line programs to run using the OS shell. - # 📚 https://git.io/JvXDl + # ℹ️ Command-line programs to run using the OS shell. + # 📚 https://git.io/JvXDl - # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines - # and modify them (or add more) to build your code if your project - # uses a compiled language + # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines + # and modify them (or add more) to build your code if your project + # uses a compiled language - #- run: | - # make bootstrap - # make release + #- run: | + # make bootstrap + # make release - - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v1 + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v1 diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml index 76f07cbb9..b469bfd60 100644 --- a/.github/workflows/coverage.yml +++ b/.github/workflows/coverage.yml @@ -6,7 +6,7 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - python-version: [3.9] + python-version: ["3.10"] os: [ubuntu-latest] steps: - uses: actions/checkout@v2 diff --git a/.github/workflows/linting.yml b/.github/workflows/linting.yml index df55b62d5..796ce72ee 100644 --- a/.github/workflows/linting.yml +++ b/.github/workflows/linting.yml @@ -1,13 +1,13 @@ name: "Linting" -on: [ push ] +on: [push] jobs: linting: name: Python Code Quality and Lint runs-on: ${{ matrix.os }} strategy: matrix: - python-version: [ 3.8 ] - os: [ ubuntu-latest ] + python-version: ["3.10"] + os: [ubuntu-latest] linter-env: ["linting", "type_check"] steps: - uses: actions/checkout@v2 diff --git a/.github/workflows/python-publish.yml b/.github/workflows/python-publish.yml index 7ce56dd36..e1a020283 100644 --- a/.github/workflows/python-publish.yml +++ b/.github/workflows/python-publish.yml @@ -6,15 +6,15 @@ name: Upload Python Package on: release: branches: master - types: [ created, edited ] + types: [created, edited] jobs: tests: runs-on: ${{ matrix.os }} strategy: matrix: - python-version: [ 3.8 ] - os: [ ubuntu-latest ] + python-version: [3.8] + os: [ubuntu-latest] steps: - uses: actions/checkout@v2 - name: Set up Python ${{ matrix.python-version }} diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index e393ae5cf..d59cc39d3 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -1,13 +1,13 @@ name: Tests -on: [ push ] +on: [push] jobs: tests: runs-on: ${{ matrix.os }} strategy: matrix: - python-version: [ 3.8 ] - os: [ ubuntu-latest ] + python-version: ["3.8", "3.9", "3.10"] + os: [ubuntu-latest] steps: - uses: actions/checkout@v2 - name: Set up Python ${{ matrix.python-version }} From f8c02f5f10cafb6d106b09b13843fd3ba30ea843 Mon Sep 17 00:00:00 2001 From: konstantin Date: Wed, 3 Nov 2021 11:57:05 +0100 Subject: [PATCH 6/6] Refactor Enum Construction (for better IDE Support) (#71) --- src/bo4e/enum/anrede.py | 26 ++--- src/bo4e/enum/arithmetische_operation.py | 24 ++-- src/bo4e/enum/bilanzierungsmethode.py | 27 +++-- src/bo4e/enum/botyp.py | 72 ++++++------ src/bo4e/enum/dienstleistungstyp.py | 103 +++++++++-------- src/bo4e/enum/energierichtung.py | 16 ++- src/bo4e/enum/gasqualitaet.py | 24 ++-- src/bo4e/enum/gebiettyp.py | 36 +++--- src/bo4e/enum/geraetetyp.py | 107 +++++++++--------- src/bo4e/enum/geschaeftspartnerrolle.py | 30 ++--- src/bo4e/enum/kontaktart.py | 30 ++--- src/bo4e/enum/marktrolle.py | 46 ++++---- src/bo4e/enum/mengeneinheit.py | 46 ++++---- src/bo4e/enum/netzebene.py | 37 +++--- src/bo4e/enum/rollencodetyp.py | 27 +++-- src/bo4e/enum/rufnummernart.py | 35 +++--- src/bo4e/enum/sparte.py | 30 ++--- src/bo4e/enum/strenum.py | 14 +++ src/bo4e/enum/tarifart.py | 27 +++-- src/bo4e/enum/themengebiet.py | 138 +++++++++++------------ src/bo4e/enum/titel.py | 27 +++-- src/bo4e/enum/verbrauchsart.py | 30 ++--- src/bo4e/enum/vertragsart.py | 30 ++--- src/bo4e/enum/vertragsstatus.py | 36 +++--- src/bo4e/enum/zaehlerauspraegung.py | 25 ++-- src/bo4e/enum/zaehlertyp.py | 35 +++--- src/bo4e/enum/zeiteinheit.py | 37 +++--- tests/test_ansprechpartner.py | 1 + 28 files changed, 560 insertions(+), 556 deletions(-) create mode 100644 src/bo4e/enum/strenum.py diff --git a/src/bo4e/enum/anrede.py b/src/bo4e/enum/anrede.py index d98321ced..baf1814c8 100644 --- a/src/bo4e/enum/anrede.py +++ b/src/bo4e/enum/anrede.py @@ -1,16 +1,14 @@ -""" -Übersicht möglicher Anreden, z.B. eines Geschäftspartners. -""" +# pylint: disable=missing-module-docstring +from bo4e.enum.strenum import StrEnum -from enum import Enum -Anrede = Enum( - "Anrede", - { - "HERR": "HERR", - "FRAU": "FRAU", - "EHELEUTE": "EHELEUTE", - "FIRMA": "FIRMA", - "INDIVIDUELL": "INDIVIDUELL", - }, -) +class Anrede(StrEnum): + """ + Übersicht möglicher Anreden, z.B. eines Geschäftspartners. + """ + + HERR = "HERR" + FRAU = "FRAU" + EHELEUTE = "EHELEUTE" + FIRMA = "FIRMA" + INDIVIDUELL = "INDIVIDUELL" diff --git a/src/bo4e/enum/arithmetische_operation.py b/src/bo4e/enum/arithmetische_operation.py index 797cccad3..bacd2ee4c 100644 --- a/src/bo4e/enum/arithmetische_operation.py +++ b/src/bo4e/enum/arithmetische_operation.py @@ -1,15 +1,13 @@ -""" -Mit dieser Aufzählung können arithmetische Operationen festgelegt werden. -""" +# pylint: disable=missing-module-docstring +from bo4e.enum.strenum import StrEnum -from enum import Enum -ArithmetischeOperation = Enum( - "ArithmetischeOperation", - { - "ADDITION": "ADDITION", - "SUBTRAKTION": "SUBTRAKTION", - "MULTIPLIKATION": "MULTIPLIKATION", - "DIVISION": "DIVISION", - }, -) +class ArithmetischeOperation(StrEnum): + """ + Mit dieser Aufzählung können arithmetische Operationen festgelegt werden. + """ + + ADDITION = "ADDITION" + SUBTRAKTION = "SUBTRAKTION" + MULTIPLIKATION = "MULTIPLIKATION" + DIVISION = "DIVISION" diff --git a/src/bo4e/enum/bilanzierungsmethode.py b/src/bo4e/enum/bilanzierungsmethode.py index 53690fc66..3296b0ce7 100644 --- a/src/bo4e/enum/bilanzierungsmethode.py +++ b/src/bo4e/enum/bilanzierungsmethode.py @@ -1,15 +1,14 @@ -""" -Mit dieser Aufzählung kann zwischen den Bilanzierungsmethoden bzw. -grundlagen unterschieden werden. -""" -from enum import Enum +# pylint: disable=missing-module-docstring +from bo4e.enum.strenum import StrEnum -Bilanzierungsmethode = Enum( - "Bilanzierungsmethode", - { - "RLM": "RLM", # Registrierende Leistungsmessung - "SLP": "SLP", # Standard Lastprofil - "TLP_GEMEINSAM": "TLP_GEMEINSAM", # TLP gemeinsame Messung - "TLP_GETRENNT": "TLP_GETRENNT", # TLP getrennte Messung - "PAUSCHAL": "PAUSCHAL", # Pauschale Betrachtung (Band) - }, -) + +class Bilanzierungsmethode(StrEnum): + """ + Mit dieser Aufzählung kann zwischen den Bilanzierungsmethoden bzw. -grundlagen unterschieden werden. + """ + + RLM = "RLM" # Registrierende Leistungsmessung + SLP = "SLP" # Standard Lastprofil + TLP_GEMEINSAM = "TLP_GEMEINSAM" # TLP gemeinsame Messung + TLP_GETRENNT = "TLP_GETRENNT" # TLP getrennte Messung + PAUSCHAL = "PAUSCHAL" # Pauschale Betrachtung (Band) diff --git a/src/bo4e/enum/botyp.py b/src/bo4e/enum/botyp.py index ea852a3b9..c73ad4736 100644 --- a/src/bo4e/enum/botyp.py +++ b/src/bo4e/enum/botyp.py @@ -1,39 +1,37 @@ -""" -Auflistung sämtlicher existierender Geschäftsobjekte. -""" +# pylint:disable=missing-module-docstring +from bo4e.enum.strenum import StrEnum -from enum import Enum -BoTyp = Enum( - "BoTyp", - { - "ANGEBOT": "ANGEBOT", - "ANSPRECHPARTNER": "ANSPRECHPARTNER", - "AUSSCHREIBUNG": "AUSSCHREIUNG", - "ENERGIEMENGE": "ENERGIEMENGE", - # It is practical to use the BoTyp Enum as discriminator in the database. - # Therefore we added one additional entry for GESCHAEFTSOBJEKT - # This is not defined by the documentation! - "GESCHAEFTSOBJEKT": "GESCHAEFTSOBJEKT", - "GESCHAEFTSPARTNER": "GESCHAEFTSPARTNER", - "KOSTEN": "KOSTEN", - "MARKTLOKATION": "MARKTLOKATION", - "MESSLOKATION": "MESSLOKATION", - "MARKTTEILNEHMER": "MARKTTEILNEHMER", - "NETZNUTZUNGSRECHNUNG": "NETZNUTZUNGSRECHNUNG", - "PREISBLATT": "PREISBLATT", - "PREISBLATTDIENSTLEISTUNG": "PREISBLATTDIENSTLEISTUNG", - "PREISBLATTKONZESSIONSABGABE": "PREISBLATTKONZESSIONSABGABE", - "PREISBLATTMESSUNG": "PREISBLATTMESSUNG", - "PREISBLATTNETZNUTZUNG": "PREISBLATTNETZNUTZUNG", - "PREISBLATTUMLAGEN": "PREISBLATTUMLAGEN", - "RECHNUNG": "RECHNUNG", - "REGIONALTARIF": "REGIONALTARIF", - "TARIFINFO": "TARIFINFO", - "TARIFKOSTEN": "TARIFKOSTEN", - "TARIFPREISBLATT": "TARIFPREISBLATT", - "VERTRAG": "VERTRAG", - "ZAEHLER": "ZAEHLER", - "ZEITREIHE": "ZEITREIHE", - }, -) +class BoTyp(StrEnum): + """ + Auflistung sämtlicher existierender Geschäftsobjekte. + """ + + ANGEBOT = "ANGEBOT" + ANSPRECHPARTNER = "ANSPRECHPARTNER" + AUSSCHREIBUNG = "AUSSCHREIUNG" + ENERGIEMENGE = "ENERGIEMENGE" + # It is practical to use the BoTyp Enum as discriminator in the database. + # Therefore we added one additional entry for GESCHAEFTSOBJEKT + # This is not defined by the documentation! + GESCHAEFTSOBJEKT = "GESCHAEFTSOBJEKT" + GESCHAEFTSPARTNER = "GESCHAEFTSPARTNER" + KOSTEN = "KOSTEN" + MARKTLOKATION = "MARKTLOKATION" + MESSLOKATION = "MESSLOKATION" + MARKTTEILNEHMER = "MARKTTEILNEHMER" + NETZNUTZUNGSRECHNUNG = "NETZNUTZUNGSRECHNUNG" + PREISBLATT = "PREISBLATT" + PREISBLATTDIENSTLEISTUNG = "PREISBLATTDIENSTLEISTUNG" + PREISBLATTKONZESSIONSABGABE = "PREISBLATTKONZESSIONSABGABE" + PREISBLATTMESSUNG = "PREISBLATTMESSUNG" + PREISBLATTNETZNUTZUNG = "PREISBLATTNETZNUTZUNG" + PREISBLATTUMLAGEN = "PREISBLATTUMLAGEN" + RECHNUNG = "RECHNUNG" + REGIONALTARIF = "REGIONALTARIF" + TARIFINFO = "TARIFINFO" + TARIFKOSTEN = "TARIFKOSTEN" + TARIFPREISBLATT = "TARIFPREISBLATT" + VERTRAG = "VERTRAG" + ZAEHLER = "ZAEHLER" + ZEITREIHE = "ZEITREIHE" diff --git a/src/bo4e/enum/dienstleistungstyp.py b/src/bo4e/enum/dienstleistungstyp.py index e9d14e43f..9b4c280cb 100644 --- a/src/bo4e/enum/dienstleistungstyp.py +++ b/src/bo4e/enum/dienstleistungstyp.py @@ -1,55 +1,54 @@ -""" -Auflistung möglicher abzurechnender Dienstleistungen. -""" -from enum import Enum +# pylint:disable=missing-module-docstring + +from bo4e.enum.strenum import StrEnum + # pylint: disable=line-too-long +class Dienstleistungstyp(StrEnum): + """ + Auflistung möglicher abzurechnender Dienstleistungen. + """ -Dienstleistungstyp: Enum = Enum( - "Dienstleistungstyp", - { - "DATENBEREITSTELLUNG_TAEGLICH": "DATENBEREITSTELLUNG_TAEGLICH", # Datenbereitstellung täglich - "DATENBEREITSTELLUNG_WOECHENTLICH": "DATENBEREITSTELLUNG_WOECHENTLICH", # Datenbereitstellung wöchentlich - "DATENBEREITSTELLUNG_MONATLICH": "DATENBEREITSTELLUNG_MONATLICH", # Datenbereitstellung monatlich - "DATENBEREITSTELLUNG_JAEHRLICH": "DATENBEREITSTELLUNG_JAEHRLICH", # Datenbereitstellung jährlich - "DATENBEREITSTELLUNG_HISTORISCHE_LG": "DATENBEREITSTELLUNG_HISTORISCHE_LG", - # Datenbereitstellung historischer Lastgänge - "DATENBEREITSTELLUNG_STUENDLICH": "DATENBEREITSTELLUNG_STUENDLICH", # Datenbereitstellung stündlich - "DATENBEREITSTELLUNG_VIERTELJAEHRLICH": "DATENBEREITSTELLUNG_VIERTELJAEHRLICH", - # Datenbereitstellung vierteljährlich - "DATENBEREITSTELLUNG_HALBJAEHRLICH": "DATENBEREITSTELLUNG_HALBJAEHRLICH", # Datenbereitstellung halbjährlich - "DATENBEREITSTELLUNG_MONATLICH_ZUSAETZLICH": "DATENBEREITSTELLUNG_MONATLICH_ZUSAETZLICH", - # Datenbereitstellung monatlich zusätzlich - "DATENBEREITSTELLUNG_EINMALIG": "DATENBEREITSTELLUNG_EINMALIG", # Datenbereitstellung einmalig - "AUSLESUNG_2X_TAEGLICH_FERNAUSLESUNG": "AUSLESUNG_2X_TAEGLICH_FERNAUSLESUNG", - # Auslesung 2x täglich mittels Fernauslesung - "AUSLESUNG_TAEGLICH_FERNAUSLESUNG": "AUSLESUNG_TAEGLICH_FERNAUSLESUNG", # Auslesung täglich mittels Fernauslesung - "AUSLESUNG_MANUELL_MSB": "AUSLESUNG_MANUELL_MSB", # Auslesung, manuell vom Messstellenbetreiber vorgenommen - "AUSLESUNG_MONATLICH_FERNAUSLESUNG": "AUSLESUNG_MONATLICH_FERNAUSLESUNG", - # Auslesung monatlich bei mittels Fernauslesung - "AUSLESUNG_JAEHRLICH_FERNAUSLESUNG": "AUSLESUNG_JAEHRLICH_FERNAUSLESUNG", - # Auslesung jährlich bei SLP mittels Fernauslesung - "AUSLESUNG_MDE": "AUSLESUNG_MDE", # Auslesung mit mobiler Daten Erfassung (MDE) - "ABLESUNG_MONATLICH": "ABLESUNG_MONATLICH", # Ablesung monatlich - "ABLESUNG_VIERTELJAEHRLICH": "ABLESUNG_VIERTELJAEHRLICH", # Ablesung vierteljährlich - "ABLESUNG_HALBJAEHRLICH": "ABLESUNG_HALBJAEHRLICH", # Ablesung halbjährlich - "ABLESUNG_JAEHRLICH": "ABLESUNG_JAEHRLICH", # Ablesung jährlich - "AUSLESUNG_FERNAUSLESUNG": "AUSLESUNG_FERNAUSLESUNG", # Auslesung mittels Fernauslesung - "ABLESUNG_ZUSAETZLICH_MSB": "ABLESUNG_ZUSAETZLICH_MSB", # Ablesung, zusätzlich vom Messstellenbetreiber vorgenommen - "ABLESUNG_ZUSAETZLICH_KUNDE": "ABLESUNG_ZUSAETZLICH_KUNDE", # Ablesung SLP, zusätzlich vom Kunden vorgenommen - "AUSLESUNG_FERNAUSLESUNG_ZUSAETZLICH_MSB": "AUSLESUNG_FERNAUSLESUNG_ZUSAETZLICH_MSB", - # Auslesung, mittels Fernauslesung, zusätzlich vom Messstellenbetreiber vorgenommen - "AUSLESUNG_MOATLICH_FERNAUSLESUNG": "AUSLESUNG_MOATLICH_FERNAUSLESUNG", # Auslesung monatlich mittels Fernauslesung - "AUSLESUNG_STUENDLICH_FERNAUSLESUNG": "AUSLESUNG_STUENDLICH_FERNAUSLESUNG", - # Auslesung stündlich mittels Fernauslesung - "AUSLESUNG_TEMPERATURMENGENUMWERTER": "AUSLESUNG_TEMPERATURMENGENUMWERTER", # Auslesung Temperaturmengenumwerter - "AUSLESUNG_ZUSTANDSMENGENUMWERTER": "AUSLESUNG_ZUSTANDSMENGENUMWERTER", # Auslesung Zustandsmengenumwerter - "AUSLESUNG_SYSTEMMENGENUMWERTER": "AUSLESUNG_SYSTEMMENGENUMWERTER", # Auslesung Systemmengenumwerter - "AUSLESUNG_VORGANG": "AUSLESUNG_VORGANG", # Auslesung je Vorgang - "AUSLESUNG_KOMPAKTMENGENUMWERTER": "AUSLESUNG_KOMPAKTMENGENUMWERTER", # Auslesung Kompaktmengenumwerter - "SPERRUNG": "SPERRUNG", # Sperrung einer Abnahmestelle - "ENTSPERRUNG": "ENTSPERRUNG", # Entsperrung einer Abnahmestelle - "MAHNKOSTEN": "MAHNKOSTEN", # Mahnkosten - "INKASSOKOSTEN": "INKASSOKOSTEN", # Inkassokosten - }, -) + DATENBEREITSTELLUNG_TAEGLICH = "DATENBEREITSTELLUNG_TAEGLICH" # Datenbereitstellung täglich + DATENBEREITSTELLUNG_WOECHENTLICH = "DATENBEREITSTELLUNG_WOECHENTLICH" # Datenbereitstellung wöchentlich + DATENBEREITSTELLUNG_MONATLICH = "DATENBEREITSTELLUNG_MONATLICH" # Datenbereitstellung monatlich + DATENBEREITSTELLUNG_JAEHRLICH = "DATENBEREITSTELLUNG_JAEHRLICH" # Datenbereitstellung jährlich + DATENBEREITSTELLUNG_HISTORISCHE_LG = "DATENBEREITSTELLUNG_HISTORISCHE_LG" + # Datenbereitstellung historischer Lastgänge + DATENBEREITSTELLUNG_STUENDLICH = "DATENBEREITSTELLUNG_STUENDLICH" # Datenbereitstellung stündlich + DATENBEREITSTELLUNG_VIERTELJAEHRLICH = "DATENBEREITSTELLUNG_VIERTELJAEHRLICH" + # Datenbereitstellung vierteljährlich + DATENBEREITSTELLUNG_HALBJAEHRLICH = "DATENBEREITSTELLUNG_HALBJAEHRLICH" # Datenbereitstellung halbjährlich + DATENBEREITSTELLUNG_MONATLICH_ZUSAETZLICH = "DATENBEREITSTELLUNG_MONATLICH_ZUSAETZLICH" + # Datenbereitstellung monatlich zusätzlich + DATENBEREITSTELLUNG_EINMALIG = "DATENBEREITSTELLUNG_EINMALIG" # Datenbereitstellung einmalig + AUSLESUNG_2X_TAEGLICH_FERNAUSLESUNG = "AUSLESUNG_2X_TAEGLICH_FERNAUSLESUNG" + # Auslesung 2x täglich mittels Fernauslesung + AUSLESUNG_TAEGLICH_FERNAUSLESUNG = "AUSLESUNG_TAEGLICH_FERNAUSLESUNG" # Auslesung täglich mittels Fernauslesung + AUSLESUNG_MANUELL_MSB = "AUSLESUNG_MANUELL_MSB" # Auslesung, manuell vom Messstellenbetreiber vorgenommen + AUSLESUNG_MONATLICH_FERNAUSLESUNG = "AUSLESUNG_MONATLICH_FERNAUSLESUNG" + # Auslesung monatlich bei mittels Fernauslesung + AUSLESUNG_JAEHRLICH_FERNAUSLESUNG = "AUSLESUNG_JAEHRLICH_FERNAUSLESUNG" + # Auslesung jährlich bei SLP mittels Fernauslesung + AUSLESUNG_MDE = "AUSLESUNG_MDE" # Auslesung mit mobiler Daten Erfassung (MDE) + ABLESUNG_MONATLICH = "ABLESUNG_MONATLICH" # Ablesung monatlich + ABLESUNG_VIERTELJAEHRLICH = "ABLESUNG_VIERTELJAEHRLICH" # Ablesung vierteljährlich + ABLESUNG_HALBJAEHRLICH = "ABLESUNG_HALBJAEHRLICH" # Ablesung halbjährlich + ABLESUNG_JAEHRLICH = "ABLESUNG_JAEHRLICH" # Ablesung jährlich + AUSLESUNG_FERNAUSLESUNG = "AUSLESUNG_FERNAUSLESUNG" # Auslesung mittels Fernauslesung + ABLESUNG_ZUSAETZLICH_MSB = "ABLESUNG_ZUSAETZLICH_MSB" # Ablesung, zusätzlich vom Messstellenbetreiber vorgenommen + ABLESUNG_ZUSAETZLICH_KUNDE = "ABLESUNG_ZUSAETZLICH_KUNDE" # Ablesung SLP, zusätzlich vom Kunden vorgenommen + AUSLESUNG_FERNAUSLESUNG_ZUSAETZLICH_MSB = "AUSLESUNG_FERNAUSLESUNG_ZUSAETZLICH_MSB" + # Auslesung, mittels Fernauslesung, zusätzlich vom Messstellenbetreiber vorgenommen + AUSLESUNG_MOATLICH_FERNAUSLESUNG = "AUSLESUNG_MOATLICH_FERNAUSLESUNG" # Auslesung monatlich mittels Fernauslesung + AUSLESUNG_STUENDLICH_FERNAUSLESUNG = "AUSLESUNG_STUENDLICH_FERNAUSLESUNG" + # Auslesung stündlich mittels Fernauslesung + AUSLESUNG_TEMPERATURMENGENUMWERTER = "AUSLESUNG_TEMPERATURMENGENUMWERTER" # Auslesung Temperaturmengenumwerter + AUSLESUNG_ZUSTANDSMENGENUMWERTER = "AUSLESUNG_ZUSTANDSMENGENUMWERTER" # Auslesung Zustandsmengenumwerter + AUSLESUNG_SYSTEMMENGENUMWERTER = "AUSLESUNG_SYSTEMMENGENUMWERTER" # Auslesung Systemmengenumwerter + AUSLESUNG_VORGANG = "AUSLESUNG_VORGANG" # Auslesung je Vorgang + AUSLESUNG_KOMPAKTMENGENUMWERTER = "AUSLESUNG_KOMPAKTMENGENUMWERTER" # Auslesung Kompaktmengenumwerter + SPERRUNG = "SPERRUNG" # Sperrung einer Abnahmestelle + ENTSPERRUNG = "ENTSPERRUNG" # Entsperrung einer Abnahmestelle + MAHNKOSTEN = "MAHNKOSTEN" # Mahnkosten + INKASSOKOSTEN = "INKASSOKOSTEN" # Inkassokosten diff --git a/src/bo4e/enum/energierichtung.py b/src/bo4e/enum/energierichtung.py index ffca6eb58..6fd1646fb 100644 --- a/src/bo4e/enum/energierichtung.py +++ b/src/bo4e/enum/energierichtung.py @@ -1,6 +1,12 @@ -""" -Spezifiziert die Energierichtung einer Markt- und/oder Messlokation -""" -from enum import Enum +# pylint:disable=missing-module-docstring -Energierichtung = Enum("Energierichtung", {"AUSSP": "AUSSP", "EINSP": "EINSP"}) # Ausspeisung # Einspeisung +from bo4e.enum.strenum import StrEnum + + +class Energierichtung(StrEnum): + """ + Spezifiziert die Energierichtung einer Markt- und/oder Messlokation + """ + + AUSSP = "AUSSP" # Ausspeisung + EINSP = "EINSP" # Einspeisung diff --git a/src/bo4e/enum/gasqualitaet.py b/src/bo4e/enum/gasqualitaet.py index 8e70e8eeb..1c4498bf8 100644 --- a/src/bo4e/enum/gasqualitaet.py +++ b/src/bo4e/enum/gasqualitaet.py @@ -1,12 +1,12 @@ -""" -Unterscheidung für hoch- und niedrig-kalorisches Gas. -""" -from enum import Enum - -Gasqualitaet = Enum( - "Gasqualitaet", - { - "H_GAS": "H_GAS", # High Caloric Gas - "L_GAS": "L_GAS", # Low Caloric Gas - }, -) # type: ignore +# pylint:disable=missing-module-docstring + +from bo4e.enum.strenum import StrEnum + + +class Gasqualitaet(StrEnum): + """ + Unterscheidung für hoch- und niedrig-kalorisches Gas. + """ + + H_GAS = "H_GAS" # High Caloric Gas + L_GAS = "L_GAS" # Low Caloric Gas diff --git a/src/bo4e/enum/gebiettyp.py b/src/bo4e/enum/gebiettyp.py index 7ed104c30..b460e21c7 100644 --- a/src/bo4e/enum/gebiettyp.py +++ b/src/bo4e/enum/gebiettyp.py @@ -1,19 +1,19 @@ -""" -List of possible Gebiettypen. -""" -from enum import Enum +# pylint:disable=missing-module-docstring -Gebiettyp = Enum( - "Gebiettyp", - { - "REGELZONE": "REGELZONE", - "MARKTGEBIET": "MARKTGEBIET", - "BILANZIERUNGSGEBIET": "BILANZIERUNGSGEBIET", - "VERTEILNETZ": "VERTEILNETZ", - "TRANSPORTNETZ": "TRANSPORTNETZ", - "REGIONALNETZ": "REGIONALNETZ", - "AREALNETZ": "AREALNETZ", - "GRUNDVERSORGUNGSGEBIET": "GRUNDVERSORGUNGSGEBIET", - "VERSORGUNGSGEBIET": "VERSORGUNGSGEBIET", - }, -) +from bo4e.enum.strenum import StrEnum + + +class Gebiettyp(StrEnum): + """ + List of possible Gebiettypen. + """ + + REGELZONE = "REGELZONE" + MARKTGEBIET = "MARKTGEBIET" + BILANZIERUNGSGEBIET = "BILANZIERUNGSGEBIET" + VERTEILNETZ = "VERTEILNETZ" + TRANSPORTNETZ = "TRANSPORTNETZ" + REGIONALNETZ = "REGIONALNETZ" + AREALNETZ = "AREALNETZ" + GRUNDVERSORGUNGSGEBIET = "GRUNDVERSORGUNGSGEBIET" + VERSORGUNGSGEBIET = "VERSORGUNGSGEBIET" diff --git a/src/bo4e/enum/geraetetyp.py b/src/bo4e/enum/geraetetyp.py index 70dc369b7..e1a9d23f8 100644 --- a/src/bo4e/enum/geraetetyp.py +++ b/src/bo4e/enum/geraetetyp.py @@ -1,56 +1,55 @@ -""" -Auflistung möglicher abzurechnender Gerätetypen. -""" -from enum import Enum +# pylint:disable=missing-module-docstring + +from bo4e.enum.strenum import StrEnum + # pylint: disable=line-too-long -Geraetetyp = Enum( - "Geraetetyp", - { - "WECHSELSTROMZAEHLER": "WECHSELSTROMZAEHLER", # Wechselstromzähler - "DREHSTROMZAEHLER": "DREHSTROMZAEHLER", # Drehstromzähler - "ZWEIRICHTUNGSZAEHLER": "ZWEIRICHTUNGSZAEHLER", # Zweirichtungszähler - "RLM_ZAEHLER": "RLM_ZAEHLER", # RLM-Zähler - "BALGENGASZAEHLER": "BALGENGASZAEHLER", # Balgengaszähler - "MAXIMUMZAEHLER": "MAXIMUMZAEHLER", # Maximumzähler (Schleppzähler) - "MULTIPLEXANLAGE": "MULTIPLEXANLAGE", # Multiplexeranlage - "PAUSCHALANLAGE": "PAUSCHALANLAGE", # Pauschalanlagen - "VERSTAERKERANLAGE": "VERSTAERKERANLAGE", # Verstärkeranlage - "SUMMATIONSGERAET": "SUMMATIONSGERAET", # Summationsgerät - "IMPULSGEBER": "IMPULSGEBER", # Impulsgeber - "EDL_21_ZAEHLERAUFSATZ": "EDL_21_ZAEHLERAUFSATZ", # EDL 21 Zähleraufsatz für Zähler - "VIER_QUADRANTEN_LASTGANGZAEHLER": "VIER_QUADRANTEN_LASTGANGZAEHLER", # Vier-Quadranten-Lastgangzähler - "MENGENUMWERTER": "MENGENUMWERTER", # Mengenumwerter - "STROMWANDLER": "STROMWANDLER", # Stromwandler - "SPANNUNGSWANDLER": "SPANNUNGSWANDLER", # Spannungs-Wandler - "KOMBIMESSWANDLER": "KOMBIMESSWANDLER", # Kombimesswandler - "BLOCKSTROMWANDLER": "BLOCKSTROMWANDLER", # Blockstromwandler - "DATENLOGGER": "DATENLOGGER", # Datenlogger - "KOMMUNIKATIONSANSCHLUSS": "KOMMUNIKATIONSANSCHLUSS", # Kommunikationsanschluss - "MODEM": "MODEM", # Modem - "TELEKOMMUNIKATIONSEINRICHTUNG": "TELEKOMMUNIKATIONSEINRICHTUNG", - # vom Messstellenbetreiber beigestellte Telekommunikationseinrichtung (Telefonanschluss) - "DREHKOLBENGASZAEHLER": "DREHKOLBENGASZAEHLER", # Drehkolbengaszähler - "TURBINENRADGASZAEHLER": "TURBINENRADGASZAEHLER", # Turbinenradgaszähler - "ULTRASCHALLZAEHLER": "ULTRASCHALLZAEHLER", # Ultraschallzähler - "WIRBELGASZAEHLER": "WIRBELGASZAEHLER", # Wirbelgaszähler - "MODERNE_MESSEINRICHTUNG": "MODERNE_MESSEINRICHTUNG", # moderne Messeinrichtung - "INTELLIGENTES_MESSYSTEM": "INTELLIGENTES_MESSYSTEM", # Intelligentes Messystem - "ELEKTRONISCHER_HAUSHALTSZAEHLER": "ELEKTRONISCHER_HAUSHALTSZAEHLER", # elektronischer Haushaltszähler - "STEUEREINRICHTUNG": "STEUEREINRICHTUNG", # Steuereinrichtung - "TARIFSCHALTGERAET": "TARIFSCHALTGERAET", # Tarifschaltgerät - "RUNDSTEUEREMPFAENGER": "RUNDSTEUEREMPFAENGER", # Rundsteuerempfänger - "OPTIONALE_ZUS_ZAEHLEINRICHTUNG": "OPTIONALE_ZUS_ZAEHLEINRICHTUNG", # optionale zusätzliche Zähleinrichtung - "MESSWANDLERSATZ_IMS_MME": "MESSWANDLERSATZ_IMS_MME", # Messwandlersatz Strom iMS und mME, NSP - "KOMBIMESSWANDLER_IMS_MME": "KOMBIMESSWANDLER_IMS_MME", # Kombimesswandlersatz (Strom u. Spg) iMS und mME - "TARIFSCHALTGERAET_IMS_MME": "TARIFSCHALTGERAET_IMS_MME", # Tarifschaltung iMS und mME - "RUNDSTEUEREMPFAENGER_IMS_MME": "RUNDSTEUEREMPFAENGER_IMS_MME", # Rundsteuerempfänger iMS und mME - "TEMPERATUR_KOMPENSATION": "TEMPERATUR_KOMPENSATION", # Temperaturkompensation - "HOECHSTBELASTUNGS_ANZEIGER": "HOECHSTBELASTUNGS_ANZEIGER", # Höchsbelastungsanzeiger - "SONSTIGES_GERAET": "SONSTIGES_GERAET", # Sonstiges Gerät - "PREPAYMENTZAEHLER": "PREPAYMENTZAEHLER", # Prepaymentzähler - "EDL_21": "EDL_21", # EDL21 - "96_H_ZAEHLER": "96_H_ZAEHLER", # 96 h Zähler - "EDL_40_ZAEHLERAUFSATZ": "EDL_40_ZAEHLERAUFSATZ", # EDL 40 Zähleraufsatz für Zähler - }, -) +class Geraetetyp(StrEnum): + """ + Auflistung möglicher abzurechnender Gerätetypen. + """ + + WECHSELSTROMZAEHLER = "WECHSELSTROMZAEHLER" # Wechselstromzähler + DREHSTROMZAEHLER = "DREHSTROMZAEHLER" # Drehstromzähler + ZWEIRICHTUNGSZAEHLER = "ZWEIRICHTUNGSZAEHLER" # Zweirichtungszähler + RLM_ZAEHLER = "RLM_ZAEHLER" # RLM-Zähler + BALGENGASZAEHLER = "BALGENGASZAEHLER" # Balgengaszähler + MAXIMUMZAEHLER = "MAXIMUMZAEHLER" # Maximumzähler (Schleppzähler) + MULTIPLEXANLAGE = "MULTIPLEXANLAGE" # Multiplexeranlage + PAUSCHALANLAGE = "PAUSCHALANLAGE" # Pauschalanlagen + VERSTAERKERANLAGE = "VERSTAERKERANLAGE" # Verstärkeranlage + SUMMATIONSGERAET = "SUMMATIONSGERAET" # Summationsgerät + IMPULSGEBER = "IMPULSGEBER" # Impulsgeber + EDL_21_ZAEHLERAUFSATZ = "EDL_21_ZAEHLERAUFSATZ" # EDL 21 Zähleraufsatz für Zähler + VIER_QUADRANTEN_LASTGANGZAEHLER = "VIER_QUADRANTEN_LASTGANGZAEHLER" # Vier-Quadranten-Lastgangzähler + MENGENUMWERTER = "MENGENUMWERTER" # Mengenumwerter + STROMWANDLER = "STROMWANDLER" # Stromwandler + SPANNUNGSWANDLER = "SPANNUNGSWANDLER" # Spannungs-Wandler + KOMBIMESSWANDLER = "KOMBIMESSWANDLER" # Kombimesswandler + BLOCKSTROMWANDLER = "BLOCKSTROMWANDLER" # Blockstromwandler + DATENLOGGER = "DATENLOGGER" # Datenlogger + KOMMUNIKATIONSANSCHLUSS = "KOMMUNIKATIONSANSCHLUSS" # Kommunikationsanschluss + MODEM = "MODEM" # Modem + TELEKOMMUNIKATIONSEINRICHTUNG = "TELEKOMMUNIKATIONSEINRICHTUNG" # vom Messstellenbetreiber beigestellte Telekommunikationseinrichtung (Telefonanschluss) + DREHKOLBENGASZAEHLER = "DREHKOLBENGASZAEHLER" # Drehkolbengaszähler + TURBINENRADGASZAEHLER = "TURBINENRADGASZAEHLER" # Turbinenradgaszähler + ULTRASCHALLZAEHLER = "ULTRASCHALLZAEHLER" # Ultraschallzähler + WIRBELGASZAEHLER = "WIRBELGASZAEHLER" # Wirbelgaszähler + MODERNE_MESSEINRICHTUNG = "MODERNE_MESSEINRICHTUNG" # moderne Messeinrichtung + INTELLIGENTES_MESSYSTEM = "INTELLIGENTES_MESSYSTEM" # Intelligentes Messystem + ELEKTRONISCHER_HAUSHALTSZAEHLER = "ELEKTRONISCHER_HAUSHALTSZAEHLER" # elektronischer Haushaltszähler + STEUEREINRICHTUNG = "STEUEREINRICHTUNG" # Steuereinrichtung + TARIFSCHALTGERAET = "TARIFSCHALTGERAET" # Tarifschaltgerät + RUNDSTEUEREMPFAENGER = "RUNDSTEUEREMPFAENGER" # Rundsteuerempfänger + OPTIONALE_ZUS_ZAEHLEINRICHTUNG = "OPTIONALE_ZUS_ZAEHLEINRICHTUNG" # optionale zusätzliche Zähleinrichtung + MESSWANDLERSATZ_IMS_MME = "MESSWANDLERSATZ_IMS_MME" # Messwandlersatz Strom iMS und mME, NSP + KOMBIMESSWANDLER_IMS_MME = "KOMBIMESSWANDLER_IMS_MME" # Kombimesswandlersatz (Strom u. Spg) iMS und mME + TARIFSCHALTGERAET_IMS_MME = "TARIFSCHALTGERAET_IMS_MME" # Tarifschaltung iMS und mME + RUNDSTEUEREMPFAENGER_IMS_MME = "RUNDSTEUEREMPFAENGER_IMS_MME" # Rundsteuerempfänger iMS und mME + TEMPERATUR_KOMPENSATION = "TEMPERATUR_KOMPENSATION" # Temperaturkompensation + HOECHSTBELASTUNGS_ANZEIGER = "HOECHSTBELASTUNGS_ANZEIGER" # Höchsbelastungsanzeiger + SONSTIGES_GERAET = "SONSTIGES_GERAET" # Sonstiges Gerät + PREPAYMENTZAEHLER = "PREPAYMENTZAEHLER" # Prepaymentzähler + EDL_21 = "EDL_21" # EDL21 + _96_H_ZAEHLER = "96_H_ZAEHLER" # 96 h Zähler + EDL_40_ZAEHLERAUFSATZ = "EDL_40_ZAEHLERAUFSATZ" # EDL 40 Zähleraufsatz für Zähler diff --git a/src/bo4e/enum/geschaeftspartnerrolle.py b/src/bo4e/enum/geschaeftspartnerrolle.py index 9233e979c..1aa3791de 100644 --- a/src/bo4e/enum/geschaeftspartnerrolle.py +++ b/src/bo4e/enum/geschaeftspartnerrolle.py @@ -1,15 +1,15 @@ -""" -Diese Rollen kann ein Geschäftspartner einnehmen. -""" -from enum import Enum - -Geschaeftspartnerrolle = Enum( - "Geschaeftspartnerrolle", - { - "LIEFERANT": "LIEFERANT", - "DIENSTLEISTER": "DIENSTLEISTER", - "KUNDE": "KUNDE", - "INTERESSENT": "INTERESSENT", - "MARKTPARTNER": "MARKTPARTNER", - }, -) +# pylint:disable=missing-module-docstring + +from bo4e.enum.strenum import StrEnum + + +class Geschaeftspartnerrolle(StrEnum): + """ + Diese Rollen kann ein Geschäftspartner einnehmen. + """ + + LIEFERANT = "LIEFERANT" + DIENSTLEISTER = "DIENSTLEISTER" + KUNDE = "KUNDE" + INTERESSENT = "INTERESSENT" + MARKTPARTNER = "MARKTPARTNER" diff --git a/src/bo4e/enum/kontaktart.py b/src/bo4e/enum/kontaktart.py index 518508fc5..54987ec54 100644 --- a/src/bo4e/enum/kontaktart.py +++ b/src/bo4e/enum/kontaktart.py @@ -1,15 +1,15 @@ -""" -Art des Kontaktes zwischen Geschäftspartnern. -""" -from enum import Enum - -Kontaktart = Enum( - "Kontaktart", - { - "ANSCHREIBEN": "ANSCHREIBEN", - "TELEFONAT": "TELEFONAT", - "FAX": "FAX", - "E_MAIL": "E_MAIL", - "SMS": "SMS", - }, -) +# pylint:disable=missing-module-docstring + +from bo4e.enum.strenum import StrEnum + + +class Kontaktart(StrEnum): + """ + Art des Kontaktes zwischen Geschäftspartnern. + """ + + ANSCHREIBEN = "ANSCHREIBEN" + TELEFONAT = "TELEFONAT" + FAX = "FAX" + E_MAIL = "E_MAIL" + SMS = "SMS" diff --git a/src/bo4e/enum/marktrolle.py b/src/bo4e/enum/marktrolle.py index bbbefe919..ac0f33f53 100644 --- a/src/bo4e/enum/marktrolle.py +++ b/src/bo4e/enum/marktrolle.py @@ -1,24 +1,24 @@ -""" -Diese Rollen kann ein Marktteilnehmer einnehmen. -""" -from enum import Enum +# pylint:disable=missing-module-docstring -Marktrolle = Enum( - "Marktrolle", - { - "NB": "NB", # Grid Operator - "LF": "LF", # Supplier - "MSB": "MSB", # Messstellenbetreiber - "DL": "DL", # Dienstleister - "BKV": "BKV", # Bilanzkreisverantwortlicher, - "BKO": "BKO", # Bilanzkoordinator / Marktgebietsverantwortlicher - "UENB": "UENB", # Übertragungsnetzbetreiber - "KUNDE_SELBST_NN": "KUNDE_SELBST_NN", # Kunden, die Netznutzungsentgelte selbst zahlen - "MGV": "MGV", # Marktgebietsverantwortlicher - "EIV": "EIV", # Einsatzverantwortlicher - "RB": "RB", # Registerbetreiber - "KUNDE": "KUNDE", - "INTERESSENT": "INTERESSENT", - "BTR": "BTR", # Betreiber einer technischen Ressource - }, -) +from bo4e.enum.strenum import StrEnum + + +class Marktrolle(StrEnum): + """ + Diese Rollen kann ein Marktteilnehmer einnehmen. + """ + + NB = "NB" # Grid Operator + LF = "LF" # Supplier + MSB = "MSB" # Messstellenbetreiber + DL = "DL" # Dienstleister + BKV = "BKV" # Bilanzkreisverantwortlicher, + BKO = "BKO" # Bilanzkoordinator / Marktgebietsverantwortlicher + UENB = "UENB" # Übertragungsnetzbetreiber + KUNDE_SELBST_NN = "KUNDE_SELBST_NN" # Kunden, die Netznutzungsentgelte selbst zahlen + MGV = "MGV" # Marktgebietsverantwortlicher + EIV = "EIV" # Einsatzverantwortlicher + RB = "RB" # Registerbetreiber + KUNDE = "KUNDE" + INTERESSENT = "INTERESSENT" + BTR = "BTR" # Betreiber einer technischen Ressource diff --git a/src/bo4e/enum/mengeneinheit.py b/src/bo4e/enum/mengeneinheit.py index aceb96759..4caaa83d1 100644 --- a/src/bo4e/enum/mengeneinheit.py +++ b/src/bo4e/enum/mengeneinheit.py @@ -1,24 +1,24 @@ -""" -Einheit: Messgrößen, die per Messung oder Vorgabe ermittelt werden können. -""" -from enum import Enum +# pylint:disable=missing-module-docstring -Mengeneinheit = Enum( - "Mengeneinheit", - { - "W": "W", # Watt - "WH": "WH", # Wattstunde - "KW": "KW", # Kilowatt - "KWH": "KWH", # Kilowattstunde - "KVARH": "KVARH", # Kilovarstunde - "MW": "MW", # Megawatt - "MWH": "MWH", # Megawattstunde - "STUECK": "STUECK", # Stückzahl - "KUBIKMETER": "KUBIKMETER", # Kubikmeter (Gas) - "STUNDE": "STUNDE", # Stunde - "TAG": "TAG", # Tage - "MONAT": "MONAT", # Monat - "JAHR": "JAHR", # Jahr - "PROZENT": "PROZENT", # Prozent - }, -) +from bo4e.enum.strenum import StrEnum + + +class Mengeneinheit(StrEnum): + """ + Einheit: Messgrößen, die per Messung oder Vorgabe ermittelt werden können. + """ + + W = "W" # Watt + WH = "WH" # Wattstunde + KW = "KW" # Kilowatt + KWH = "KWH" # Kilowattstunde + KVARH = "KVARH" # Kilovarstunde + MW = "MW" # Megawatt + MWH = "MWH" # Megawattstunde + STUECK = "STUECK" # Stückzahl + KUBIKMETER = "KUBIKMETER" # Kubikmeter (Gas) + STUNDE = "STUNDE" # Stunde + TAG = "TAG" # Tage + MONAT = "MONAT" # Monat + JAHR = "JAHR" # Jahr + PROZENT = "PROZENT" # Prozent diff --git a/src/bo4e/enum/netzebene.py b/src/bo4e/enum/netzebene.py index c31ad07c5..0479c1bd8 100644 --- a/src/bo4e/enum/netzebene.py +++ b/src/bo4e/enum/netzebene.py @@ -1,21 +1,20 @@ -""" -Auflistung möglicher Netzebenen innerhalb der Energiearten Strom und Gas. -""" +# pylint:disable=missing-module-docstring -from enum import Enum +from bo4e.enum.strenum import StrEnum -Netzebene = Enum( - "Netzebene", - { - "NSP": "NSP", # Niederspannung; Strom - "MSP": "MSP", # Mittelspannung; Strom - "HSP": "HSP", # Hochspannung; Strom - "HSS": "HSS", # Hoechstspannung; Strom - "MSP_NSP_UMSP": "MSP_NSP_UMSP", # MS/NS Umspannung; Strom - "HSP_MSP_UMSP": "HSP_MSP_UMSP", # HS/MS Umspannung; Strom - "HSS_HSP_UMSP": "HSS_HSP_UMSP", # HOES/HS Umspannung; Strom - "HD": "HD", # Hochdruck; Gas - "MD": "MD", # Mitteldruck; Gas - "ND": "ND", # Niederdruck; Gas - }, -) + +class Netzebene(StrEnum): + """ + Auflistung möglicher Netzebenen innerhalb der Energiearten Strom und Gas. + """ + + NSP = "NSP" # Niederspannung; Strom + MSP = "MSP" # Mittelspannung; Strom + HSP = "HSP" # Hochspannung; Strom + HSS = "HSS" # Hoechstspannung; Strom + MSP_NSP_UMSP = "MSP_NSP_UMSP" # MS/NS Umspannung; Strom + HSP_MSP_UMSP = "HSP_MSP_UMSP" # HS/MS Umspannung; Strom + HSS_HSP_UMSP = "HSS_HSP_UMSP" # HOES/HS Umspannung; Strom + HD = "HD" # Hochdruck; Gas + MD = "MD" # Mitteldruck; Gas + ND = "ND" # Niederdruck; Gas diff --git a/src/bo4e/enum/rollencodetyp.py b/src/bo4e/enum/rollencodetyp.py index 3c3311903..fe46d6849 100644 --- a/src/bo4e/enum/rollencodetyp.py +++ b/src/bo4e/enum/rollencodetyp.py @@ -1,14 +1,13 @@ -""" -Gibt den Codetyp einer Rolle, beispielsweise einer Marktrolle, an. -""" - -from enum import Enum - -Rollencodetyp = Enum( - "Rollencodetyp", - { - "BDEW": "BDEW", # Bundesverband der Energie- u. Wasserwirtschaft - "DVG": "DVG", # Deutscher Verein des Gas- und Wasserfaches - "GLN": "GLN", # Global Location Number - }, -) +# pylint:disable=missing-module-docstring + +from bo4e.enum.strenum import StrEnum + + +class Rollencodetyp(StrEnum): + """ + Gibt den Codetyp einer Rolle, beispielsweise einer Marktrolle, an. + """ + + BDEW = "BDEW" # Bundesverband der Energie- u. Wasserwirtschaft + DVG = "DVG" # Deutscher Verein des Gas- und Wasserfaches + GLN = "GLN" # Global Location Number diff --git a/src/bo4e/enum/rufnummernart.py b/src/bo4e/enum/rufnummernart.py index e5b3484dc..5b1928dfd 100644 --- a/src/bo4e/enum/rufnummernart.py +++ b/src/bo4e/enum/rufnummernart.py @@ -1,20 +1,19 @@ -""" -Abbildung verschiedener Rufnummerntypen. -""" +# pylint:disable=missing-module-docstring -from enum import Enum +from bo4e.enum.strenum import StrEnum -Rufnummernart = Enum( - "Rufnummernart", - { - "RUF_ZENTRALE": "RUF_ZENTRALE", # Rufnummer Zentrale - "FAX_ZENTRALE": "FAX_ZENTRALE", # Faxnummer Zentrale - "SAMMELRUF": "SAMMELRUF", # Sammelrufnummer - "SAMMELFAX": "SAMMELFAX", # Sammelfaxnummer - "ABTEILUNGRUF": "ABTEILUNGRUF", # Rufnummer Abteilung - "ABTEILUNGFAX": "ABTEILUNGFAX", # Faxnummer Abteilung - "RUF_DURCHWAHL": "RUF_DURCHWAHL", # Rufnummer Durchwahl - "FAX_DURCHWAHL": "FAX_DURCHWAHL", # Faxnummer Durchwahl - "MOBIL_NUMMER": "MOBIL_NUMMER", # Nummer des mobilen Telefons - }, -) + +class Rufnummernart(StrEnum): + """ + Abbildung verschiedener Rufnummerntypen. + """ + + RUF_ZENTRALE = "RUF_ZENTRALE" # Rufnummer Zentrale + FAX_ZENTRALE = "FAX_ZENTRALE" # Faxnummer Zentrale + SAMMELRUF = "SAMMELRUF" # Sammelrufnummer + SAMMELFAX = "SAMMELFAX" # Sammelfaxnummer + ABTEILUNGRUF = "ABTEILUNGRUF" # Rufnummer Abteilung + ABTEILUNGFAX = "ABTEILUNGFAX" # Faxnummer Abteilung + RUF_DURCHWAHL = "RUF_DURCHWAHL" # Rufnummer Durchwahl + FAX_DURCHWAHL = "FAX_DURCHWAHL" # Faxnummer Durchwahl + MOBIL_NUMMER = "MOBIL_NUMMER" # Nummer des mobilen Telefons diff --git a/src/bo4e/enum/sparte.py b/src/bo4e/enum/sparte.py index b38b3fc80..e4c012c9d 100644 --- a/src/bo4e/enum/sparte.py +++ b/src/bo4e/enum/sparte.py @@ -1,16 +1,16 @@ -""" -Unterscheidungsmöglichkeiten für die Sparte. -""" -from enum import Enum +# pylint:disable=missing-module-docstring -Sparte = Enum( - "Sparte", - { - "STROM": "STROM", - "GAS": "GAS", - "FERNWAERME": "FERNWAERME", - "NAHWAERME": "NAHWAERME", - "WASSER": "WASSER", - "ABWASSER": "ABWASSER", - }, -) +from bo4e.enum.strenum import StrEnum + + +class Sparte(StrEnum): + """ + Unterscheidungsmöglichkeiten für die Sparte. + """ + + STROM = "STROM" + GAS = "GAS" + FERNWAERME = "FERNWAERME" + NAHWAERME = "NAHWAERME" + WASSER = "WASSER" + ABWASSER = "ABWASSER" diff --git a/src/bo4e/enum/strenum.py b/src/bo4e/enum/strenum.py new file mode 100644 index 000000000..d43169921 --- /dev/null +++ b/src/bo4e/enum/strenum.py @@ -0,0 +1,14 @@ +""" +strenum contains an enum that inherits from the plain enum and string. +""" + +from enum import Enum + + +# pylint: disable=too-few-public-methods +class StrEnum(str, Enum): + """ + An enum that has string values. + """ + + # see https://docs.python.org/3/library/enum.html?highlight=strenum#others diff --git a/src/bo4e/enum/tarifart.py b/src/bo4e/enum/tarifart.py index 0d557ed61..43835491b 100644 --- a/src/bo4e/enum/tarifart.py +++ b/src/bo4e/enum/tarifart.py @@ -1,16 +1,15 @@ -""" -Die Tarifart wird verwendet zur Charakterisierung von Zählern und daraus resultierenden Tarifen. -""" +# pylint:disable=missing-module-docstring -from enum import Enum +from bo4e.enum.strenum import StrEnum -Tarifart = Enum( - "Tarifart", - { - "EINTARIF": "EINTARIF", # Eintarif - "ZWEITARIF": "ZWEITARIF", # Zweitarif - "MEHRTARIF": "MEHRTARIF", # Mehrtarif - "SMART_METER": "SMART_METER", # Smart Meter Tarif - "LEISTUNGSGEMESSEN": "LEISTUNGSGEMESSEN", # Leistungsgemessener Tarif - }, -) + +class Tarifart(StrEnum): + """ + Die Tarifart wird verwendet zur Charakterisierung von Zählern und daraus resultierenden Tarifen. + """ + + EINTARIF = "EINTARIF" # Eintarif + ZWEITARIF = "ZWEITARIF" # Zweitarif + MEHRTARIF = "MEHRTARIF" # Mehrtarif + SMART_METER = "SMART_METER" # Smart Meter Tarif + LEISTUNGSGEMESSEN = "LEISTUNGSGEMESSEN" # Leistungsgemessener Tarif diff --git a/src/bo4e/enum/themengebiet.py b/src/bo4e/enum/themengebiet.py index 5ec2bd5ad..5f343d034 100644 --- a/src/bo4e/enum/themengebiet.py +++ b/src/bo4e/enum/themengebiet.py @@ -1,71 +1,71 @@ -""" -Über dieses ENUM kann eine thematische Zuordnung, beispielsweise eines Ansprechpartners, vorgenommen werden. -""" +# pylint:disable=missing-module-docstring -from enum import Enum +from bo4e.enum.strenum import StrEnum -Themengebiet = Enum( - "Themengebiet", - { - "ALLGEMEINER_INFORMATIONSAUSTAUSCH": "ALLGEMEINER_INFORMATIONSAUSTAUSCH", # Allgemeiner Informationsaustausch - "AN_UND_ABMELDUNG": "AN_UND_ABMELDUNG", # An- und Abmeldung - "ANSPRECHPARTNER_ALLGEMEIN": "ANSPRECHPARTNER_ALLGEMEIN", # Ansprechpartner Allgemein - "ANSPRECHPARTNER_BDEW_DVGW": "ANSPRECHPARTNER_BDEW_DVGW", # Ansprechpartner BDEW/DVGW - "ANSPRECHPARTNER_IT_TECHNIK": "ANSPRECHPARTNER_IT_TECHNIK", # Ansprechpartner IT/Technik - "BILANZIERUNG": "BILANZIERUNG", # Bilanzierung - "BILANZKREISKOORDINATOR": "BILANZKREISKOORDINATOR", # Bilanzkreiskoordinator - "BILANZKREISVERANTWORTLICHER": "BILANZKREISVERANTWORTLICHER", # Bilanzkreisverantwortlicher - "DATENFORMATE_ZERTIFIKATE_VERSCHLUESSELUNGEN": "DATENFORMATE_ZERTIFIKATE_VERSCHLUESSELUNGEN", - # Datenformate, Zertifikate, Verschlüsselungen - "DEBITORENMANAGEMENT": "DEBITORENMANAGEMENT", # Debitorenmanagement - "DEMAND_SIDE_MANAGEMENT": "DEMAND_SIDE_MANAGEMENT", # Demand-Side-Management - "EDI_VEREINBARUNG": "EDI_VEREINBARUNG", # EDI-Vereinbarung - "EDIFACT": "EDIFACT", # EDIFACT - "ENERGIEDATENMANAGEMENT": "ENERGIEDATENMANAGEMENT", # Energiedatenmanagement - "FAHRPLANMANAGEMENT": "FAHRPLANMANAGEMENT", # Fahrplanmanagement - "ALOCAT": "ALOCAT", # Format:ALOCAT - "APERAK": "APERAK", # Format:APERAK - "CONTRL": "CONTRL", # Format:CONTRL - "INVOIC": "INVOIC", # Format:INVOIC - "MSCONS": "MSCONS", # Format:MSCONS - "ORDERS": "ORDERS", # Format:ORDERS - "ORDERSP": "ORDERSP", # Format:ORDERSP - "REMADV": "REMADV", # Format:REMADV - "UTILMD": "UTILMD", # Format:UTILMD - "GABI": "GABI", # GaBi Gas - "GELI": "GELI", # GeLi Gas - "GERAETERUECKGABE": "GERAETERUECKGABE", # Geräterückgabe - "GERAETEWECHSEL": "GERAETEWECHSEL", # Gerätewechsel - "GPKE": "GPKE", # GPKE - "INBETRIEBNAHME": "INBETRIEBNAHME", # Inbetriebnahme - "KAPAZITAETSMANAGEMENT": "KAPAZITAETSMANAGEMENT", # Kapazitätsmanagement - "KLAERFAELLE": "KLAERFAELLE", # Klärfälle - "LASTGAENGE_RLM": "LASTGAENGE_RLM", # Lastgänge RLM - "LIEFERANTENRAHMENVERTRAG": "LIEFERANTENRAHMENVERTRAG", # Lieferantenrahmenvertrag - "LIEFERANTENWECHSEL": "LIEFERANTENWECHSEL", # Lieferantenwechsel - "MABIS": "MABIS", # MaBiS - "MAHNWESEN": "MAHNWESEN", # Mahnwesen - "MARKTGEBIETSVERANTWORTLICHER": "MARKTGEBIETSVERANTWORTLICHER", # Marktgebietsverantwortlicher - "MARKTKOMMUNIKATION": "MARKTKOMMUNIKATION", # Marktkommunikation - "MEHR_MINDERMENGEN": "MEHR_MINDERMENGEN", # Mehr- Mindermengen - "MSB_MDL": "MSB_MDL", # MSB - MDL - "NETZABRECHNUNG": "NETZABRECHNUNG", # Netzabrechnung - "NETZENTGELTE": "NETZENTGELTE", # Netzentgelte - "NETZMANAGEMENT": "NETZMANAGEMENT", # Netzmanagement - "RECHT": "RECHT", # Recht - "REGULIERUNGSMANAGEMENT": "REGULIERUNGSMANAGEMENT", # Regulierungsmanagement - "REKLAMATIONEN": "REKLAMATIONEN", # Reklamationen - "SPERREN_ENTSPERREN_INKASSO": "SPERREN_ENTSPERREN_INKASSO", # Sperren/Entsperren/Inkasso - "STAMMDATEN": "STAMMDATEN", # Stammdaten - "STOERUNGSFAELLE": "STOERUNGSFAELLE", # Übermittlung_Störungsfälle - "TECHNISCHE_FRAGEN": "TECHNISCHE_FRAGEN", # Technische Fragen - "UMSTELLUNG_INVOIC": "UMSTELLUNG_INVOIC", # Umstellung INVOIC - "VERSCHLUESSELUNG_SIGNATUR": "VERSCHLUESSELUNG_SIGNATUR", # Verschlüsselung/Signatur - "VERTRAGSMANAGEMENT": "VERTRAGSMANAGEMENT", # Vertragsmanagement - "VERTRIEB": "VERTRIEB", # Vertrieb - "WIM": "WIM", # WiM - "ZAEHLERSTAENDE_SLP": "ZAEHLERSTAENDE_SLP", # Zählerstände SLP - "ZAHLUNGSVERKEHR": "ZAHLUNGSVERKEHR", # Zahlungsverkehr - "ZUORDNUNGSVEREINBARUNG": "ZUORDNUNGSVEREINBARUNG", # Zuordnungsvereinbarung - }, -) + +class Themengebiet(StrEnum): + """ + Über dieses ENUM kann eine thematische Zuordnung, beispielsweise eines Ansprechpartners, vorgenommen werden. + """ + + ALLGEMEINER_INFORMATIONSAUSTAUSCH = "ALLGEMEINER_INFORMATIONSAUSTAUSCH" # Allgemeiner Informationsaustausch + AN_UND_ABMELDUNG = "AN_UND_ABMELDUNG" # An- und Abmeldung + ANSPRECHPARTNER_ALLGEMEIN = "ANSPRECHPARTNER_ALLGEMEIN" # Ansprechpartner Allgemein + ANSPRECHPARTNER_BDEW_DVGW = "ANSPRECHPARTNER_BDEW_DVGW" # Ansprechpartner BDEW/DVGW + ANSPRECHPARTNER_IT_TECHNIK = "ANSPRECHPARTNER_IT_TECHNIK" # Ansprechpartner IT/Technik + BILANZIERUNG = "BILANZIERUNG" # Bilanzierung + BILANZKREISKOORDINATOR = "BILANZKREISKOORDINATOR" # Bilanzkreiskoordinator + BILANZKREISVERANTWORTLICHER = "BILANZKREISVERANTWORTLICHER" # Bilanzkreisverantwortlicher + DATENFORMATE_ZERTIFIKATE_VERSCHLUESSELUNGEN = ( + "DATENFORMATE_ZERTIFIKATE_VERSCHLUESSELUNGEN" # Datenformate, Zertifikate, Verschlüsselungen + ) + DEBITORENMANAGEMENT = "DEBITORENMANAGEMENT" # Debitorenmanagement + DEMAND_SIDE_MANAGEMENT = "DEMAND_SIDE_MANAGEMENT" # Demand-Side-Management + EDI_VEREINBARUNG = "EDI_VEREINBARUNG" # EDI-Vereinbarung + EDIFACT = "EDIFACT" # EDIFACT + ENERGIEDATENMANAGEMENT = "ENERGIEDATENMANAGEMENT" # Energiedatenmanagement + FAHRPLANMANAGEMENT = "FAHRPLANMANAGEMENT" # Fahrplanmanagement + ALOCAT = "ALOCAT" # Format:ALOCAT + APERAK = "APERAK" # Format:APERAK + CONTRL = "CONTRL" # Format:CONTRL + INVOIC = "INVOIC" # Format:INVOIC + MSCONS = "MSCONS" # Format:MSCONS + ORDERS = "ORDERS" # Format:ORDERS + ORDERSP = "ORDERSP" # Format:ORDERSP + REMADV = "REMADV" # Format:REMADV + UTILMD = "UTILMD" # Format:UTILMD + GABI = "GABI" # GaBi Gas + GELI = "GELI" # GeLi Gas + GERAETERUECKGABE = "GERAETERUECKGABE" # Geräterückgabe + GERAETEWECHSEL = "GERAETEWECHSEL" # Gerätewechsel + GPKE = "GPKE" # GPKE + INBETRIEBNAHME = "INBETRIEBNAHME" # Inbetriebnahme + KAPAZITAETSMANAGEMENT = "KAPAZITAETSMANAGEMENT" # Kapazitätsmanagement + KLAERFAELLE = "KLAERFAELLE" # Klärfälle + LASTGAENGE_RLM = "LASTGAENGE_RLM" # Lastgänge RLM + LIEFERANTENRAHMENVERTRAG = "LIEFERANTENRAHMENVERTRAG" # Lieferantenrahmenvertrag + LIEFERANTENWECHSEL = "LIEFERANTENWECHSEL" # Lieferantenwechsel + MABIS = "MABIS" # MaBiS + MAHNWESEN = "MAHNWESEN" # Mahnwesen + MARKTGEBIETSVERANTWORTLICHER = "MARKTGEBIETSVERANTWORTLICHER" # Marktgebietsverantwortlicher + MARKTKOMMUNIKATION = "MARKTKOMMUNIKATION" # Marktkommunikation + MEHR_MINDERMENGEN = "MEHR_MINDERMENGEN" # Mehr- Mindermengen + MSB_MDL = "MSB_MDL" # MSB - MDL + NETZABRECHNUNG = "NETZABRECHNUNG" # Netzabrechnung + NETZENTGELTE = "NETZENTGELTE" # Netzentgelte + NETZMANAGEMENT = "NETZMANAGEMENT" # Netzmanagement + RECHT = "RECHT" # Recht + REGULIERUNGSMANAGEMENT = "REGULIERUNGSMANAGEMENT" # Regulierungsmanagement + REKLAMATIONEN = "REKLAMATIONEN" # Reklamationen + SPERREN_ENTSPERREN_INKASSO = "SPERREN_ENTSPERREN_INKASSO" # Sperren/Entsperren/Inkasso + STAMMDATEN = "STAMMDATEN" # Stammdaten + STOERUNGSFAELLE = "STOERUNGSFAELLE" # Übermittlung_Störungsfälle + TECHNISCHE_FRAGEN = "TECHNISCHE_FRAGEN" # Technische Fragen + UMSTELLUNG_INVOIC = "UMSTELLUNG_INVOIC" # Umstellung INVOIC + VERSCHLUESSELUNG_SIGNATUR = "VERSCHLUESSELUNG_SIGNATUR" # Verschlüsselung/Signatur + VERTRAGSMANAGEMENT = "VERTRAGSMANAGEMENT" # Vertragsmanagement + VERTRIEB = "VERTRIEB" # Vertrieb + WIM = "WIM" # WiM + ZAEHLERSTAENDE_SLP = "ZAEHLERSTAENDE_SLP" # Zählerstände SLP + ZAHLUNGSVERKEHR = "ZAHLUNGSVERKEHR" # Zahlungsverkehr + ZUORDNUNGSVEREINBARUNG = "ZUORDNUNGSVEREINBARUNG" # Zuordnungsvereinbarung diff --git a/src/bo4e/enum/titel.py b/src/bo4e/enum/titel.py index c3b06b9d4..dc48ab6a6 100644 --- a/src/bo4e/enum/titel.py +++ b/src/bo4e/enum/titel.py @@ -1,14 +1,13 @@ -""" -Übersicht möglicher Titel, z.B. eines Geschäftspartners. -""" - -from enum import Enum - -Titel = Enum( - "Titel", - { - "DR": "DR", # Doktor*In - "PROF": "PROF", # Professor*In - "PROF_DR": "PROF_DR", # Professor*In Dr. - }, -) +# pylint:disable=missing-module-docstring + +from bo4e.enum.strenum import StrEnum + + +class Titel(StrEnum): + """ + Übersicht möglicher Titel, z.B. eines Geschäftspartners. + """ + + DR = "DR" # Doktor*In + PROF = "PROF" # Professor*In + PROF_DR = "PROF_DR" # Professor*In Dr. diff --git a/src/bo4e/enum/verbrauchsart.py b/src/bo4e/enum/verbrauchsart.py index d8de65444..8cec4704a 100644 --- a/src/bo4e/enum/verbrauchsart.py +++ b/src/bo4e/enum/verbrauchsart.py @@ -1,15 +1,15 @@ -""" -Verbrauchsart einer Marktlokation. -""" -from enum import Enum - -Verbrauchsart = Enum( - "Verbrauchsart", - { - "KL": "KL", # Kraft/Licht - "KLW": "KLW", # Kraft/Licht/Wärme - "KLWS": "KLWS", # Kraft/Licht/Wärme/Speicherheizung - "W": "W", # Wärme - "WS": "WS", # Wärme/Speicherheizung - }, -) +# pylint:disable=missing-module-docstring + +from bo4e.enum.strenum import StrEnum + + +class Verbrauchsart(StrEnum): + """ + Verbrauchsart einer Marktlokation. + """ + + KL = "KL" # Kraft/Licht + KLW = "KLW" # Kraft/Licht/Wärme + KLWS = "KLWS" # Kraft/Licht/Wärme/Speicherheizung + W = "W" # Wärme + WS = "WS" # Wärme/Speicherheizung diff --git a/src/bo4e/enum/vertragsart.py b/src/bo4e/enum/vertragsart.py index e243dfc32..94b8853ca 100644 --- a/src/bo4e/enum/vertragsart.py +++ b/src/bo4e/enum/vertragsart.py @@ -1,15 +1,15 @@ -""" -Aufzählung der Vertragsarten. -""" -from enum import Enum - -Vertragsart = Enum( - "Vertragsart", - { - "ENERGIELIEFERVERTRAG": "ENERGIELIEFERVERTRAG", # Energieliefervertrag - "NETZNUTZUNGSVERTRAG": "NETZNUTZUNGSVERTRAG", # Netznutzungsvertrag - "BILANZIERUNGSVERTRAG": "BILANZIERUNGSVERTRAG", # Bilanzierungsvertrag - "MESSSTELLENBETRIEBSVERTRAG": "MESSSTELLENBETRIEBSVERTRAG", # Messstellenabetriebsvertrag - "BUENDELVERTRAG": "BUENDELVERTRAG", # Bündelvertrag - }, -) +# pylint:disable=missing-module-docstring + +from bo4e.enum.strenum import StrEnum + + +class Vertragsart(StrEnum): + """ + Aufzählung der Vertragsarten. + """ + + ENERGIELIEFERVERTRAG = "ENERGIELIEFERVERTRAG" # Energieliefervertrag + NETZNUTZUNGSVERTRAG = "NETZNUTZUNGSVERTRAG" # Netznutzungsvertrag + BILANZIERUNGSVERTRAG = "BILANZIERUNGSVERTRAG" # Bilanzierungsvertrag + MESSSTELLENBETRIEBSVERTRAG = "MESSSTELLENBETRIEBSVERTRAG" # Messstellenabetriebsvertrag + BUENDELVERTRAG = "BUENDELVERTRAG" # Bündelvertrag diff --git a/src/bo4e/enum/vertragsstatus.py b/src/bo4e/enum/vertragsstatus.py index a4843f684..aa676fd7d 100644 --- a/src/bo4e/enum/vertragsstatus.py +++ b/src/bo4e/enum/vertragsstatus.py @@ -1,19 +1,19 @@ -""" -Abbildung einer Statusinformation für Verträge. -""" -from enum import Enum +# pylint:disable=missing-module-docstring -Vertragsstatus = Enum( - "Vertragsstatus", - { - "IN_ARBEIT": "IN_ARBEIT", # in Arbeit - "UEBERMITTELT": "UEBERMITTELT", # übermittelt - "ANGENOMMEN": "ANGENOMMEN", # angenommen - "AKTIV": "AKTIV", # aktiv - "ABGELEHNT": "ABGELEHNT", # abgelehnt - "WIDERRUFEN": "WIDERRUFEN", # widerrufen - "STORNIERT": "STORNIERT", # storniert - "GEKUENDIGT": "GEKUENDIGT", # gekündigt - "BEENDET": "BEENDET", # beendet - }, -) +from bo4e.enum.strenum import StrEnum + + +class Vertragsstatus(StrEnum): + """ + Abbildung einer Statusinformation für Verträge. + """ + + IN_ARBEIT = "IN_ARBEIT" # in Arbeit + UEBERMITTELT = "UEBERMITTELT" # übermittelt + ANGENOMMEN = "ANGENOMMEN" # angenommen + AKTIV = "AKTIV" # aktiv + ABGELEHNT = "ABGELEHNT" # abgelehnt + WIDERRUFEN = "WIDERRUFEN" # widerrufen + STORNIERT = "STORNIERT" # storniert + GEKUENDIGT = "GEKUENDIGT" # gekündigt + BEENDET = "BEENDET" # beendet diff --git a/src/bo4e/enum/zaehlerauspraegung.py b/src/bo4e/enum/zaehlerauspraegung.py index 4d8103092..809f83326 100644 --- a/src/bo4e/enum/zaehlerauspraegung.py +++ b/src/bo4e/enum/zaehlerauspraegung.py @@ -1,13 +1,12 @@ -""" -Gibt an, ob es sich um einen Einrichtungs- oder Zweirichtungszähler handelt. -""" - -from enum import Enum - -Zaehlerauspraegung = Enum( - "Zaehlerauspraegung", - { - "EINRICHTUNGSZAEHLER": "EINRICHTUNGSZAEHLER", # Einrichtungszaehler - "ZWEIRICHTUNGSZAEHLER": "ZWEIRICHTUNGSZAEHLER", # Zweirichtungszaehler - }, -) +# pylint:disable=missing-module-docstring + +from bo4e.enum.strenum import StrEnum + + +class Zaehlerauspraegung(StrEnum): + """ + Gibt an, ob es sich um einen Einrichtungs- oder Zweirichtungszähler handelt. + """ + + EINRICHTUNGSZAEHLER = "EINRICHTUNGSZAEHLER" # Einrichtungszaehler + ZWEIRICHTUNGSZAEHLER = "ZWEIRICHTUNGSZAEHLER" # Zweirichtungszaehler diff --git a/src/bo4e/enum/zaehlertyp.py b/src/bo4e/enum/zaehlertyp.py index e5bd9223e..d8b6c52b8 100644 --- a/src/bo4e/enum/zaehlertyp.py +++ b/src/bo4e/enum/zaehlertyp.py @@ -1,20 +1,19 @@ -""" -Bei diesem Enum handelt es sich um die Abbildung von Zählertypen der Sparten Strom und Gas. -""" +# pylint:disable=missing-module-docstring -from enum import Enum +from bo4e.enum.strenum import StrEnum -Zaehlertyp = Enum( - "Zaehlertyp", - { - "DREHSTROMZAEHLER": "DREHSTROMZAEHLER", # Drehstromzähler - "BALGENGASZAEHLER": "BALGENGASZAEHLER", # Balgengaszähler - "DREHKOLBENZAEHLER": "DREHKOLBENZAEHLER", # Drehkolbengaszähler - "SMARTMETER": "SMARTMETER", # Smart Meter Zähler - "LEISTUNGSZAEHLER": "LEISTUNGSZAEHLER", # leistungsmessender Zähler - "MAXIMUMZAEHLER": "MAXIMUMZAEHLER", # Maximumzähler - "TURBINENRADGASZAEHLER": "TURBINENRADGASZAEHLER", # Turbinenradgaszähler - "ULTRASCHALLGASZAEHLER": "ULTRASCHALLGASZAEHLER", # Ultraschallgaszähler - "WECHSELSTROMZAEHLER": "WECHSELSTROMZAEHLER", # Wechselstromzähler - }, -) + +class Zaehlertyp(StrEnum): + """ + Bei diesem Enum handelt es sich um die Abbildung von Zählertypen der Sparten Strom und Gas. + """ + + DREHSTROMZAEHLER = "DREHSTROMZAEHLER" # Drehstromzähler + BALGENGASZAEHLER = "BALGENGASZAEHLER" # Balgengaszähler + DREHKOLBENZAEHLER = "DREHKOLBENZAEHLER" # Drehkolbengaszähler + SMARTMETER = "SMARTMETER" # Smart Meter Zähler + LEISTUNGSZAEHLER = "LEISTUNGSZAEHLER" # leistungsmessender Zähler + MAXIMUMZAEHLER = "MAXIMUMZAEHLER" # Maximumzähler + TURBINENRADGASZAEHLER = "TURBINENRADGASZAEHLER" # Turbinenradgaszähler + ULTRASCHALLGASZAEHLER = "ULTRASCHALLGASZAEHLER" # Ultraschallgaszähler + WECHSELSTROMZAEHLER = "WECHSELSTROMZAEHLER" # Wechselstromzähler diff --git a/src/bo4e/enum/zeiteinheit.py b/src/bo4e/enum/zeiteinheit.py index 4019b0b43..8adb68449 100644 --- a/src/bo4e/enum/zeiteinheit.py +++ b/src/bo4e/enum/zeiteinheit.py @@ -1,21 +1,20 @@ -""" -Auflistung möglicher Einheiten zur Verwendung in zeitbezogenen Angaben. -""" +# pylint:disable=missing-module-docstring -from enum import Enum +from bo4e.enum.strenum import StrEnum -Zeiteinheit = Enum( - "Zeiteinheit", - { - "SEKUNDE": "SEKUNDE", # Sekunde - "MINUTE": "MINUTE", # Minute - "STUNDE": "STUNDE", # Stunde - "VIERTEL_STUNDE": "VIERTEL_STUNDE", # Viertelstunde - "TAG": "TAG", # Tag - "WOCHE": "WOCHE", # Woche - "MONAT": "MONAT", # Monat - "QUARTAL": "QUARTAL", # Quartal - "HALBJAHR": "HALBJAHR", # Halbjahr - "JAHR": "JAHR", # Jahr - }, -) + +class Zeiteinheit(StrEnum): + """ + Auflistung möglicher Einheiten zur Verwendung in zeitbezogenen Angaben. + """ + + SEKUNDE = "SEKUNDE" # Sekunde + MINUTE = "MINUTE" # Minute + STUNDE = "STUNDE" # Stunde + VIERTEL_STUNDE = "VIERTEL_STUNDE" # Viertelstunde + TAG = "TAG" # Tag + WOCHE = "WOCHE" # Woche + MONAT = "MONAT" # Monat + QUARTAL = "QUARTAL" # Quartal + HALBJAHR = "HALBJAHR" # Halbjahr + JAHR = "JAHR" # Jahr diff --git a/tests/test_ansprechpartner.py b/tests/test_ansprechpartner.py index 3320b8d50..6a5ba1ca4 100644 --- a/tests/test_ansprechpartner.py +++ b/tests/test_ansprechpartner.py @@ -49,6 +49,7 @@ def test_de_serialisation_minimal_attributes(self): json_string = schema.dumps(ansprechpartner, ensure_ascii=False) assert "Müller-Schmidt" in json_string assert "Mühlenweg" in json_string + assert '"FRAU"' in json_string deserialized_ansprechpartner = schema.loads(json_data=json_string)