Python SDK

يوفر SDK Python الخاص بـ Asset Core عميل HTTP مُحدد للتفاعل مع خدمات الكتابة والقراءة، بالإضافة إلى مُنشئي العمليات الذين يتوافقون مباشرة مع JSON المعاملات.

نظرة عامة

يتم توزيع SDK كحزمة assetcore-sdk ويوفر:

  • AssetCoreClient: عميل عالي المستوى مع طرق غير متزامنة ومتزامنة
  • بناة العمليات: دوال مكتوبة لجميع العمليات الـ 16
  • أنواع الأخطاء: استثناءات منظمة لمعالجة الأخطاء
  • العميل المُولد: طبقة HTTP المعتمدة على OpenAPI

SDK هو عميل خالص؛ يقوم باستدعاء واجهة برمجة التطبيقات العامة HTTP ولا يمكنه تعديل حالة الخادم مباشرة.

الهيكل

إرشادات إضافية:

النبرة: رسمية
السجل: تقني

السياق:

  • المجال: بنية تحتية للبلوكشين
  • الجمهور: مهندسو الأمن وقادة البنية التحتية
  • الغرض: وثائق تقنية
  • اللغة: ar
  • الاتجاه: RTL

القيود:

  • استخدام لغة محايدة للجنس
  • الحفاظ على أسماء العلامات التجارية
  • الحفاظ على الدقة التقنية
  • ضمان أن تظل علامات الترقيم والترقيم مناسبة للاتجاه RTL
  • الحفاظ على أسماء العلامات التجارية والمصطلحات في القاموس دون ترجمة

الحفاظ على دون ترجمة:

  • code_blocks
  • inline_code
  • الروابط
  • glossary_terms
  • الملاحظات الرياضية

إرشادات القاموس:

الحفاظ على هذه المصطلحات بالضبط (لا تترجم): Asset Core، Asset‑Core، CSP، API، Docker، ECS، daemon، L1، L2، L3، OpenGraph، GitHub، Astro، TypeScript، JavaScript، ℤ، ℤ²، ℤ³، ℝ²، ℝ³، 0D، 1D، 2D، 3D

assetcore_sdk/
  __init__.py          # Package exports
  client.py            # AssetCoreClient facade
  operations.py        # Operation builder functions
  errors.py            # Exception types
  models/              # Typed data classes
  utils/               # HTTP and serialization helpers
  _generated/          # OpenAPI codegen output

الحقول

AssetCoreClient

الفئة الرئيسية للعميل للتفاعل مع Asset Core.

from assetcore_sdk import AssetCoreClient

client = AssetCoreClient(
    write_url="http://localhost:8080",
    read_url="http://localhost:8081",
    timeout=30.0
)
المعاملالنوعالافتراضيالوصف
write_urlstrhttp://localhost:8080عنوان URL لكتابة الـ daemon
read_urlstrhttp://localhost:8081عنوان URL لقراءة الـ daemon
timeoutfloat30.0مهلة الطلب بالثواني

طرق الالتزام

# Async
result = await client.commit(
    operations=[...],
    idempotency_key="unique-key"
)

# Sync
result = client.commit_sync(
    operations=[...],
    idempotency_key="unique-key"
)
المعاملالنوعمطلوبالوصف
operationsقائمةنعمقائمة بقواميس العمليات
idempotency_keyنصلامفتاح إزالة التكرار
metadataقاموسلابيانات تعريف المستخدم

ترجع CommitResponse مع global_seq، batch_seq، و minted_instances.

طرق القراءة

# Get container balances
balances = await client.get_container_balances(1001)

# Get container (sync)
container = client.get_container_sync(1001)

تُعيد طرق القراءة كائنات استجابة مُعينة مع بيانات تعريف النضارة.

بناة العمليات

استيراد البناة الفرديين أو الوحدة بالكامل:

from assetcore_sdk.operations import (
    create_container,
    add_fungible,
    remove_fungible,
    transfer_fungible,
    mint_instance,
    place_in_slot,
    register_class
)

ترجع كل دالة قاموسًا مناسبًا لقائمة operations:

op = create_container(
    container_id=1001,
    kind="Standard"
)
# Returns: {"op": "CreateContainer", "args": {...}}

أنواع الأخطاء

from assetcore_sdk.errors import (
    AssetCoreError,      # Base exception
    ValidationError,     # 422 errors
    NotFoundError,       # 404 errors
    ConflictError,       # 409 errors
    ConnectionError,     # Network failures
    ServiceUnavailable   # 503 errors
)

تتضمن الأخطاء جسم الاستجابة مع رمز الخطأ والتفاصيل.

أمثلة

إرشادات إضافية:

النبرة: رسمية السجل: تقني

السياق:

  • المجال: بنية تحتية للبلوك تشين
  • الجمهور: مهندسو الأمان وقادة البنية التحتية
  • الغرض: وثائق تقنية
  • اللغة: ar
  • الاتجاه: من اليمين إلى اليسار

القيود:

  • استخدام لغة محايدة للجنس
  • الحفاظ على أسماء العلامات التجارية
  • الحفاظ على الدقة التقنية
  • ضمان أن تظل علامات الترقيم والترقيم مناسبة من حيث الاتجاه
  • الحفاظ على أسماء العلامات التجارية والمصطلحات غير مترجمة

الحفاظ على دون ترجمة:

  • code_blocks
  • inline_code
  • links
  • glossary_terms
  • mathematical_notation

إرشادات المصطلحات:

الحفاظ على هذه المصطلحات بالضبط (لا تترجم): Asset Core, Asset‑Core, CSP, API, Docker, ECS, daemon, L1, L2, L3, OpenGraph, GitHub, Astro, TypeScript, JavaScript, ℤ, ℤ², ℤ³, ℝ², ℝ³, 0D, 1D, 2D, 3D

الالتزام الأساسي

from assetcore_sdk import AssetCoreClient
from assetcore_sdk.operations import create_container, add_fungible

client = AssetCoreClient()

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

result = await client.commit(
    operations=operations,
    idempotency_key="init-container-1001"
)

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

التعامل مع الأخطاء

from assetcore_sdk.errors import ValidationError, ConflictError

try:
    result = await client.commit(operations)
except ValidationError as e:
    print(f"Validation failed: {e.error_code}")
    print(f"Details: {e.details}")
except ConflictError as e:
    print(f"Conflict: {e.message}")

حالة القراءة

# Get balances
balances = await client.get_container_balances(1001)
for balance in balances.balances:
    print(f"Class {balance.class_id}: {balance.quantity}")

# Check freshness
print(f"Data as of sequence {balances.freshness.checkpoint_seq}")

استخدام المزامنة

لبرامج النصوص أو البيئات التي لا تحتوي على async:

إرشادات إضافية:

client = AssetCoreClient()

# All async methods have _sync variants
result = client.commit_sync(operations)
balances = client.get_container_balances_sync(1001)

بناء المعاملات المعقدة

from assetcore_sdk.operations import (
    register_class,
    register_class_shape,
    mint_instance,
    place_in_slot
)

operations = [
    register_class(
        class_id=200,
        name="Sample Tube",
        fungible=False
    ),
    register_class_shape(
        class_id=200,
        shape_id=1,
        width=1,
        height=3
    ),
    mint_instance(class_id=200, key=1),
    place_in_slot(
        container_id=1001,
        instance_id=9001,  # Known from allocation
        slot_index=0
    )
]

result = await client.commit(operations)
print(f"Minted instances: {result.minted_instances}")

المراجع ذات الصلة

العمليات حسب المجال

وصفات