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.1.9.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.1.9-cp311-cp311-macosx_11_0_universal2.whl (5.3 MB view details)

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

plasmite-0.1.9-cp311-cp311-macosx_10_12_universal2.whl (5.6 MB view details)

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

File details

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

File metadata

  • Download URL: plasmite-0.1.9.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.1.9.tar.gz
Algorithm Hash digest
SHA256 00be6b8e94b86e23dfdcf7df0d0e2c754180aa14d7ab52e717c812a2965c3596
MD5 24ced1ade57b84cd6400d8ce8e348515
BLAKE2b-256 0927c22240b14b2da1be29e08ad2458a7cd4886228ae02d5d6dbe5392d38f13a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for plasmite-0.1.9-cp311-cp311-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 9e88970fb82314a081e7b451a4ac92cc67ab0c8a536f0967beeb2232914b8049
MD5 496cb53ec56d63061c0746a3919c2f8f
BLAKE2b-256 56befbe2a1aae5dc6fa9f56da94306a9de0be55dcf2867c338b7047a10ea86f7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for plasmite-0.1.9-cp311-cp311-macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 1e1978c4845032b2166af71498da7924bd0dba94cedf129492934ce2849f5a84
MD5 cdb03676ba6e023136b3743d23f7b91e
BLAKE2b-256 927949afbdb938072d7120e10d681c74febd9b5785397ca910783fa03ec3c683

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