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.12.tar.gz (41.8 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.12-py3-none-any.whl (44.0 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for xian_tech_py-0.4.12.tar.gz
Algorithm Hash digest
SHA256 2cb91d9c560664e5dc44f97a6d1ab0b4e700ab5c97992143836ede9a729e5c4c
MD5 bca57da228ce5d607cbe365dae8e7cc4
BLAKE2b-256 21ffc3897956d3c72cdd2697fc91db49363d22fe48f590cdeb68483459ca04ce

See more details on using hashes here.

Provenance

The following attestation bundles were made for xian_tech_py-0.4.12.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.12-py3-none-any.whl.

File metadata

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

File hashes

Hashes for xian_tech_py-0.4.12-py3-none-any.whl
Algorithm Hash digest
SHA256 8e5a93dec6a0e885a8ea1a72727374aa7d32a3301cb63a2327313a724fb09544
MD5 fcaed7aa516d5ed3c22855cba5dfe67e
BLAKE2b-256 095bedd82324d4f3b64d7ff80d4bf45b8fb7212548f3e9a832d4f335452c7794

See more details on using hashes here.

Provenance

The following attestation bundles were made for xian_tech_py-0.4.12-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