Name | fundamend JSON |
Version |
0.4.3
JSON |
| download |
home_page | None |
Summary | XML basierte Formate und DatemModelle für die Energiewirtschaft in Deutschland |
upload_time | 2024-10-11 07:37:59 |
maintainer | None |
docs_url | None |
author | None |
requires_python | >=3.11 |
license | MIT |
keywords |
ahb
bdew
mig
marktkommunikation
xml
|
VCS |
|
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
# FUNDAMEND - Formate und DAtenModelle für die ENergiewirtschaft in Deutschland
Dieses Repository enthält das Python-Paket `fundamend`, das XML-basierte MIGs und AHBs als Python-Objekte einliest.
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
![Python Versions (officially) supported](https://img.shields.io/pypi/pyversions/fundamend.svg)
![Pypi status badge](https://img.shields.io/pypi/v/fundamend)
![Unittests status badge](https://github.com/Hochfrequenz/xml-fundamend-python/workflows/Unittests/badge.svg)
![Coverage status badge](https://github.com/Hochfrequenz/xml-fundamend-python/workflows/Coverage/badge.svg)
![Linting status badge](https://github.com/Hochfrequenz/xml-fundamend-python/workflows/Linting/badge.svg)
![Black status badge](https://github.com/Hochfrequenz/xml-fundamend-python/workflows/Formatting/badge.svg)
## Sinn und Zweck
Seit 2024 bietet der BDEW (endlich) maschinenlesbare MIG- und AHB-Spezifikationen an, wo zuvor nur PDF oder Word-Dateien veröffentlicht wurden.
Das ist ein wichtiger Schritt für eine echte Digitalisierung der Marktkommunikation im deutschen Energiemarkt.
Die nun maschinenlesbaren Informationen über den Aufbau von EDIFACT-Nachrichten sind XML-basiert.
Dieses Repository enthält ein kleines Python-Paket, das die XML-Dateien einliest und als vollständig typisierte Python-Objekte zur Verfügung stellt, damit sich niemand mit XML herumschlagen muss.
Das ist alles.
Hochfrequenz stellt mit [migmose](https://github.com/Hochfrequenz/migmose) und [kohlrahbi](https://github.com/Hochfrequenz/kohlrahbi) auch Tools bereit, um maschinenlesbare MIGs bzw. AHBs aus `.docx`-Dateien zu scrapen.
## Installation und Verwendung
Das Paket ist auf PyPI verfügbar und kann mit pip installiert werden:
```bash
pip install fundamend
```
### Message Implementation Guides (MIG) deserialisieren
```python
from pathlib import Path
from fundamend import MigReader, MessageImplementationGuide
# Angenommen, mig_utilts.xml enthält:
# <?xml version="1.0" encoding="UTF-8"?>
# <M_UTILTS Versionsnummer="1.1c"
# Veroeffentlichungsdatum="24.10.2023"
# Author="BDEW">
# ...
# </M_UTILTS>
reader = MigReader(Path("pfad/zur/mig_utils.xml"))
mig = reader.read()
assert isinstance(mig, MessageImplementationGuide)
assert mig.format == "UTILTS"
```
### Anwendungshandbuch (AHB) deserialisieren
```python
from pathlib import Path
from fundamend import AhbReader, Anwendungshandbuch
# Angenommen, ahb_utilts.xml enthält:
# <?xml version="1.0" encoding="UTF-8"?>
# <AHB Versionsnummer="1.1d"
# Veroeffentlichungsdatum="02.04.2024"
# Author="BDEW">
# <AWF Pruefidentifikator="25001" Beschreibung="Berechnungsformel" Kommunikation_von="NB an MSB / LF">
# ...
# </AWF>
# </AHB>
reader = AhbReader(Path("pfad/zur/ahb_utils.xml"))
ahb = reader.read()
assert isinstance(ahb, Anwendungshandbuch)
assert {awf.pruefidentifikator for awf in ahb.anwendungsfaelle} == {
"25001",
"25002",
"25003",
"25004",
"25005",
"25006",
"25007",
"25008",
"25009",
}
```
Die vollständigen Beispiele finden sich in den [unittests](unittests).
### Verwendung mit Pydantic
Per default verwendet fundamend die [dataclasses aus der Python-Standardlibrary](https://docs.python.org/3/library/dataclasses.html).
Es lässt sich aber auch direkt mit [Pydantic](https://docs.pydantic.dev/latest/) und den [Pydantic dataclasses](https://docs.pydantic.dev/2.7/concepts/dataclasses/) verwenden.
Wenn entweder pydantic schon installiert ist, oder mittels
```bash
pip install fundamend[pydantic]
```
mit installiert wird, dann sind Datenmodelle, die von `AhbReader` und `MigReader` zurückgegeben werden, automatisch pydantic Objekte.
Mit Pydantic können die Ergebnisse auch leicht bspw. als JSON exportiert werden:
```python
from pathlib import Path
from pydantic import RootModel
from fundamend import Anwendungshandbuch, AhbReader
ahb = AhbReader(Path("UTILTS_AHB_1.1d_Konsultationsfassung_2024_04_02.xml")).read()
ahb_json = RootModel[Anwendungshandbuch](ahb).model_dump(mode="json")
```
Das Ergebnis sieht dann so aus:
```json
{
"veroeffentlichungsdatum": "2024-04-02",
"autor": "BDEW",
"versionsnummer": "1.1d",
"anwendungsfaelle": [
{
"pruefidentifikator": "25001",
"beschreibung": "Berechnungsformel",
"kommunikation_von": "NB an MSB / LF",
"format": "UTILTS",
"segments": [
{
"id": "UNH",
"name": "Nachrichten-Kopfsegment",
"number": "00001",
"ahb_status": "Muss",
"data_elements": [
{
"id": "D_0062",
"name": "Nachrichten-Referenznummer",
"codes": []
},
```
### JSON Schemas
Das fundamend Datenmodell ist auch als JSON Schema verfügbar: [`json_schemas`](json_schemas).
## Verwendung und Mitwirken
Der Code ist MIT-lizenziert und kann daher frei verwendet werden.
Wir freuen uns über Pull Requests an den main-Branch dieses Repositories.
## Hochfrequenz
Die [Hochfrequenz Unternehmensberatung GmbH](https://www.hochfrequenz.de) ist eine Beratung für Energieversorger im deutschsprachigen Raum.
Wir arbeiten größtenteils remote, haben aber auch Büros in Berlin, Bremen, Leipzig, Köln und Grünwald und attraktive [Stellenangebote](https://www.hochfrequenz.de/index.php/karriere/aktuelle-stellenausschreibungen/full-stack-entwickler).
Raw data
{
"_id": null,
"home_page": null,
"name": "fundamend",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.11",
"maintainer_email": null,
"keywords": "AHB, BDEW, MIG, Marktkommunikation, XML",
"author": null,
"author_email": "Hochfrequenz Unternehmensberatung GmbH <info+github@hochfrequenz.de>",
"download_url": "https://files.pythonhosted.org/packages/1d/71/70d2890df59fb8e5f2f3419bd914378607a4b54c6b49c100f1e8f86fd05e/fundamend-0.4.3.tar.gz",
"platform": null,
"description": "# FUNDAMEND - Formate und DAtenModelle f\u00fcr die ENergiewirtschaft in Deutschland\n\nDieses Repository enth\u00e4lt das Python-Paket `fundamend`, das XML-basierte MIGs und AHBs als Python-Objekte einliest.\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)\n![Python Versions (officially) supported](https://img.shields.io/pypi/pyversions/fundamend.svg)\n![Pypi status badge](https://img.shields.io/pypi/v/fundamend)\n![Unittests status badge](https://github.com/Hochfrequenz/xml-fundamend-python/workflows/Unittests/badge.svg)\n![Coverage status badge](https://github.com/Hochfrequenz/xml-fundamend-python/workflows/Coverage/badge.svg)\n![Linting status badge](https://github.com/Hochfrequenz/xml-fundamend-python/workflows/Linting/badge.svg)\n![Black status badge](https://github.com/Hochfrequenz/xml-fundamend-python/workflows/Formatting/badge.svg)\n\n## Sinn und Zweck\nSeit 2024 bietet der BDEW (endlich) maschinenlesbare MIG- und AHB-Spezifikationen an, wo zuvor nur PDF oder Word-Dateien ver\u00f6ffentlicht wurden.\nDas ist ein wichtiger Schritt f\u00fcr eine echte Digitalisierung der Marktkommunikation im deutschen Energiemarkt.\n\nDie nun maschinenlesbaren Informationen \u00fcber den Aufbau von EDIFACT-Nachrichten sind XML-basiert.\n\nDieses Repository enth\u00e4lt ein kleines Python-Paket, das die XML-Dateien einliest und als vollst\u00e4ndig typisierte Python-Objekte zur Verf\u00fcgung stellt, damit sich niemand mit XML herumschlagen muss.\nDas ist alles.\n\nHochfrequenz stellt mit [migmose](https://github.com/Hochfrequenz/migmose) und [kohlrahbi](https://github.com/Hochfrequenz/kohlrahbi) auch Tools bereit, um maschinenlesbare MIGs bzw. AHBs aus `.docx`-Dateien zu scrapen.\n\n## Installation und Verwendung\nDas Paket ist auf PyPI verf\u00fcgbar und kann mit pip installiert werden:\n```bash\npip install fundamend\n```\n\n### Message Implementation Guides (MIG) deserialisieren\n```python\nfrom pathlib import Path\nfrom fundamend import MigReader, MessageImplementationGuide\n\n# Angenommen, mig_utilts.xml enth\u00e4lt:\n# <?xml version=\"1.0\" encoding=\"UTF-8\"?>\n# <M_UTILTS Versionsnummer=\"1.1c\"\n# Veroeffentlichungsdatum=\"24.10.2023\"\n# Author=\"BDEW\">\n# ...\n# </M_UTILTS>\n\nreader = MigReader(Path(\"pfad/zur/mig_utils.xml\"))\nmig = reader.read()\nassert isinstance(mig, MessageImplementationGuide)\nassert mig.format == \"UTILTS\"\n```\n\n### Anwendungshandbuch (AHB) deserialisieren\n```python\nfrom pathlib import Path\nfrom fundamend import AhbReader, Anwendungshandbuch\n\n# Angenommen, ahb_utilts.xml enth\u00e4lt:\n# <?xml version=\"1.0\" encoding=\"UTF-8\"?>\n# <AHB Versionsnummer=\"1.1d\"\n# Veroeffentlichungsdatum=\"02.04.2024\"\n# Author=\"BDEW\">\n# <AWF Pruefidentifikator=\"25001\" Beschreibung=\"Berechnungsformel\" Kommunikation_von=\"NB an MSB / LF\">\n# ...\n# </AWF>\n# </AHB>\n\nreader = AhbReader(Path(\"pfad/zur/ahb_utils.xml\"))\nahb = reader.read()\nassert isinstance(ahb, Anwendungshandbuch)\nassert {awf.pruefidentifikator for awf in ahb.anwendungsfaelle} == {\n \"25001\",\n \"25002\",\n \"25003\",\n \"25004\",\n \"25005\",\n \"25006\",\n \"25007\",\n \"25008\",\n \"25009\",\n}\n```\n\nDie vollst\u00e4ndigen Beispiele finden sich in den [unittests](unittests).\n\n### Verwendung mit Pydantic\nPer default verwendet fundamend die [dataclasses aus der Python-Standardlibrary](https://docs.python.org/3/library/dataclasses.html).\nEs l\u00e4sst sich aber auch direkt mit [Pydantic](https://docs.pydantic.dev/latest/) und den [Pydantic dataclasses](https://docs.pydantic.dev/2.7/concepts/dataclasses/) verwenden.\nWenn entweder pydantic schon installiert ist, oder mittels\n```bash\npip install fundamend[pydantic]\n```\nmit installiert wird, dann sind Datenmodelle, die von `AhbReader` und `MigReader` zur\u00fcckgegeben werden, automatisch pydantic Objekte.\n\nMit Pydantic k\u00f6nnen die Ergebnisse auch leicht bspw. als JSON exportiert werden:\n```python\nfrom pathlib import Path\n\nfrom pydantic import RootModel\nfrom fundamend import Anwendungshandbuch, AhbReader\n\nahb = AhbReader(Path(\"UTILTS_AHB_1.1d_Konsultationsfassung_2024_04_02.xml\")).read()\nahb_json = RootModel[Anwendungshandbuch](ahb).model_dump(mode=\"json\")\n```\n\nDas Ergebnis sieht dann so aus:\n```json\n{\n \"veroeffentlichungsdatum\": \"2024-04-02\",\n \"autor\": \"BDEW\",\n \"versionsnummer\": \"1.1d\",\n \"anwendungsfaelle\": [\n {\n \"pruefidentifikator\": \"25001\",\n \"beschreibung\": \"Berechnungsformel\",\n \"kommunikation_von\": \"NB an MSB / LF\",\n \"format\": \"UTILTS\",\n \"segments\": [\n {\n \"id\": \"UNH\",\n \"name\": \"Nachrichten-Kopfsegment\",\n \"number\": \"00001\",\n \"ahb_status\": \"Muss\",\n \"data_elements\": [\n {\n \"id\": \"D_0062\",\n \"name\": \"Nachrichten-Referenznummer\",\n \"codes\": []\n },\n```\n\n### JSON Schemas\nDas fundamend Datenmodell ist auch als JSON Schema verf\u00fcgbar: [`json_schemas`](json_schemas).\n\n## Verwendung und Mitwirken\nDer Code ist MIT-lizenziert und kann daher frei verwendet werden.\nWir freuen uns \u00fcber Pull Requests an den main-Branch dieses Repositories.\n\n## Hochfrequenz\nDie [Hochfrequenz Unternehmensberatung GmbH](https://www.hochfrequenz.de) ist eine Beratung f\u00fcr Energieversorger im deutschsprachigen Raum.\nWir arbeiten gr\u00f6\u00dftenteils remote, haben aber auch B\u00fcros in Berlin, Bremen, Leipzig, K\u00f6ln und Gr\u00fcnwald und attraktive [Stellenangebote](https://www.hochfrequenz.de/index.php/karriere/aktuelle-stellenausschreibungen/full-stack-entwickler).\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "XML basierte Formate und DatemModelle f\u00fcr die Energiewirtschaft in Deutschland",
"version": "0.4.3",
"project_urls": {
"Changelog": "https://github.com/Hochfrequenz/xml-fundamend-python/releases",
"Homepage": "https://github.com/Hochfrequenz/xml-fundamend-python"
},
"split_keywords": [
"ahb",
" bdew",
" mig",
" marktkommunikation",
" xml"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "1f5fd77c407afbcfbb79d89e924b1fe24cc82c6a972bf92c68afaa27361e55a0",
"md5": "6ec5d82a8c86b3cca67518476689b413",
"sha256": "b86f6c76867f089a383a86f2e45fc0f129c8a3efcd9680df2944eb437c243c15"
},
"downloads": -1,
"filename": "fundamend-0.4.3-py3-none-any.whl",
"has_sig": false,
"md5_digest": "6ec5d82a8c86b3cca67518476689b413",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.11",
"size": 14776,
"upload_time": "2024-10-11T07:37:58",
"upload_time_iso_8601": "2024-10-11T07:37:58.045720Z",
"url": "https://files.pythonhosted.org/packages/1f/5f/d77c407afbcfbb79d89e924b1fe24cc82c6a972bf92c68afaa27361e55a0/fundamend-0.4.3-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "1d7170d2890df59fb8e5f2f3419bd914378607a4b54c6b49c100f1e8f86fd05e",
"md5": "3d61147870e7ffb7b3ff3b7d5ae8f49c",
"sha256": "e0afd0cd58d61e49340a6880c5b32590d890c0ab4003d1cd1734721bde582893"
},
"downloads": -1,
"filename": "fundamend-0.4.3.tar.gz",
"has_sig": false,
"md5_digest": "3d61147870e7ffb7b3ff3b7d5ae8f49c",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.11",
"size": 18485,
"upload_time": "2024-10-11T07:37:59",
"upload_time_iso_8601": "2024-10-11T07:37:59.523933Z",
"url": "https://files.pythonhosted.org/packages/1d/71/70d2890df59fb8e5f2f3419bd914378607a4b54c6b49c100f1e8f86fd05e/fundamend-0.4.3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-10-11 07:37:59",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "Hochfrequenz",
"github_project": "xml-fundamend-python",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [],
"tox": true,
"lcname": "fundamend"
}