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 pip

pip install plasmite

Using uv

uv tool install 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):

PLASMITE_LIB_DIR="$(pwd)/../../target/debug" python -m 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.8.tar.gz (12.3 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.8-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.8-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.8.tar.gz.

File metadata

  • Download URL: plasmite-0.1.8.tar.gz
  • Upload date:
  • Size: 12.3 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.8.tar.gz
Algorithm Hash digest
SHA256 09a093104f37b8a0da0fee8eecf860bce8afa59f541e1bd163e50393ce14fe74
MD5 e2a03d97938167a191c6ac32b4d2594a
BLAKE2b-256 a10f38f12fcd31b715638ea069b88aac2e1f1f866ca6da84b162361a7280cf4f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for plasmite-0.1.8-cp311-cp311-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 0a9310a035dfc6f846c9286165457b602aa0bfdc755e101bf5e1676c31dd3907
MD5 31c19fdec142f711270de2f41ddd3361
BLAKE2b-256 3dca9c3c1a712f87d137613dfb317738903592c7c34c40a3e037ffe69b923b21

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for plasmite-0.1.8-cp311-cp311-macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 6e4d6d2bc1f6c4c22f62328517f0b1fc8f7c92a981174f50b55d32cf4a670287
MD5 89a40fe1268ea9d3dba5637a1a5c4a9c
BLAKE2b-256 d7c87375484b314adaf3c8167dc392ed56fe2b2215f84172adfdbccd6d77020e

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