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.13.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.13-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.13-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.13.tar.gz.

File metadata

  • Download URL: plasmite-0.1.13.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.13.tar.gz
Algorithm Hash digest
SHA256 a40f660f638de023ad02d4d3592e4162b2ee6399ea28cc556ee47e3a62fb8373
MD5 074049506d9102b48ef8144ae3790453
BLAKE2b-256 853752610b4fce793c1e28db2e116e1ebad64ea7c88c24b68f17d5e9f7edd075

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for plasmite-0.1.13-cp311-cp311-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 4bd40a7aae357d1aab3b74166e183a956987763200f6af5d44134fffba3b2f8d
MD5 bffdb2c9a4af1833e040cb2ac08f5747
BLAKE2b-256 88f9eb2dafd673a001a42134c4befed54a9122677f5648c6b11be81071727c2b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for plasmite-0.1.13-cp311-cp311-macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 9144bd42ef6914a45bc651f388143685fe658bc91b94fcff7aca2cc962471e79
MD5 998a39bb74866a2c1922778ed962335e
BLAKE2b-256 3aebaa70bb855744ad3786b3ba9922b0944ee10860e937d2a82e1a5edd3cb1cc

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