bo4e


Namebo4e JSON
Version 202401.1.1 PyPI version JSON
download
home_pageNone
SummaryPython Library that implements the BO4E Standard.
upload_time2024-04-30 16:33:48
maintainerNone
docs_urlNone
authorNone
requires_python>=3.9
licenseMIT
keywords bdew bo4e edi@energy
VCS
bugtrack_url
requirements annotated-types iso3166 pydantic pydantic-core pyhumps typing-extensions
Travis-CI No Travis.
coveralls test coverage No coveralls.
            =============
BO4E
=============
|PyPi|_
|license|_
|code style|_
|PyPI pyversions|_


.. |PyPi| image:: https://img.shields.io/pypi/v/bo4e.svg
.. _PyPi: https://img.shields.io/pypi/v/bo4e

.. |license| image:: https://img.shields.io/badge/License-MIT-blue.svg
.. _license: https://github.com/Hochfrequenz/BO4E-python/blob/main/LICENSE.rst

.. |code style| image:: https://img.shields.io/badge/code%20style-black-000000.svg
.. _`code style`: https://github.com/psf/black

.. |PyPI pyversions| image:: https://img.shields.io/pypi/pyversions/bo4e.svg
.. _`PyPI pyversions`: https://pypi.python.org/pypi/bo4e/


🇩🇪 Dies ist eine BO4E Referenz-Implementierung in Python.
Gleichzeitig ist dieses Repository der Ort, um Fragen und Erweiterungen des BO4E-Standards zu diskutieren.

🇬🇧 This is a Python library that implements Business Objects for Energy `BO4E <https://www.bo4e.de/>`_.

Grundsätzliche Überlegungen
===========================

Pflichtfelder (nicht nullable Attributes)
-----------------------------------------
Der BO4E Standard soll (in Zukunft, Stand 2023-10-05) keine fachlichen Pflichtfelder mehr enthalten.
Die Entscheidung, was in welchen Fällen ein Pflichtfeld ist, obliegt den Anwendungen, die den Standard nutzen.
Entsprechend ist auch die Validierung der Pflichtfelder nicht Teil des BO4E Standards sondern anwendungsspezifisch.
Davon sind auch technische Pflichtfelder, namentlich `_typ` und `_version` nicht ausgenommen.
Ob sie anzugeben sind, entscheidet die Anwendung.
BO4E gibt sinnvolle Datenstrukturen vor, wie diese in der Praxis genutzt werden können und wollen wir aber nicht vorschreiben.

Verweise zwischen Objekten
-------------------------------
Viele Objekte verweisen aufeinander und sind miteinander verknüpft.
Dabei sind unsere Designentscheidungen:

* Alle Verweise sind optional.
* Verweise sind, wo sie naheliegend sind, im BO4E Standard vordefiniert (z.B. 1 Messlokation hat n Zähler).
* Aber wir haben nicht jede theoretisch denkbare Verweise implementiert (z.B. allein dass User Zähler unter Angabe einer Email-Adresse suchen können, heißt nicht, dass der Zähler eine optionale Eigenschaft `emailAdresse` haben muss.)
* Generell sollen Verweise zwischen zwei BOs bi-direktional sein, zwischen BOs und COMs aber nur unidirektional (z.B. soll jeder Zähler wissen zu welcher Messlokation er gehört aber eine Adresse muss nicht wissen, welchem Geschäftspartner, welcher Messlokation oder welcher Rechnung sie zugeordnet ist).
* COMs können zwar weitere COMs beinhalten, jedoch sollte dies nicht dafür genutzt werden von einem COM eines BOs auf das COM eines anderen BOs zu verweisen.
  Bsp.: Die Adresse in Ansprechpartner ist identisch zur Lokationsadresse in der Marktlokation. Dann sollen beide Adressen als vollständiges COM dargestellt werden, statt nur als Verweis von einer Adresse auf die andere.
* Oder anders formuliert: wir können aus einem BO oder einem COM auf ein anderes BO verweisen.

Dokumentation / Fragen und Anregungen zum BO4E Datenmodell
==========================================================
Die Dokumentation ist verfügbar unter `<https://bo4e.github.io/BO4E-python/>`_.
Die Doku wird erst seit Version `v202401.0.3 <https://bo4e.github.io/BO4E-python/v202401.0.3>`_ mittels
GitHub Pages gehosted.
Die früheren Versionen sind auf `read the docs <https://bo4e-python.readthedocs.io/en/latest/api/modules.html>`_
einsehbar.

Unter `/latest` findet sich die Dokumentation des aktuellen Stands des main-Branches. `/stable` zeigt immer auf die
letzte veröffentlichte Version (Release candidates ausgeschlossen).
Zusätzlich ist jede Version (inklusive Release candidates) unter `/v<version>` auffindbar.

