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

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions src/bo4e/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
"Ausschreibung",
"Bilanzierung",
"Buendelvertrag",
"Einspeisung",
"Energiemenge",
"Fremdkosten",
"Geraet",
Expand Down Expand Up @@ -204,6 +205,8 @@
"ZaehlertypSpezifikation",
"Zeitreihentyp",
"ZusatzAttribut",
"EEGVermarktungsform",
"FernsteuerbarkeitStatus",
"__version__",
"__gh_version__",
]
Expand All @@ -215,6 +218,7 @@
from .bo.ausschreibung import Ausschreibung
from .bo.bilanzierung import Bilanzierung
from .bo.buendelvertrag import Buendelvertrag
from .bo.einspeisung import Einspeisung
from .bo.energiemenge import Energiemenge
from .bo.fremdkosten import Fremdkosten
from .bo.geraet import Geraet
Expand Down Expand Up @@ -332,10 +336,12 @@
from .enum.botyp import BoTyp
from .enum.comtyp import ComTyp
from .enum.dienstleistungstyp import Dienstleistungstyp
from .enum.eeg_vermarktungsform import EEGVermarktungsform
from .enum.emobilitaetsart import EMobilitaetsart
from .enum.energierichtung import Energierichtung
from .enum.erzeugungsart import Erzeugungsart
from .enum.fallgruppenzuordnung import Fallgruppenzuordnung
from .enum.fernsteuerbarkeit_status import FernsteuerbarkeitStatus
from .enum.gasqualitaet import Gasqualitaet
from .enum.gebiettyp import Gebiettyp
from .enum.geraeteklasse import Geraeteklasse
Expand Down
41 changes: 41 additions & 0 deletions src/bo4e/bo/einspeisung.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
"""
Contains Einspeisung class and corresponding marshmallow schema for de-/serialization
"""

# pylint: disable=too-few-public-methods
# pylint: disable=no-name-in-module
from typing import Optional

from ..enum.eeg_vermarktungsform import EEGVermarktungsform
from ..enum.fernsteuerbarkeit_status import FernsteuerbarkeitStatus
from ..enum.geschaeftspartnerrolle import Geschaeftspartnerrolle
from ..enum.landescode import Landescode
from ..utils import postprocess_docstring
from .geschaeftsobjekt import Geschaeftsobjekt


@postprocess_docstring
class Einspeisung(Geschaeftsobjekt):
"""
Abbildung der Einspeisung.

.. raw:: html

<object data="../_static/images/bo4e/bo/Einspeisung.svg" type="image/svg+xml"></object>

.. HINT::
`Einspeisung JSON Schema <https://json-schema.app/view/%23?url=https://raw.githubusercontent.com/BO4E/BO4E-Schemas/{__gh_version__}/src/bo4e_schemas/bo/Einspeisung.json>`_

"""

marktlokations_id: Optional[str] = None

tranche_id: Optional[str] = None

verguetungsempfaenger: Optional[Geschaeftspartnerrolle] = None

eeg_vermarktungsform: Optional[EEGVermarktungsform] = None

landescode: Optional[Landescode] = None

fernsteuerbarkeit_status: Optional[FernsteuerbarkeitStatus] = None
21 changes: 21 additions & 0 deletions src/bo4e/enum/eeg_vermarktungsform.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# pylint:disable=missing-module-docstring

from bo4e.enum.strenum import StrEnum


class EEGVermarktungsform(StrEnum):
"""
Diese Enum repräsentiert die Vermarktungsformen nach dem EEG.
"""

AUSFALLVERGUETUNG = "AUSFALLVERGUETUNG"
# Ausfallvergütung für den Fall, dass andere Vermarktungsmethoden nicht verfügbar sind
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Die Kommentare sind hier doppelt, also ich meine jeweils das obere: #: Ausfallvergütung braucht man nicht auch noch, wenn man die Langfassung hat, oder ich habe irgendeine Dokuemtationsänderung nicht mitbekommen. :-)

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Collaborator

@lord-haffi lord-haffi Sep 9, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bitte sicherstellen, ob der Kommentar in der Doku auftaucht. Bin mir relativ sicher, dass das Autodoc Feature von Sphinx nur #: über und in der Zeile und """ ... """ unter der Zeile kann.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah sehr gut zu wissen, ja stimmt so hatten wir es an anderen Stellen glaub ich auch gehandhabt, ich hab bisher einfach immer geschaut wie es an anderen Stellen gemacht wird


MARKTPRAEMIE = "MARKTPRAEMIE"
# Marktprämie für die geförderte Direktvermarktung

SONSTIGE = "SONSTIGE"
# Sonstige Vermarktungsformen ohne gesetzliche Vergütung

KWKG_VERGUETUNG = "KWKG_VERGUETUNG"
# Vergütung nach dem Kraft-Wärme-Kopplungsgesetz (KWKG)
19 changes: 19 additions & 0 deletions src/bo4e/enum/fernsteuerbarkeit_status.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# pylint:disable=missing-module-docstring

from bo4e.enum.strenum import StrEnum


class FernsteuerbarkeitStatus(StrEnum):
"""
Enum zur Abbildung des Status der Fernsteuerbarkeit

Marktlokation ist technisch fernsteuerbar. Der NB bestätigt mit der Anmeldung einer erzeugenden Marktlokation zur
Direktvermarktung, dass die Marktlokation mit einer Fernsteuerung ausgestattet ist, aber dem NB keine Information
darüber vorliegt, dass der LF die Marktlokation fernsteuern kann. Die Voraussetzung zur Zahlung der
Managementprämie für fernsteuerbare Marktlokation ist nicht gegeben.
"""

NICHT_FERNSTEUERBAR = "NICHT_FERNSTEUERBAR" #: nicht fernsteuerbar
TECHNISCH_FERNSTEUERBAR = "TECHNISCH_FERNSTEUERBAR" #: technisch fernsteuerbar
LIEFERANT_FERNSTEUERBAR = "LIEFERANT_FERNSTEUERBAR" #: lieferantenseitig fernsteuerbar
#
31 changes: 31 additions & 0 deletions tests/test_einspeisung.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
import pytest

from bo4e import Geschaeftspartnerrolle, Landescode
from bo4e.bo.einspeisung import Einspeisung
from bo4e.enum.eeg_vermarktungsform import EEGVermarktungsform
from bo4e.enum.fernsteuerbarkeit_status import FernsteuerbarkeitStatus
from tests.serialization_helper import assert_serialization_roundtrip


class TestEinspeisung:
@pytest.mark.parametrize(
"einspeisung",
[
pytest.param(
Einspeisung(
marktlokations_id="teststring",
tranche_id="teststring",
verguetungsempfaenger=Geschaeftspartnerrolle.LIEFERANT,
eeg_vermarktungsform=EEGVermarktungsform.KWKG_VERGUETUNG,
landescode=Landescode.DE, # type:ignore[attr-defined]
fernsteuerbarkeit_status=FernsteuerbarkeitStatus.NICHT_FERNSTEUERBAR,
),
id="all attributes at first level",
),
],
)
def test_serialization_roundtrip(self, einspeisung: Einspeisung) -> None:
"""
Test de-/serialisation of Einspeisung
"""
assert_serialization_roundtrip(einspeisung)
Loading