Skip to main content

Python SDK for interacting with the Xian blockchain

Project description

xian-py

xian-py is the Python SDK for talking to Xian nodes from applications, workers, automation jobs, and operator tooling.

Quick Start

Install the SDK:

pip install xian-tech-py

The published PyPI package name is xian-tech-py. The import package remains xian_py.

Read state and send a transaction:

from xian_py import Wallet, Xian

wallet = Wallet()

with Xian("http://127.0.0.1:26657") as client:
    balance = client.token().balance_of(wallet.public_key)
    receipt = client.token().transfer("bob", 5, wallet=wallet, mode="checktx")
    print(balance, receipt.code)

Watch indexed events over the CometBFT websocket:

import asyncio

from xian_py import XianAsync


async def main() -> None:
    async with XianAsync("http://127.0.0.1:26657") as client:
        async for event in client.token().transfers().watch(after_id=0):
            print(event.id, event.data)


asyncio.run(main())

Watch raw live events directly from the CometBFT websocket:

import asyncio

from xian_py import XianAsync


async def main() -> None:
    async with XianAsync("http://127.0.0.1:26657") as client:
        async for event in client.token().transfers().watch_live():
            print(event.tx_hash, event.data)


asyncio.run(main())

By default the SDK derives the websocket endpoint from the RPC URL, for example http://127.0.0.1:26657 -> ws://127.0.0.1:26657/websocket. If you need an override, set WatcherConfig(websocket_url="ws://rpc-host:26657/websocket").

Principles

  • The SDK keeps sync and async clients aligned so the same concepts work in scripts, services, and workers.
  • Transaction submission is explicit. Choose a broadcast mode deliberately instead of relying on hidden retry or blocking behavior.
  • Read models and projector loops belong in application code, but the SDK owns the repetitive plumbing for websocket event delivery, catch-up cursors, raw CometBFT decoding, and typed event conversion.
  • Reference apps and examples live in this repo because they demonstrate how to integrate Xian into Python systems, but they are not part of the published wheel.

Key Directories

  • src/xian_py/: clients, wallet helpers, transactions, models, and projector primitives
  • examples/: service, worker, and automation examples built on the SDK
  • tests/: SDK transport, decoding, and integration-shape coverage
  • docs/: repo-local notes such as compatibility and backlog items

What It Can Do

  • read current state from ABCI query paths and simulate readonly contract calls
  • retrieve the preferred contract source and the canonical runtime code separately
  • create, sign, and broadcast transactions with explicit async, checktx, and commit modes
  • wait for final receipts and work with typed transaction, event, block, and status models
  • query indexed blocks, transactions, events, state-history, and developer reward aggregates from BDS-backed nodes
  • watch indexed events with websocket live delivery plus resumable BDS cursors
  • watch raw live websocket events without BDS when low-latency delivery matters more than replayable cursors
  • use thin helper clients for common patterns such as contract, token, event, and state-key access
  • build SQLite-backed read models with the shared projector primitives, using CometBFT websocket wakeups while keeping BDS cursor reconciliation

Event watching uses the CometBFT websocket directly and still expects a BDS-enabled node for cursorable indexed catch-up and canonical event IDs. Use watch_live_events() or .watch_live() when you explicitly want websocket-only, non-resumable delivery.

Core API Layers

  • Xian and XianAsync: the primary sync and async clients
  • client.contract(...), client.token(...), client.events(...), client.state_key(...): thin helper clients for common application patterns
  • typed models and error classes: predictable result handling instead of raw dictionaries everywhere
  • EventProjector, EventSource, SQLiteProjectionState: reusable polling/order/checkpoint primitives for local projections
  • Wallet: Ed25519 signing helper for Xian transactions

Typical Use Cases

  • backend APIs that read state and submit transactions
  • background workers that react to indexed events
  • automation jobs that reconcile or administer contracts
  • local projections that mirror chain activity into an application-owned SQLite read model
  • operator or integration scripts that need a clean Python surface over node RPCs and indexed queries

Optional extras:

pip install "xian-tech-py[app]"
pip install "xian-tech-py[eth]"
pip install "xian-tech-py[hd]"

Use the app extra for the included FastAPI-based examples.

Example Paths

Validation

uv sync --group dev
uv run ruff check .
uv run ruff format --check .
uv run pytest

Related Docs

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

xian_tech_py-0.4.11.tar.gz (36.7 kB view details)

Uploaded Source

Built Distribution

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

xian_tech_py-0.4.11-py3-none-any.whl (38.5 kB view details)

Uploaded Python 3

File details

Details for the file xian_tech_py-0.4.11.tar.gz.

File metadata

  • Download URL: xian_tech_py-0.4.11.tar.gz
  • Upload date:
  • Size: 36.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for xian_tech_py-0.4.11.tar.gz
Algorithm Hash digest
SHA256 f9a18ba5b07c57c2e889c944733ab7281b7da476f39c967ae5b170c779f9dcd7
MD5 f2ec1749f8848e5201eb68bf0daef33d
BLAKE2b-256 2f5ea32805b7e13858b39e7fabd714055b7c4d12283e4f9ec1b0636c333c35b9

See more details on using hashes here.

Provenance

The following attestation bundles were made for xian_tech_py-0.4.11.tar.gz:

Publisher: release.yml on xian-technology/xian-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file xian_tech_py-0.4.11-py3-none-any.whl.

File metadata

  • Download URL: xian_tech_py-0.4.11-py3-none-any.whl
  • Upload date:
  • Size: 38.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for xian_tech_py-0.4.11-py3-none-any.whl
Algorithm Hash digest
SHA256 7cc1563c8d7e459c1052218c08465ef17f9c81cbdceb1b48ac042240f1b3f2d1
MD5 f508b88f271a2d735e03d733b2eda554
BLAKE2b-256 c52878020e3faf03a7a2da03dd7b2e643d269d16f280d727af034e1667d73c94

See more details on using hashes here.

Provenance

The following attestation bundles were made for xian_tech_py-0.4.11-py3-none-any.whl:

Publisher: release.yml on xian-technology/xian-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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