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.0.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.0-cp311-cp311-win_amd64.whl (5.1 MB view details)

Uploaded CPython 3.11Windows x86-64

plasmite-0.7.0-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.0-cp311-cp311-macosx_10_12_universal2.whl (16.9 MB view details)

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

File details

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

File metadata

  • Download URL: plasmite-0.7.0.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.0.tar.gz
Algorithm Hash digest
SHA256 85a8e078282c500ec7566ab2eba9c747aac95002cf4cae57320034a6a0baab65
MD5 f5c8d6936843f96ccb44ce125bef1263
BLAKE2b-256 6a05e514b48b218b2187d19dad4916d721f34f1c772454c351d2837b8a9121fb

See more details on using hashes here.

File details

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

File metadata

  • Download URL: plasmite-0.7.0-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.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 dc2cd8d428b1fce46c5741e75e718c4d45a2692b843f31454e44e33bd5362b7a
MD5 41cb86300c5e78c7fca57522431fb1ed
BLAKE2b-256 d0523203f807dfb6fc87979cd03c070dc8c291a74bb11b00638404a46e50d324

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for plasmite-0.7.0-cp311-cp311-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 d07bb111acecb66aaccdd91fbf0556dafa90e0ef892519329bb626818500da0e
MD5 63fc190b8f1eba254bc2cd4841260959
BLAKE2b-256 3324e6c3eb285a5e399e7b8d05e023688262561528a34e98d71d808bdcce266d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for plasmite-0.7.0-cp311-cp311-macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 8b86a92ca95d15a7cb84d049c2a9b4fe1d68bd435d91dc2361219922512c2990
MD5 af95c6c6d19b63ed0e54a45302148d1f
BLAKE2b-256 4f1dde45e48a283ecaa4feedc6ff99b4b4ac7d93bed03872e8598250f89b515c

See more details on using hashes here.

Release history Release notifications | RSS feed

0.8.0

4 files

0.7.2

4 files

0.7.1

4 files

This release

0.7.0 This release

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