Utilitzant el SDK de Python

Aquesta guia mostra com aconseguir el mateix resultat que l’HTTP quickstart utilitzant l’SDK de Python d’Asset Core amb operacions tipades.

Requisits previs

  • Python 3.11+
  • Daemons d’Asset Core s’executen localment (vegeu Primer compromís i lectura)
  • pip o uv per a la instal·lació de paquets

Pas 1 - Instal·lar el SDK

Des de l’arrel del repositori d’Asset Core:

cd sdk-python
pip install -e .

O amb uv:

uv venv --seed .venv-sdk
source .venv-sdk/bin/activate
cd sdk-python
uv pip install -e .

Pas 2 - Crear el client

from assetcore_sdk import AssetCoreClient

client = AssetCoreClient(
    write_url="http://127.0.0.1:8080",
    read_url="http://127.0.0.1:8081"
)

El client gestiona la connexió de grups i la lògica de reintents per a vostè.

Pas 3 - Operacions de construcció

Utilitzeu els constructors d’operacions tipades:

from assetcore_sdk.operations import (
    create_container,
    add_fungible
)

operations = [
    create_container(
        container_id=1001,
        kind="Standard"
    ),
    add_fungible(
        container_id=1001,
        class_id=100,
        key=1,
        quantity=500
    )
]

Cada funció retorna un diccionari que coincideix amb el format d’operació JSON.

Pas 4 - Enviar el commit

result = await client.commit(
    operations=operations,
    idempotency_key="sdk-first-commit"
)

print(f"Committed at sequence {result.global_seq}")

O utilitzeu la versió sincrònica:

result = client.commit_sync(
    operations=operations,
    idempotency_key="sdk-first-commit"
)

Pas 5 - Llegir l’estat

container = await client.get_container_balances(1001)

for balance in container.balances:
    print(f"Class {balance.class_id}: {balance.quantity}")

La resposta inclou camps escrits i metadades de frescor.

Resolució de problemes

”ModuleNotFoundError: assetcore_sdk”

El SDK no està instal·lat en el vostre entorn actual. Assegureu-vos d’haver activat el correcte entorn virtual i d’haver executat pip install -e . des del directori sdk-python.

Errors de connexió

Els daemons no s’estan executant o estan en ports diferents. El SDK genera assetcore_sdk.errors.ConnectionError amb detalls sobre quin daemon ha fallat.

Errors de validació

Els arguments d’operació no vàlids generen assetcore_sdk.errors.ValidationError amb el camp específic que ha fallat. Comproveu la referència de l’operació per als camps requerits.

Properes passes

  1. Receptes - Patrons comuns de múltiples operacions