Die Doku bietet eine Übersicht über alle Klassen und Attribute, die im BO4E Standard definiert sind. Außerdem
werden alle Beziehungen zwischen den Klassen durch Diagramme visualisiert. Die JSON-Schemas sind ebenfalls verlinkt.
Alternativ können die JSON-Schemas auch direkt von GitHub heruntergeladen werden: `<https://github.com/bo4e/BO4E-Schemas>`_.
Seit Version `v202401.1.1 <https://bo4e.github.io/BO4E-python/v202401.1.1>`_ gibt es zusätzlich eine
`Kompatibilitätsmatrix <https://bo4e.github.io/BO4E-python/v202401.1.1/changelog.html>`_,
die für jedes Objekt zeigt, zwischen welchen Versionen es einen "breaking change" gab.

Bei Fragen oder Anregungen, bitte `einfach ein Issue in diesem Repo aufmachen <https://github.com/Hochfrequenz/BO4E-python/issues/new?assignees=&labels=BO4E+Enhancement+Proposal&template=funktionale-anforderung-an-den-bo4e-standard.md&title=Ein+aussagekr%C3%A4ftiger+Titel%3A+Hunde-+und+Katzentarife+k%C3%B6nnen+nicht+abgebildet+werden>`_.

Code Beiträge
=============
Änderungsvorschläge (sowohl an das Datenmodell als auch an die Implementierung in Python) können direkt als Code in Form von Pull Requests eingereicht werden.
Details dazu finden sich im `Contribution Guide`_.

Nutzung als Python Library
==========================
In Python kann diese Library als Paket installiert werden:

.. code-block::

       pip install bo4e


Andere nennenswerte BO4E Implementierungen
==========================================

* `C#/.NET <https://github.com/Hochfrequenz/BO4E-dotnet>`_
* `Golang <https://github.com/Hochfrequenz/go-bo4e/>`_
* `Kotlin <https://github.com/openEnWi/ktBO4E-lib>`_
* `TypeScript (handcrafted) <https://github.com/openEnWi/tsBO4E-lib>`_
* `TypeScript (autogenerated, inherently consistent with the .NET library) <https://github.com/Hochfrequenz/bo4e-dotnet-ts-models>`_
* `PHP <https://github.com/conuti-gmbh/bo4e-php/>`_ (und `Schemas <https://github.com/conuti-gmbh/bo4e-schema>`_)

