Repository: bo4e/BO4E-python (language: python)

Issue:
Implement COM Marktgebietinfo
https://www.bo4e.de/dokumentation/komponenten/com-marktgebietinfo


Discussion / hints:

Fix patch:
diff --git a/src/bo4e/com/marktgebietinfo.py b/src/bo4e/com/marktgebietinfo.py
new file mode 100644
index 000000000..175a663ae
--- /dev/null
+++ b/src/bo4e/com/marktgebietinfo.py
@@ -0,0 +1,36 @@
+"""
+Contains Marktgebietinfo class
+and corresponding marshmallow schema for de-/serialization
+"""
+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 MarktgebietInfo(COM):
+    """
+    Informationen zum Marktgebiet im Gas.
+    """
+
+    # required attributes
+    marktgebiet: str  #: Der Name des Marktgebietes
+    marktgebietcode: str  #: Die standardisierte Codenummer des Marktgebietes
+
+
+class MarktgebietInfoSchema(COMSchema):
+    """
+    Schema for de-/serialization of Marktgebietinfo.
+    """
+
+    # required attributes
+    marktgebiet = fields.Str()
+    marktgebietcode = fields.Str()
+
+    # pylint: disable=no-self-use, unused-argument
+    @post_load
+    def deserialize(self, data, **kwargs) -> MarktgebietInfo:
+        """Deserialize JSON to Marktgebietinfo object"""
+        return MarktgebietInfo(**data)


Test patch:
diff --git a/tests/test_marktgebietinfo.py b/tests/test_marktgebietinfo.py
new file mode 100644
index 000000000..b6f214289
--- /dev/null
+++ b/tests/test_marktgebietinfo.py
@@ -0,0 +1,16 @@
+from bo4e.com.marktgebietinfo import MarktgebietInfo, MarktgebietInfoSchema
+
+
+class TestMarktgebietinfo:
+    def test_serialization(self):
+        mgi = MarktgebietInfo(marktgebiet="Gaspool", marktgebietcode="37Z701133MH0000B")
+
+        schema = MarktgebietInfoSchema()
+
+        json_string = schema.dumps(mgi, ensure_ascii=False)
+
+        assert "marktgebiet" in json_string, "No camel case serialization"
+
+        deserialized_mgi: MarktgebietInfo = schema.loads(json_string)
+
+        assert mgi == deserialized_mgi