Usando el SDK de Python
Esta guía muestra cómo lograr el mismo resultado que el inicio rápido de HTTP utilizando el SDK de Python de Asset Core con operaciones tipadas. Es el camino recomendado para los equipos que desean una fuerte seguridad de tipos mientras se mantienen alineados con el contrato público de HTTP.
Requisitos previos
Asegúrese de que los demonios estén en funcionamiento y de que tenga tokens válidos para el acceso de lectura y escritura. El SDK no omite ninguna verificación de autorización; simplemente envuelve los mismos puntos finales HTTP.
- Python 3.11+
- Los daemons de Asset Core se ejecutan localmente con tokens de portador disponibles (ver Primer Compromiso y Lectura)
pipouvpara la instalación de paquetes
Paso 1 - Instalar el SDK
Desde la raíz del repositorio de Asset Core:
cd sdk-python
pip install -e .
O con uv:
uv venv --seed .venv-sdk
source .venv-sdk/bin/activate
cd sdk-python
uv pip install -e .
Paso 2 - Crear el cliente
import os
from assetcore_sdk import AssetCoreClient
write_client = AssetCoreClient(
base_url="http://127.0.0.1:8080",
api_key=os.environ["ASSETCORE_WRITE_TOKEN"],
)
read_client = AssetCoreClient(
base_url="http://127.0.0.1:8081",
api_key=os.environ["ASSETCORE_READ_TOKEN"],
)
El SDK es un cliente HTTP puro, por lo que se deben usar instancias separadas para los tokens de escritura y lectura. Esto refleja los despliegues en producción donde los tokens de escritura y lectura tienen roles diferentes.
Paso 3 - Operaciones de construcción
Usa los constructores de operaciones tipadas:
from assetcore_sdk.operations import CreateContainer, AddFungible
operations = [
CreateContainer(
container_id=1001,
kind={"type": "balance"},
owner=None,
policies=None,
),
AddFungible(
class_id=100,
key=1,
quantity=500,
location={"container_id": 1001, "kind": "balance"},
),
]
Cada constructor produce una operación tipada que el cliente convierte en el sobre JSON. Esto facilita la detección de campos inválidos antes de que lleguen al daemon.
Paso 4 - Enviar el commit
result = await write_client.commit_operations(
operations,
idempotency_key="sdk-first-commit-2026-01-15",
namespace_id=5001,
)
print(f"Committed at world seq {result.world_seq_start}")
O use la versión sincrónica:
result = write_client.commit_operations_sync(
operations,
idempotency_key="sdk-first-commit-2026-01-15",
namespace_id=5001,
)
Paso 5 - Leer el estado
container = await read_client.get_container_balances(1001, namespace_id=5001)
for balance in container.balances:
print(f"Class {balance.class_id}: {balance.quantity}")
La respuesta incluye campos tipados y metadatos de frescura. Utilice esos campos de frescura para confirmar que su ruta de lectura está actualizada con el registro de confirmaciones.
Solución de problemas
”ModuleNotFoundError: assetcore_sdk”
El SDK no está instalado en su entorno actual. Asegúrese de haber activado el entorno virtual correcto y de haber ejecutado pip install -e . desde el directorio sdk-python.
Errores de conexión
Los daemons no están en ejecución o están en puertos diferentes. El SDK genera assetcore_sdk.errors.HttpError con detalles de transporte.
Errores de validación
Los argumentos de operación no válidos generan assetcore_sdk.errors.ValidationError con el campo específico que falló. Consulte la referencia de operación para los campos requeridos.
Próximos pasos
- Python SDK - Referencia y ejemplos del SDK tipado
- Referencia de Acción - Lista completa de operaciones
- Recetas - Patrones comunes de múltiples operaciones