.. _`BO4E website`: https://www.bo4e.de/dokumentation
.. _`Contribution Guide`: CONTRIBUTING.md

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "bo4e",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.9",
    "maintainer_email": null,
    "keywords": "bdew, bo4e, edi@energy",
    "author": null,
    "author_email": "Kevin Krechan <kevin.krechan@hochfrequenz.de>, Leon Haffmans <leon.haffmans@hochfrequenz.de>, Annika Schl\u00f6gl <annika.schloegl@hochfrequenz.de>, Franziska Vesely <franziska.vesely@hochfrequenz.de>, Konstantin Klein <konstantin.klein@hochfrequenz.de>",
    "download_url": "https://files.pythonhosted.org/packages/90/bf/768dce79323bf6175fc9ef03c03bba370805ed5606a48fe0e18b01a472c8/bo4e-202401.1.1.tar.gz",
    "platform": null,
    "description": "=============\nBO4E\n=============\n|PyPi|_\n|license|_\n|code style|_\n|PyPI pyversions|_\n\n\n.. |PyPi| image:: https://img.shields.io/pypi/v/bo4e.svg\n.. _PyPi: https://img.shields.io/pypi/v/bo4e\n\n.. |license| image:: https://img.shields.io/badge/License-MIT-blue.svg\n.. _license: https://github.com/Hochfrequenz/BO4E-python/blob/main/LICENSE.rst\n\n.. |code style| image:: https://img.shields.io/badge/code%20style-black-000000.svg\n.. _`code style`: https://github.com/psf/black\n\n.. |PyPI pyversions| image:: https://img.shields.io/pypi/pyversions/bo4e.svg\n.. _`PyPI pyversions`: https://pypi.python.org/pypi/bo4e/\n\n\n\ud83c\udde9\ud83c\uddea Dies ist eine BO4E Referenz-Implementierung in Python.\nGleichzeitig ist dieses Repository der Ort, um Fragen und Erweiterungen des BO4E-Standards zu diskutieren.\n\n\ud83c\uddec\ud83c\udde7 This is a Python library that implements Business Objects for Energy `BO4E <https://www.bo4e.de/>`_.\n\nGrunds\u00e4tzliche \u00dcberlegungen\n===========================\n\nPflichtfelder (nicht nullable Attributes)\n-----------------------------------------\nDer BO4E Standard soll (in Zukunft, Stand 2023-10-05) keine fachlichen Pflichtfelder mehr enthalten.\nDie Entscheidung, was in welchen F\u00e4llen ein Pflichtfeld ist, obliegt den Anwendungen, die den Standard nutzen.\nEntsprechend ist auch die Validierung der Pflichtfelder nicht Teil des BO4E Standards sondern anwendungsspezifisch.\nDavon sind auch technische Pflichtfelder, namentlich `_typ` und `_version` nicht ausgenommen.\nOb sie anzugeben sind, entscheidet die Anwendung.\nBO4E gibt sinnvolle Datenstrukturen vor, wie diese in der Praxis genutzt werden k\u00f6nnen und wollen wir aber nicht vorschreiben.\n\nVerweise zwischen Objekten\n-------------------------------\nViele Objekte verweisen aufeinander und sind miteinander verkn\u00fcpft.\nDabei sind unsere Designentscheidungen:\n\n* Alle Verweise sind optional.\n* Verweise sind, wo sie naheliegend sind, im BO4E Standard vordefiniert (z.B. 1 Messlokation hat n Z\u00e4hler).\n* Aber wir haben nicht jede theoretisch denkbare Verweise implementiert (z.B. allein dass User Z\u00e4hler unter Angabe einer Email-Adresse suchen k\u00f6nnen, hei\u00dft nicht, dass der Z\u00e4hler eine optionale Eigenschaft `emailAdresse` haben muss.)\n* Generell sollen Verweise zwischen zwei BOs bi-direktional sein, zwischen BOs und COMs aber nur unidirektional (z.B. soll jeder Z\u00e4hler wissen zu welcher Messlokation er geh\u00f6rt aber eine Adresse muss nicht wissen, welchem Gesch\u00e4ftspartner, welcher Messlokation oder welcher Rechnung sie zugeordnet ist).\n* COMs k\u00f6nnen zwar weitere COMs beinhalten, jedoch sollte dies nicht daf\u00fcr genutzt werden von einem COM eines BOs auf das COM eines anderen BOs zu verweisen.\n  Bsp.: Die Adresse in Ansprechpartner ist identisch zur Lokationsadresse in der Marktlokation. Dann sollen beide Adressen als vollst\u00e4ndiges COM dargestellt werden, statt nur als Verweis von einer Adresse auf die andere.\n* Oder anders formuliert: wir k\u00f6nnen aus einem BO oder einem COM auf ein anderes BO verweisen.\n\nDokumentation / Fragen und Anregungen zum BO4E Datenmodell\n==========================================================\nDie Dokumentation ist verf\u00fcgbar unter `<https://bo4e.github.io/BO4E-python/>`_.\nDie Doku wird erst seit Version `v202401.0.3 <https://bo4e.github.io/BO4E-python/v202401.0.3>`_ mittels\nGitHub Pages gehosted.\nDie fr\u00fcheren Versionen sind auf `read the docs <https://bo4e-python.readthedocs.io/en/latest/api/modules.html>`_\neinsehbar.\n\nUnter `/latest` findet sich die Dokumentation des aktuellen Stands des main-Branches. `/stable` zeigt immer auf die\nletzte ver\u00f6ffentlichte Version (Release candidates ausgeschlossen).\nZus\u00e4tzlich ist jede Version (inklusive Release candidates) unter `/v<version>` auffindbar.\n\nDie Doku bietet eine \u00dcbersicht \u00fcber alle Klassen und Attribute, die im BO4E Standard definiert sind. Au\u00dferdem\nwerden alle Beziehungen zwischen den Klassen durch Diagramme visualisiert. Die JSON-Schemas sind ebenfalls verlinkt.\nAlternativ k\u00f6nnen die JSON-Schemas auch direkt von GitHub heruntergeladen werden: `<https://github.com/bo4e/BO4E-Schemas>`_.\nSeit Version `v202401.1.1 <https://bo4e.github.io/BO4E-python/v202401.1.1>`_ gibt es zus\u00e4tzlich eine\n`Kompatibilit\u00e4tsmatrix <https://bo4e.github.io/BO4E-python/v202401.1.1/changelog.html>`_,\ndie f\u00fcr jedes Objekt zeigt, zwischen welchen Versionen es einen \"breaking change\" gab.\n\nBei Fragen oder Anregungen, bitte `einfach ein Issue in diesem Repo aufmachen <https://github.com/Hochfrequenz/BO4E-python/issues/new?assignees=&labels=BO4E+Enhancement+Proposal&template=funktionale-anforderung-an-den-bo4e-standard.md&title=Ein+aussagekr%C3%A4ftiger+Titel%3A+Hunde-+und+Katzentarife+k%C3%B6nnen+nicht+abgebildet+werden>`_.\n\nCode Beitr\u00e4ge\n=============\n\u00c4nderungsvorschl\u00e4ge (sowohl an das Datenmodell als auch an die Implementierung in Python) k\u00f6nnen direkt als Code in Form von Pull Requests eingereicht werden.\nDetails dazu finden sich im `Contribution Guide`_.\n\nNutzung als Python Library\n==========================\nIn Python kann diese Library als Paket installiert werden:\n\n.. code-block::\n\n       pip install bo4e\n\n\nAndere nennenswerte BO4E Implementierungen\n==========================================\n\n* `C#/.NET <https://github.com/Hochfrequenz/BO4E-dotnet>`_\n* `Golang <https://github.com/Hochfrequenz/go-bo4e/>`_\n* `Kotlin <https://github.com/openEnWi/ktBO4E-lib>`_\n* `TypeScript (handcrafted) <https://github.com/openEnWi/tsBO4E-lib>`_\n* `TypeScript (autogenerated, inherently consistent with the .NET library) <https://github.com/Hochfrequenz/bo4e-dotnet-ts-models>`_\n* `PHP <https://github.com/conuti-gmbh/bo4e-php/>`_ (und `Schemas <https://github.com/conuti-gmbh/bo4e-schema>`_)\n\n.. _`BO4E website`: https://www.bo4e.de/dokumentation\n.. _`Contribution Guide`: CONTRIBUTING.md\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Python Library that implements the BO4E Standard.",
    "version": "202401.1.1",
    "project_urls": {
        "Changelog": "https://github.com/bo4e/bo4e-python/releases",
        "Documentation": "https://bo4e-python.readthedocs.io/en/latest/",
        "Homepage": "https://github.com/bo4e/bo4e-python"
    },
    "split_keywords": [
        "bdew",
        " bo4e",
        " edi@energy"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "c7aa25cc06097be57a01710228cd6b91f14bffccd23894e136e7470244cc7331",
                "md5": "aa6dbd5e9f4d7d03331d50115a724fd4",
                "sha256": "2ac99007ac2427928cfdbdeaf195e29910968b95d7ff56cf94315e0102517eec"
            },
            "downloads": -1,
            "filename": "bo4e-202401.1.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "aa6dbd5e9f4d7d03331d50115a724fd4",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.9",
            "size": 153286,
            "upload_time": "2024-04-30T16:33:45",
            "upload_time_iso_8601": "2024-04-30T16:33:45.779398Z",
            "url": "https://files.pythonhosted.org/packages/c7/aa/25cc06097be57a01710228cd6b91f14bffccd23894e136e7470244cc7331/bo4e-202401.1.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "90bf768dce79323bf6175fc9ef03c03bba370805ed5606a48fe0e18b01a472c8",
                "md5": "a7616a3912248fabea45896f2d57b747",
                "sha256": "96ad2f79f10bbd2a4178d7fa1b281c3307b9ef760a4202f2f61353f07bd2c4b0"
            },
            "downloads": -1,
            "filename": "bo4e-202401.1.1.tar.gz",
            "has_sig": false,
            "md5_digest": "a7616a3912248fabea45896f2d57b747",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.9",
            "size": 646553,
            "upload_time": "2024-04-30T16:33:48",
            "upload_time_iso_8601": "2024-04-30T16:33:48.187940Z",
            "url": "https://files.pythonhosted.org/packages/90/bf/768dce79323bf6175fc9ef03c03bba370805ed5606a48fe0e18b01a472c8/bo4e-202401.1.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-04-30 16:33:48",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "bo4e",
    "github_project": "bo4e-python",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [
        {
            "name": "annotated-types",
            "specs": [
                [
                    "==",
                    "0.5.0"
                ]
            ]
        },
        {
            "name": "iso3166",
            "specs": [
                [
                    "==",
                    "2.1.1"
                ]
            ]
        },
        {
            "name": "pydantic",
            "specs": [
                [
                    "==",
                    "2.4.2"
                ]
            ]
        },
        {
            "name": "pydantic-core",
            "specs": [
                [
                    "==",
                    "2.10.1"
                ]
            ]
        },
        {
            "name": "pyhumps",
            "specs": [
                [
                    "==",
                    "3.8.0"
                ]
            ]
        },
        {
            "name": "typing-extensions",
            "specs": [
                [
                    "==",
                    "4.11.0"
                ]
            ]
        }
    ],
    "tox": true,
    "lcname": "bo4e"
}
        
Elapsed time: 0.25195s