Skip to main content

makotest

Test and simulation toolkit for German market-communication (MaKo) platforms. It builds regulator-conformant EDIFACT, simulates the counterparties a platform talks to — answering in EDIFACT, late, or not at all — and asserts on both wire contracts: the messages and the CloudEvents stream. It targets mako but drives only public interfaces, so it can exercise any MaKo implementation.

pip install makotest                  # no runtime dependencies
pip install 'makotest[hypothesis]'    # + property-based strategies

Wheels are abi3 (abi3-py311): one wheel serves Python 3.11 and later.

Example

from makotest import antwort_obligation, malo_from_base, validate_edifact

malo_from_base("5123869601")  # '51238696012' — BDEW check digit applied

o = antwort_obligation(55001)  # what a Netzbetreiber owes on an Anmeldung
o.clock_time  # '11:00' — a clock time, not n × 24 h
o.due_at("2026-03-02T09:00:00Z")  # '2026-03-03T11:00:00+01:00'

validate_edifact(utilmd_bytes, "2026-10-01").is_valid  # MIG + AHB + semantic
def test_nb_bestaetigt(nb_sim, anmeldung):
    nb_sim.on(55001).bestaetigung(antwort_code="A51", ebd="E_0623")
    reply = nb_sim.receive(anmeldung, received_at="2026-03-02T09:00:00Z")

    assert reply.pid == 55002  # the AHB answer PID — never Anfrage + 1
    platform.ingest(reply.business)  # a rendered interchange, not a dict


def test_frist_faellt(nb_sim, anmeldung):
    nb_sim.on(55001).timeout()  # no answer, not even a CONTRL
    assert not nb_sim.receive(anmeldung)


def test_verspaetete_antwort(nb_sim, anmeldung):
    nb_sim.on(55001).bestaetigung(delay_werktage=3)  # right message, wrong day
    reply = nb_sim.receive(anmeldung, received_at="2026-03-02T09:00:00Z")
    assert reply.answered_at > reply.due_at

From a shell:

$ makotest validate inbound.edi --on 2026-04-01
$ makotest frist 55001 --received 2026-03-02T09:00:00Z
$ makotest id 9900357000004      # → satisfies NEITHER check-digit procedure
$ makotest codes --pid 55001     # what a counterparty may answer with

Design

Everything a regulator defines in a table is the platform's own Rust, bound through PyO3 — never reimplemented in Python:

Concern Home
EDIFACT build + MIG/AHB/semantic validation, release per format version Rust — edi-energy
Identifier check digits (MaLo, MP-ID, EIC, §8.2 resources) Rust — rubo4e
Werktag calendar, acknowledgement clocks, answer Fristen Rust — mako-fristen
Antwortcodes per Entscheidungsbaum Rust — mako-pruefung
CloudEvents type catalog and subscription matcher Rust — mako-events
Counterparty behaviour, EPEX curves, fixtures Python

Generators are seeded, clocks injected and the format version is an argument, so two runs produce byte-identical EDIFACT. Every validation report carries rules_applied, and every event assertion resolves its type against the platform's catalogue first — a check that matched nothing fails instead of passing. AssertionError means the system under test is wrong; ValueError means the test is.

pytest plugin

Registered through the pytest11 entry point:

Fixtures nb_sim, biko_sim, imsys_sim, epex, lastgang, frozen_clock, makotest_seed, makotest_on, mako_endpoint
Markers @pytest.mark.regulatory("GPKE Teil 2"), @pytest.mark.requires_docker
Options --makotest-on ISO_DATE, --makotest-seed N, --mako-endpoint URL

Development

makotest is a member of the mako Cargo workspace, built with maturin:

python3.11 -m venv .venv    # PYO3_PYTHON points here (.cargo/config.toml)
just test-makotest          # maturin develop + pytest
just lint-makotest          # ruff
just build-makotest         # release wheel

pyo3/extension-module is not a Cargo feature (maturin enables it), so cargo test --workspace --all-features still links.

The full reference — every builder, assertion, strategy and simulator, with the Fundstelle behind each rule — is makotest in the mako documentation.

Licence

MIT OR Apache-2.0, matching mako.

Metadata

Release files for makotest 0.24.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for makotest 0.24.1
File Size Uploaded Provenance Actions
makotest-0.24.1.tar.gz 2.2 MB With provenance Details for makotest-0.24.1.tar.gz

Built distributions (wheels)

