Skip to main content

async HTTP client to communicate with transformer.bee/edifact-bo4e-converter

Project description

transformer.bee Client (Python)

License: MIT Python Versions (officially) supported Unittests status badge Coverage status badge Linting status badge Black status badge PyPi Status Badge

This library is a Python HTTP client for transformer.bee aka edifact-bo4e-converter. We also maintain a .NET and TypeScript version of this client.

It allows you to convert EDIFACT messages to BO4E and vice versa by speaking to Hochfrequenz's transformer.bee service. Note that the actual conversion happens in the transformer.bee service/backend, this library only provides a convenient way to use its API.

How to use this library

Prerequisites / Account

First of all, you need an account to use transformer.bee. Ask info@hochfrequenz.de or ping @JoschaMetze on GitHub to get one.

You can check if your account is working by logging into our stage environment.

Using the client

Install the library via pip:

pip install transformerbeeclient

Authentication

As of 2024-02-06 we support either no authentication or OAuth2 client ID/client secret authentication. Both the unauthenticated and the authenticated client implement the TransformerBeeClient protocol, so you can use them interchangeably.

No Authentication

If you're hosting transformer.bee in the same network or your localhost and there is no authentication, you can instantiate the client

from yarl import URL
from transformerbeeclient import UnauthenticatedTransformerBeeClient

client = UnauthenticatedTransformerBeeClient(base_url=URL("http://localhost:5021"))

OAuth2 with Client ID/Client Secret

If, which is more likely, Hochfrequenz provided you with a client Id and secret, you can use the AuthenticatedTransformerBeeClient class like this:

from yarl import URL
from transformerbeeclient import AuthenticatedTransformerBeeClient

client = AuthenticatedTransformerBeeClient(
    base_url=URL("https://transformer.utilibee.io"),
    client_id="your_client_id",
    client_secret="your_client_secret",
)

Pre-authorized with Existing Token

If you already have an authorization token (e.g., from another service or a custom auth flow), you can use the PreauthorizedTransformerBeeClient class:

from yarl import URL
from transformerbeeclient import PreauthorizedTransformerBeeClient

client = PreauthorizedTransformerBeeClient(
    base_url=URL("https://transformer.utilibee.io/"),
    authorization_header="Bearer your-token-here",  # or "Basic dXNlcjpwYXNz" for Basic auth
)

Note: Unlike the other clients, PreauthorizedTransformerBeeClient requires the base_url to be a yarl.URL instance. This client does not manage token refresh - it uses the provided authorization header as-is.

Minimal Working Examples

Find full examples of both conversions in the integration tests. Find the respective BO4E and EDIFACTs in the test data folder.

Conversion

There are two main methods to convert between EDIFACT and BO4E:

  • edifact_to_bo4e
  • bo4e_to_edifact

Both have an EdifactFormatVersion as argument (imported from efoli), which denotes which version of the EDIFACT format you want to use. We group all the different versions of the EDIFACT format into an enum, so you can easily choose the one you need. E.g. EdifactFormatVersion.FV2310 stands for all MIG/AHB versions valid since 2023-10-01.

Convert EDIFACT to BO4E

from efoli import EdifactFormatVersion
# client instantiation goes here

bo4e = await client.edifact_to_bo4e("UNA:+,? 'UNB...", EdifactFormatVersion.FV2310)

Convert BO4E to EDIFACT

from efoli import EdifactFormatVersion
from transformerbeeclient import BOneyComb
# client instantiation goes here

boney_comb = BOneyComb.model_validate({"stammdaten":[...], "transaktionsdaten":{...}})
edifact = await client.bo4e_to_edifact(boney_comb, EdifactFormatVersion.FV2310)

Development

For development of this library, follow the instructions in our Python Template Repository.

Release (CI/CD)

To release a new version of this library, create a new release in GitHub. Make sure its tag starts with v and the version number, e.g. v1.2.3. Releases are not restricted to the main branch but we prefer them to happen there.

Contribute

You are very welcome to contribute to this template repository by opening a pull request against the main branch.

Related Tools and Context

This repository is part of the Hochfrequenz Libraries and Tools for a truly digitized market communication.

Hochfrequenz

Hochfrequenz Unternehmensberatung GmbH is a Grünwald (near Munich) based consulting company with offices in Berlin and Bremen and attractive remote options. We're not only a main contributor for open source software for German utilities but, according to Kununu ratings, also among the most attractive employers within the German energy market. Applications of talented developers are welcome at any time! Please consider visiting our career page (German only).

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

transformerbeeclient-0.3.0.tar.gz (21.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

transformerbeeclient-0.3.0-py3-none-any.whl (12.5 kB view details)

Uploaded Python 3

File details

Details for the file transformerbeeclient-0.3.0.tar.gz.

File metadata

  • Download URL: transformerbeeclient-0.3.0.tar.gz
  • Upload date:
  • Size: 21.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for transformerbeeclient-0.3.0.tar.gz
Algorithm Hash digest
SHA256 50cbe012a9634d9da1c0967eaf87bc1d86febd2d807d02fb2e118ef0201181d4
MD5 d172f5a92b4ef1c1cbd04e281efc6347
BLAKE2b-256 0efd8511a06a6186370ef9835cb92614dd8fcd60f74db61b09db2b6173259e2a

See more details on using hashes here.

Provenance

The following attestation bundles were made for transformerbeeclient-0.3.0.tar.gz:

Publisher: python-publish.yml on Hochfrequenz/TransformerBeeClient.py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file transformerbeeclient-0.3.0-py3-none-any.whl.

File metadata

File hashes

Hashes for transformerbeeclient-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9d9205ea1bb9c9313ca514761a17139fe0d03864c8a3ea79932529d3b6e486ce
MD5 d5f82499445701c64eb1b85993666e6f
BLAKE2b-256 913a7d2f9f0558db43d8bd6c2228a555376e8173793d83a93562d77bc8ce7498

See more details on using hashes here.

Provenance

The following attestation bundles were made for transformerbeeclient-0.3.0-py3-none-any.whl:

Publisher: python-publish.yml on Hochfrequenz/TransformerBeeClient.py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page