A previous release had provenance metadata, but this release does not. View details.
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.
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 mittels GitHub Pages gehosted. Die früheren Versionen sind auf read the docs 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 gibt es zusätzlich eine Kompatibilitätsmatrix, 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.
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.
Entwicklungs-Setup
Die Entwicklungs-Abhängigkeiten sind in pyproject.toml unter [dependency-groups] (PEP 735) zentral gepflegt und über uv.lock gepinnt. uv (https://docs.astral.sh/uv/) wird als Paket-Manager verwendet, tox-uv integriert ihn in die bestehenden tox-Umgebungen.
# uv installieren (einmalig), siehe https://docs.astral.sh/uv/getting-started/installation/
curl -LsSf https://astral.sh/uv/install.sh | sh
# Repo klonen und volles Entwickler-Setup installieren
git clone https://github.com/bo4e/BO4E-python.git
cd BO4E-python
uv sync --group dev
# Einzelne tox-Umgebung ausführen (tox + tox-uv werden via uv installiert)
uv run tox -e tests
uv run tox -e linting
uv run tox -e docs
Die verfügbaren Gruppen sind: tests, coverage, type_check, linting, formatting, packaging, json_schemas, docs und dev (Sammel-Gruppe, enthält alle anderen plus pre-commit).
Nutzung als Python Library
In Python kann diese Library als Paket installiert werden:
pip install bo4e
Andere nennenswerte BO4E Implementierungen
Metadata
Release files for bo4e 202607.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Loss of provenance
These files do not have provenance metadata, despite files in a prior release including this data.
We recommend further investigation before installing these files. View details.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| bo4e-202607.1.0.tar.gz | 758.4 kB | Without provenance | Details for bo4e-202607.1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| bo4e-202607.1.0-py3-none-any.whl | Python 3 | none | any | Details for bo4e-202607.1.0-py3-none-any.whl |
Total release size: 930.7 kB
Release files / bo4e-202607.1.0.tar.gz
Loss of provenance
This file belongs to a release without provenance metadata, despite a prior release including this data.
We recommend further investigation before installing this file. View details.
| Download URL | bo4e-202607.1.0.tar.gz |
|---|---|
| Size | 758.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
13424e490a80ded9f62d22d54b82e2f63cbf3da7eb8c187924d0154bb87752b3
|
|
BLAKE2b-256 checksum How to use checksums |
0906f62678537054ac0aac9394d24fa04987562d9f223c3480c1dcec0fa04ff6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / bo4e-202607.1.0-py3-none-any.whl
Loss of provenance
This file belongs to a release without provenance metadata, despite a prior release including this data.
We recommend further investigation before installing this file. View details.
| Download URL | bo4e-202607.1.0-py3-none-any.whl |
|---|---|
| Size | 172.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
5cf7ffda6162b7b9b6aefe4bd798179cf1e99307b96e9c27550353a20f86d1df
|
|
BLAKE2b-256 checksum How to use checksums |
f0cfe4e9ed6ce9c661fb2a08db9fcb65c4ba1175f816876377ae6142ad0541a6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Security for bo4e 202607.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Loss of provenance
A previous release of these files had provenance metadata, but this release does not.
While this could reflect a routine change by the project maintainers, it may also indicate that the release files have been compromised.
Release comparison
- Removed 202607.0.0 2 files With provenance
- Added 202607.1.0 2 files Without provenance
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.