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

Uploaded CPython 3.11Windows x86-64

plasmite-0.7.1-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.1-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.1.tar.gz.

File metadata

  • Download URL: plasmite-0.7.1.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.1.tar.gz
Algorithm Hash digest
SHA256 a816583117a14e94eb2c7065fb02cad13655f6d2264247436ed1bf94f75139b9
MD5 414a7bfcb7a509f48c0b4a5458a9aa10
BLAKE2b-256 1e6cb93ed770d5abd56762c819da9e4b57d634056e9aa1fc7fa3bf5f8f82e079

See more details on using hashes here.

File details

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

File metadata

  • Download URL: plasmite-0.7.1-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.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 6440c16d04dea0caf70af2beb6e84dda5fbfd369218c51baf25596f402530f5c
MD5 7b27394debbeaf01741f61fa42972596
BLAKE2b-256 0ea493204f60a57980b24e45d5fab198a82c777f065fa34f9602d9ebf31a5ae5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for plasmite-0.7.1-cp311-cp311-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 bbeca8671d4f2bad9f9115c55899dd92bc8dbe824a192d8b338801221f851cbc
MD5 9548eef0f881e1852f7b28bba85085f9
BLAKE2b-256 fb4d0ef2fc2941b788e6894ba501d72159c1c0783ca8b65a61a18dd0df5824fb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for plasmite-0.7.1-cp311-cp311-macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 e76a47b6dc2e145cf148cc70ed282dbecc2db199af938c5246be21a493052750
MD5 8b581bead105eb9f3df9a5758111124d
BLAKE2b-256 e67f4dda1e1a7bc3f967ce61f0c198b14ccfb38f24bb5277b266ba43d139f468

See more details on using hashes here.

Release history Release notifications | RSS feed

0.8.0

4 files

0.7.2

4 files

This release

0.7.1 This release

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