Skip to main content

regtable (Python)

Host-side tools for regtable, the C99 register-table library for MCUs: one RegEntry[] table in the firmware, reachable over a serial CLI, Modbus RTU/TCP, MQTT, a browser, and Python.

pip install regtable

Command line

regtable gen device.yaml -o gen            # registers.c/.h/.md + <device>_client.py
regtable connect -p COM6                   # the board's own table, then a REPL with `dev`
regtable watch a0 led -p COM6              # print changes; --json for scripts
regtable connect -p COM6 --yaml device.yaml  # typed client, verified against the board first
regtable serve                             # the Web Serial panel on localhost

Without --yaml, connect and watch take the device as it describes itself (list --json) and reach registers by name: dev["led"], dev["pwm9"] = 128. With --yaml they build the typed client from the YAML in memory and compare the board's table field by field with it; a board whose table differs ends the command with the differences listed, before the first read.

Typed client

from regtable import build_client

UnoDevice = build_client("uno.yaml")       # or import the generated <device>_client.py
with UnoDevice.serial("COM6") as dev:
    dev.led = True
    dev.pwm9 = 300            # ValueError: 0..255, refused before the wire
    dev.a0 = 1                # AttributeError: read-only, there is no setter
    dev.registers()           # the table the client was generated from
    dev.snapshot()            # every value, one round trip

Without a YAML, the device's own table:

from regtable import RegtableClient, SerialTransport

with RegtableClient.discover(SerialTransport("COM6")) as dev:
    dev.registers()           # whatever the device reports
    dev["led"] = True         # same local checks, by name
    dev["pwm9"] = 300         # ValueError

The client keeps no values; every attribute read is a wire read. The wire carries no request ids, so a timeout or a malformed answer closes the connection rather than pair a late reply with the wrong command; reconnecting re-verifies. Transports are duck-typed: SerialTransport (pyserial), PipeTransport (a CLI process over stdin/stdout), or anything with write_line, read_line, close.

The firmware side, the protocol adapters, and the YAML format are documented in the main repository.

Release files for regtable 0.1.0

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

Source distribution (sdist)

Source distribution for regtable 0.1.0
File Size Uploaded
regtable-0.1.0.tar.gz 31.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for regtable 0.1.0
File Interpreter ABI Platform
regtable-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 65.8 kB

Release files / regtable-0.1.0.tar.gz

Download URL regtable-0.1.0.tar.gz
Size 31.2 kB
Tags Source
SHA-256 checksum
How to use checksums
87eb2c8fd6b2a5b58eb3bff0424fe4b0db1d0875a427c9b27805bb4f3930ab5f
BLAKE2b-256 checksum
How to use checksums
8a936d1ee7529745c6de67341465bfab4d0d4cb417295507bcf5b52bc9b25196
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 Aug 22, 2026.

Transparency log

Release files / regtable-0.1.0-py3-none-any.whl

Download URL regtable-0.1.0-py3-none-any.whl
Size 34.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5758f77e6e8022fa55d1877d0300131f2cd884dcfd32afa213bb81e333b5a9d1
BLAKE2b-256 checksum
How to use checksums
74c31b0318e955d82401f1b2fa40ae959fe82e70bfe51bf908064d351587856a
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 Aug 22, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

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