Skip to main content

Pure Python TCP driver for RocheDB

Project description

RocheDB Python Driver

Pure Python TCP driver for RocheDB.

This driver talks to roched over RocheDB's high-level wire protocol. It does not reimplement RocheDB's ring-key, period, head-angle, or placement rules. Applications pass a human-readable ring name, and RocheDB returns a typed ID.

Status

  • package target: PyPI rochedb after validation
  • current mode: native TCP wire driver
  • Python: 3.10+
  • runtime dependencies: none
  • RocheDB core: running roched node or cluster

Implemented:

  • persistent TCP connections
  • wire_version / health
  • put / put_json
  • get / get_text / get_json
  • query / query_text / query_json
  • batch_get
  • typed RocheId
  • one reconnect retry
  • context manager support

Planned:

  • PyPI publication
  • authentication / secret-key handshake support
  • retrieve / atlas wire APIs once the public wire contract is finalized for drivers
  • connection pooling

Install For Local Development

Until PyPI publication, install from a checkout:

python3 -m pip install -e .

Build roched from the RocheDB core repository:

git clone https://github.com/puffball1567/rochedb.git
cd rochedb
nimble install -y
nim c -d:release --nimcache:/tmp/nimcache_roched -o:src/roched src/roched.nim

Example

from rochedb import RocheClient

with RocheClient.connect("127.0.0.1:17301") as db:
    doc_id = db.put_json(
        "docs/japan/support",
        {"title": "Tokyo support note", "country": "JP"},
        vector=[1.0, 0.0],
    )

    print(db.get_json(doc_id))
    print(db.query_json(doc_id, "{ title }"))

Test

From this driver repository, point ROCHEDB_CORE_DIR at a RocheDB checkout:

ROCHEDB_CORE_DIR=/path/to/rochedb python3 -m unittest discover -s tests

The test starts a two-node local roched cluster and verifies put/get/query, JSON helpers, wire_version, and batch_get.

Why A Native Wire Driver?

The Python driver is intended for API services, scripts, experiments, and AI/RAG validation where a running RocheDB server or cluster is the natural boundary. It keeps Python out of RocheDB's placement internals and uses the same ring-oriented API that other external drivers should use.

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

rochedb-0.1.1.tar.gz (10.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

rochedb-0.1.1-py3-none-any.whl (9.6 kB view details)

Uploaded Python 3

File details

Details for the file rochedb-0.1.1.tar.gz.

File metadata

  • Download URL: rochedb-0.1.1.tar.gz
  • Upload date:
  • Size: 10.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.8

File hashes

Hashes for rochedb-0.1.1.tar.gz
Algorithm Hash digest
SHA256 4e02b312dc83061ce5dbae9ada58158085416472de55c62e7ccbb1eaf82bee54
MD5 7e4261236180a98b62beba3e45c69223
BLAKE2b-256 e75903aee6c20daff9f21fe12629509b7d8b9dccd44756b4b78e5df28d82f8b8

See more details on using hashes here.

File details

Details for the file rochedb-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: rochedb-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 9.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.8

File hashes

Hashes for rochedb-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 c112822de2d5ec302efd621384e0787997ef70233e6bb84b6e0573139bdeaa37
MD5 c3c799ef75c41b302e3c8a840f6e0b85
BLAKE2b-256 a6c18a104719c35f14da591039e97bb9f9ed2660dd19d15b6c3cac4d2eaf2bba

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