Skip to main content

Plasmite Python Bindings (v0)

These bindings wrap the libplasmite C ABI via ctypes.

Installation

Published wheels bundle native assets under plasmite/_native/ on the platforms where wheels are currently shipped:

  • libplasmite.(dylib|so) for ctypes loading
  • plasmite CLI binary (invoked via Python console script entrypoint)

Current packaged-wheel targets:

  • macOS: x86_64, arm64
  • Windows: x86_64

Linux currently falls back to source distribution, so runtime use there should come from a system SDK install (for example Homebrew or a GitHub release tarball) unless/until Linux wheels are added.

Using uv (recommended)

uv tool install plasmite

For project dependencies in a uv-managed workspace:

uv add plasmite

Runtime load order is:

  1. PLASMITE_LIB_DIR override (development escape hatch)
  2. Bundled plasmite/_native/libplasmite.(dylib|so) absolute path
  3. System linker fallback (plasmite / libplasmite)

For development/testing from this repo, see Install & Test below.

Build Requirements

  • Python 3.10+
  • libplasmite built from this repo (cargo build -p plasmite) for local development

Install & Test

From the repo root:

cargo build -p plasmite

Canonical repo-root command:

just bindings-python-test

Equivalent manual commands (from bindings/python):

uv venv
source .venv/bin/activate
PLASMITE_LIB_DIR="$(pwd)/../../target/debug" uv pip install -e .
PLASMITE_LIB_DIR="$(pwd)/../../target/debug" PLASMITE_BIN="$(pwd)/../../target/debug/plasmite" python3 -m unittest discover -s tests

Build a wheel with bundled native assets from a specific SDK directory:

PLASMITE_SDK_DIR=/path/to/sdk python -m build

Conformance runner (manifest parity with Rust/Go/Node):

cargo build -p plasmite
cd bindings/python
PLASMITE_LIB_DIR="$(pwd)/../../target/debug" \
PLASMITE_BIN="$(pwd)/../../target/debug/plasmite" \
python3 cmd/plasmite_conformance.py ../../conformance/sample-v0.json

Usage

from plasmite import Client, Durability, NotFoundError

with Client("./data") as client:
    with client.pool("docs", 64 * 1024 * 1024) as pool:
        msg = pool.append({"kind": "note", "text": "hi"}, ["note"], Durability.FAST)
        print(msg.seq, msg.tags, msg.data["text"])

        fetched = pool.get(msg.seq)
        print(fetched.data["text"])

        for item in pool.tail(tags=["note"], max_messages=1, timeout_ms=100):
            print(item.seq, item.tags, item.data)

    try:
        client.open_pool("missing")
    except NotFoundError:
        print("pool not found")

Pool.append(...), Pool.get(...), Pool.tail(...), and Pool.replay(...) return typed Message values by default.

Use append_json(...) / get_json(...) only when you explicitly need raw wire bytes.

Pool.tail(..., tags=[...]) uses exact tag matching and composes with other filters using AND semantics.

Error behavior

  • Invalid local arguments raise ValueError / TypeError.
  • ABI/runtime failures raise typed subclasses of PlasmiteError (NotFoundError, AlreadyExistsError, BusyError, PermissionDeniedError, CorruptError, IoError, UsageError, InternalError).
  • All PlasmiteError values expose kind, path, seq, and offset when present.

Troubleshooting

  • Missing pool directory: pool creation creates parent directories automatically. If you call open_pool(...) on a missing pool, catch NotFoundError or use client.pool(...) to create-or-open.
  • Permission denied: choose a writable pool directory (Client("/path/to/pools")) and verify directory permissions/ownership. Errors include err.path when available.

Download files

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

Source Distribution

plasmite-0.7.2.tar.gz (15.7 kB view details)

Uploaded Source

Built Distributions

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

plasmite-0.7.2-cp311-cp311-win_amd64.whl (5.1 MB view details)

Uploaded CPython 3.11Windows x86-64

plasmite-0.7.2-cp311-cp311-macosx_11_0_universal2.whl (16.4 MB view details)

Uploaded CPython 3.11macOS 11.0+ universal2 (ARM64, x86-64)

plasmite-0.7.2-cp311-cp311-macosx_10_12_universal2.whl (17.0 MB view details)

Uploaded CPython 3.11macOS 10.12+ universal2 (ARM64, x86-64)

File details

Details for the file plasmite-0.7.2.tar.gz.

File metadata

  • Download URL: plasmite-0.7.2.tar.gz
  • Upload date:
  • Size: 15.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for plasmite-0.7.2.tar.gz
Algorithm Hash digest
SHA256 a64a7bbe5c0de83c7ad2c9913818dd4d6a405d5223865674c37e4bc56add8adc
MD5 218b3daee557e6d8097dead9bcb54905
BLAKE2b-256 fb1201b3aaf671a66926aee10d66afb9571b4db98f09c38a32c8ca148c36e7f2

See more details on using hashes here.

File details

Details for the file plasmite-0.7.2-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: plasmite-0.7.2-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 5.1 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for plasmite-0.7.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 152e2e53735acad0fef0203a5aa1981f51b5977eeb5d486e1b637512c8c5f9ba
MD5 866b65fe5f60a2752ebf9ddf18540829
BLAKE2b-256 0c19c1dea630158468732d0dd7ac8d05b6bd7778be0580da9d91e32eb677c48c

See more details on using hashes here.

File details

Details for the file plasmite-0.7.2-cp311-cp311-macosx_11_0_universal2.whl.

File metadata

File hashes

Hashes for plasmite-0.7.2-cp311-cp311-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 657955a7d7a6f2d5abbffb32de53ef11bc80d54f4f98e726c666b6a6fda40566
MD5 730ca38f58b6ddb0cf013863e904b885
BLAKE2b-256 40b77d14bbdf699df6c35c78c00fa31ae410a6c30e5f6d6ed20d0cb755692966

See more details on using hashes here.

File details

Details for the file plasmite-0.7.2-cp311-cp311-macosx_10_12_universal2.whl.

File metadata

File hashes

Hashes for plasmite-0.7.2-cp311-cp311-macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 e5f92e74c7dcf66e1e2c51a283d6e592c32d8f26bb894655ee591bd87b7e3af9
MD5 ee8d5575b1b3e09e27d9b5eb16b8915b
BLAKE2b-256 31029e6114a493d217edb48507e22df6ff187196b711b9616953341ed1199000

See more details on using hashes here.

Release history Release notifications | RSS feed

0.8.0

4 files

This release

0.7.2 This release

4 files

0.7.1

4 files

0.7.0

4 files

0.6.1

4 files

0.6.0

4 files

0.5.1

4 files

0.5.0

4 files

0.3.0

4 files

0.2.0

4 files

0.1.14

3 files

0.1.13

3 files

0.1.9

3 files

0.1.8

3 files

Supported by

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