Table of built distributions (wheels) for makotest 0.24.1
File Actions
makotest-0.24.1-cp311-abi3-win_amd64.whl CPython 3.11 abi3 Windows x86-64 Details for makotest-0.24.1-cp311-abi3-win_amd64.whl
makotest-0.24.1-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.11 abi3 Linux glibc 2.17+ x86-64 Details for makotest-0.24.1-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
makotest-0.24.1-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.11 abi3 Linux glibc 2.17+ ARM64 Details for makotest-0.24.1-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
makotest-0.24.1-cp311-abi3-macosx_11_0_arm64.whl CPython 3.11 abi3 macOS 11.0+ ARM64 Details for makotest-0.24.1-cp311-abi3-macosx_11_0_arm64.whl
makotest-0.24.1-cp311-abi3-macosx_10_12_x86_64.whl CPython 3.11 abi3 macOS 10.12+ x86-64 Details for makotest-0.24.1-cp311-abi3-macosx_10_12_x86_64.whl

Total release size: 13.5 MB

Release files / makotest-0.24.1.tar.gz

Download URL makotest-0.24.1.tar.gz
Size 2.2 MB
Tags Source
SHA-256 checksum
How to use checksums
d4e901c1742d69e9b5d82b193b70a2fd9426684ebc14677ad0c074295cdd001e
BLAKE2b-256 checksum
How to use checksums
083859df8ea0aae7df15b7628e5370d2dae7cbed07f34d3b3d27794d26053440
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 4, 2026.

Transparency log

Release files / makotest-0.24.1-cp311-abi3-win_amd64.whl

Download URL makotest-0.24.1-cp311-abi3-win_amd64.whl
Size 2.2 MB
Tags CPython 3.11 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
b351c038f4be3f8c8dcfbea45faffcc7e76586350c35faeba9b6b122d8f8d7e4
BLAKE2b-256 checksum
How to use checksums
2cf6fe3f1c32b98f45e13c3c1c726cfe95364ddd3c91b5828a64e01d93aed70d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 4, 2026.

Transparency log

Release files / makotest-0.24.1-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL makotest-0.24.1-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 2.3 MB
Tags CPython 3.11 Linux glibc 2.17+ x86-64 abi3
SHA-256 checksum
How to use checksums
b6a3c23950cd365ddc273effb2f39d5aeb8b45012ec5852a657274a8019be600
BLAKE2b-256 checksum
How to use checksums
3875f27908beb9f7373821e5fd2ff2313f5945c507b3dcf7b2c95eb9ede9e22f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 4, 2026.

Transparency log

Release files / makotest-0.24.1-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL makotest-0.24.1-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 2.3 MB
Tags CPython 3.11 Linux glibc 2.17+ ARM64 abi3
SHA-256 checksum
How to use checksums
dd8625f82a57f4a8efe24c01aa0d83893c6af86a52e7936812be49bb5291f7af
BLAKE2b-256 checksum
How to use checksums
72843f0fa92146bcc5333907fad80ee28f8e9b7f10f37e7b41250e008db0825f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 4, 2026.

Transparency log

Release files / makotest-0.24.1-cp311-abi3-macosx_11_0_arm64.whl

Download URL makotest-0.24.1-cp311-abi3-macosx_11_0_arm64.whl
Size 2.4 MB
Tags CPython 3.11 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
a1b2826a1b0da0ffe1ab339372c0335481fca948aa96fccefe6609bb3a318586
BLAKE2b-256 checksum
How to use checksums
9a949f91993bd2a75c5b1676b9df9c7d6f275895fb291f5b6993d8a59f18c08d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 4, 2026.

Transparency log

Release files / makotest-0.24.1-cp311-abi3-macosx_10_12_x86_64.whl

Download URL makotest-0.24.1-cp311-abi3-macosx_10_12_x86_64.whl
Size 2.2 MB
Tags CPython 3.11 abi3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
a02e3e5676e28ea29230dd87c4f4bcdc95c76479d761164a1cc6a92cc9c60eab
BLAKE2b-256 checksum
How to use checksums
440234080fe4e6f5101385375dc4ea4e206815f6d68e1431b2578cbb1da7eb03
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 4, 2026.

Transparency log

Security for makotest 0.24.1

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.

Full provenance

All 6 files in this release have been uploaded with provenance metadata.

Select from 6 files

Attestation for makotest-0.24.1.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 4, 2026.

Transparency log

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.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page