Skip to main content

Persistent JSON message queues for Python - native bindings for local and remote IPC

Project description

Plasmite Python Bindings (v0)

These bindings wrap the libplasmite C ABI via ctypes.

Installation

Wheels are designed to bundle native assets under plasmite/_native/:

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

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

Usage

from plasmite import Client, Durability

with Client("./data") as client:
    with client.create_pool("docs", 64 * 1024 * 1024) as pool:
        message = pool.append_json(
            b'{"kind":"note","text":"hi"}',
            ["note"],
            Durability.FAST,
        )
        print(message.decode("utf-8"))

        frame = pool.get_lite3(1)
        print(len(frame.payload))

        for item in pool.tail(tags=["note"], max_messages=1, timeout_ms=100):
            print(item.decode("utf-8"))

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 PlasmiteError with kind, path, seq, and offset when present.

Project details


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.3.0.tar.gz (12.4 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.3.0-cp311-cp311-win_amd64.whl (4.7 MB view details)

Uploaded CPython 3.11Windows x86-64

plasmite-0.3.0-cp311-cp311-macosx_11_0_universal2.whl (5.4 MB view details)

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

plasmite-0.3.0-cp311-cp311-macosx_10_12_universal2.whl (5.7 MB view details)

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

File details

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

File metadata

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

File hashes

Hashes for plasmite-0.3.0.tar.gz
Algorithm Hash digest
SHA256 5351ab1776bbb988e458614e045c91438c931ade51198a752e19e3bd244562ea
MD5 117840e3c3d952fec860cdbe42d87caa
BLAKE2b-256 47d57712f64d7bd19680381fd5cc09f811d8057d116a6803208dbaa5167ed538

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for plasmite-0.3.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 aaec5a5d0dff24abb7a14b88dc5bc43f4197d1c0c5485945caffdfd6b74a6069
MD5 5db5c743daf8ef3b17fb81687d27fd6a
BLAKE2b-256 468ecc7042fd7f4fc1d7fe5fdbdd6cfa49adac78aead6f3f1705f4d84fc4b6e9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for plasmite-0.3.0-cp311-cp311-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 c0cfe2043371d5652d268275aff5581dcf2cd10cfdbbe8d17b1f7aae125af393
MD5 87106db3f321ce7e6d0c32dd9833f5d0
BLAKE2b-256 309a31c82bae7a54a02402b218836bf67ad057da23baf36393e76cdda8b9dc26

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for plasmite-0.3.0-cp311-cp311-macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 e6d0cf0a3f229fac6be6609dd98d5ad8d89b2a58112d5fe32a08d76faa77c19d
MD5 901da9d551f1a04941c7ed5a2f441697
BLAKE2b-256 4970fd965379112e8f20127909fcff5e0e02ad46db52e559de2d203152628439

See more details on using hashes here.

Supported by

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