Name | fundamend JSON |
Version |
0.7.0
JSON |
| download |
home_page | None |
Summary | XML basierte Formate und DatemModelle für die Energiewirtschaft in Deutschland |
upload_time | 2024-12-05 18:27:21 |
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": []
},
```
### CLI Tool für XML➡️JSON Konvertierung
Mit
```bash
pip install fundamend[cli]
```
Kann ein CLI-Tool in der entsprechenden venv installiert werden, das einzelne MIG- und AHB-XML-Dateien in entsprechende JSONs konvertiert:
```bash
(myvenv): xml2json --xml-path path/to/mig.xml
```
erzeugt `path/to/mig.json`. Und
```bash
(myvenv): xml2json --xml-path path/to/my/directory
```
konvertiert alle XML-Dateien im entsprechenden Verzeichnis.
### 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/30/01/cad673375e0f0b1687effbb34da092ed61fda9312e5e689cdae71370f224/fundamend-0.7.0.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### CLI Tool f\u00fcr XML\u27a1\ufe0fJSON Konvertierung\nMit\n```bash\npip install fundamend[cli]\n```\nKann ein CLI-Tool in der entsprechenden venv installiert werden, das einzelne MIG- und AHB-XML-Dateien in entsprechende JSONs konvertiert:\n```bash\n(myvenv): xml2json --xml-path path/to/mig.xml\n```\nerzeugt `path/to/mig.json`. Und\n```bash\n(myvenv): xml2json --xml-path path/to/my/directory\n```\nkonvertiert alle XML-Dateien im entsprechenden Verzeichnis.\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.7.0",
"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": "5ce80dba821ab0d6a30037bff2431acc436c3dda6a906ec0a9a3f7158d9dacf2",
"md5": "5b8d4fced24754bdb89e07f0e387d086",
"sha256": "ee17d6eaf6b2dfc668ed8694ab9dbe26caeca0bf45d592b3283b261178c417d7"
},
"downloads": -1,
"filename": "fundamend-0.7.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "5b8d4fced24754bdb89e07f0e387d086",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.11",
"size": 16679,
"upload_time": "2024-12-05T18:27:19",
"upload_time_iso_8601": "2024-12-05T18:27:19.466981Z",
"url": "https://files.pythonhosted.org/packages/5c/e8/0dba821ab0d6a30037bff2431acc436c3dda6a906ec0a9a3f7158d9dacf2/fundamend-0.7.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "3001cad673375e0f0b1687effbb34da092ed61fda9312e5e689cdae71370f224",
"md5": "092b2d64f6afdecf6fc24d9e46ca5593",
"sha256": "1d05bf4e7d25493df846ec8a7ffabca33f9dca64d9a509d71cd198456e0c875e"
},
"downloads": -1,
"filename": "fundamend-0.7.0.tar.gz",
"has_sig": false,
"md5_digest": "092b2d64f6afdecf6fc24d9e46ca5593",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.11",
"size": 20139,
"upload_time": "2024-12-05T18:27:21",
"upload_time_iso_8601": "2024-12-05T18:27:21.304974Z",
"url": "https://files.pythonhosted.org/packages/30/01/cad673375e0f0b1687effbb34da092ed61fda9312e5e689cdae71370f224/fundamend-0.7.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-12-05 18:27:21",
"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"
}