zebridge (Python)
A ZeBridge client for Python: a local replica that follows PostgreSQL through the bridge, and writes back through it. Pure Python over libzb's C ABI — no ctypes in your code. Which library for which host: DISTRIBUTION.md.
pip install zebridge
The wheels carry libzb for Linux (x86_64, aarch64; glibc 2.35+) and macOS (Apple silicon, Intel; 13+). Python 3.10 or later.
Use
from zebridge import ZeBridge
with ZeBridge(bridge_url="https://zb.example.com", invite=code, tables=["orders"],
on_change=lambda r: print("changed:", r.get("changed_tables"))) as zb:
rows = zb.query("SELECT * FROM orders WHERE status = ?", "open") # list of dicts
zb.mutate("orders", "UPDATE", {"id": 7}, {"status": "done"})
- The options are the ones every ZeBridge client reads (CLIENTS.md), in camelCase or
snake_case (
bridge_urlisbridgeUrl). A dict works too:ZeBridge({"bridgeUrl": …}). - Enrollment. The first run redeems
inviteat the bridge and keeps the identity next to the replica (identity_path, default<db_path>.identity, mode 0600). Later runs need neither the invite nor a NATS URL, and the JWT renews itself before it expires. - The thread. libzb drives a client from one thread;
ZeBridgeowns it. Any thread may call it. An idle client polls everypoll_ms(250 ms); while calls keep coming, the thread serves each one at once and still polls everypoll_ms, so a writer in a loop runs at its own pace (measured: 1,700 writes/s, all settled).on_changehears every poll that applied rows, settled writes or brought requests — on the worker thread (calling back intozbfrom it is fine). - Errors raise
ZeBridgeErrorwith libzb's words.on_errorhears the loop's. - Revocation. Once revoked,
zb.revokedis true and the loop stops;wipe()removes the rows. - Services.
serve({...}), then answeron_change'srequestswithreply(id, answer);requestandingestfor on-demand tables.
The library
ZB_LIB names libzb's shared library; else a copy bundled in the package
(zebridge/lib/), else the repository's own build (cd libzb && zig build -Doptimize=ReleaseFast), else the system's: on Debian and Ubuntu, sudo apt install ./libzb_<version>_<arch>.deb puts it where the loader finds it. ZB_ABI pins the C ABI this package speaks; libzb/python/abi_check.py
checks it with the other bindings.
Metadata
Release files for zebridge 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| zebridge-0.1.0-py3-none-manylinux_2_35_x86_64.whl | Python 3 | none | Linux glibc 2.35+ x86-64 | Details |
| zebridge-0.1.0-py3-none-manylinux_2_35_aarch64.whl | Python 3 | none | Linux glibc 2.35+ ARM64 | Details |
| zebridge-0.1.0-py3-none-macosx_13_0_x86_64.whl | Python 3 | none | macOS 13.0+ x86-64 | Details |
| zebridge-0.1.0-py3-none-macosx_13_0_arm64.whl | Python 3 | none | macOS 13.0+ ARM64 | Details |
Total release size: 20.6 MB
Release files / zebridge-0.1.0-py3-none-manylinux_2_35_x86_64.whl
| Download URL | zebridge-0.1.0-py3-none-manylinux_2_35_x86_64.whl |
|---|---|
| Size | 8.2 MB |
| Tags | Linux glibc 2.35+ x86-64 Python 3 |
|
SHA-256 checksum How to use checksums |
3555ef316f31be5a7a9eb913c016ef125164777545a2c3a6d74d5e448756f9d1
|
|
BLAKE2b-256 checksum How to use checksums |
91212fec7b0b209eca83fd9bbf7627ccb86606d08f66f8456e29cc226af42625
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.8 {"installer":{"name":"uv","version":"0.12.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / zebridge-0.1.0-py3-none-manylinux_2_35_aarch64.whl
| Download URL | zebridge-0.1.0-py3-none-manylinux_2_35_aarch64.whl |
|---|---|
| Size | 7.9 MB |
| Tags | Linux glibc 2.35+ ARM64 Python 3 |
|
SHA-256 checksum How to use checksums |
f9778f57b0ddb83bbb88c7a8890d3eb13612aea583690941db23959da31462ba
|
|
BLAKE2b-256 checksum How to use checksums |
2255e108a8256d91fb0393dd95b9b022fd3821c9ceb6919ec90220fa1259d4ea
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.8 {"installer":{"name":"uv","version":"0.12.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / zebridge-0.1.0-py3-none-macosx_13_0_x86_64.whl
| Download URL | zebridge-0.1.0-py3-none-macosx_13_0_x86_64.whl |
|---|---|
| Size | 2.3 MB |
| Tags | Python 3 macOS 13.0+ x86-64 |
|
SHA-256 checksum How to use checksums |
210a1f56487fe3bf4fa57a6f922e0fa59264cf66509825573407b6f4f121d409
|
|
BLAKE2b-256 checksum How to use checksums |
716f3ceeeef76d5a3c7e4d70317b01ae9da69736206e15517a6b9fcd84947fbf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.8 {"installer":{"name":"uv","version":"0.12.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / zebridge-0.1.0-py3-none-macosx_13_0_arm64.whl
| Download URL | zebridge-0.1.0-py3-none-macosx_13_0_arm64.whl |
|---|---|
| Size | 2.1 MB |
| Tags | Python 3 macOS 13.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
6eea74dd9b5e4c191d96ec49695866b7b96e2209184da9bb3de1839cc23e259a
|
|
BLAKE2b-256 checksum How to use checksums |
465118a0a6174d1c87bdf7eba45f9d737873f968917376c78f30f220890a96b8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.8 {"installer":{"name":"uv","version":"0.12.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|