메인 콘텐츠로 건너뛰기
Python SDK는 **Python 3.9+**가 필요합니다.

설치

pip install avala

빠른 시작

from avala import Client

client = Client(api_key="your-api-key")

# 모든 데이터셋 목록
datasets = client.datasets.list()
for dataset in datasets:
    print(dataset.name, dataset.uid)

계정 생성

signup 함수는 새 Avala 계정을 생성하고 API 키를 반환합니다. 인증이 필요 없습니다.
from avala import signup

result = signup(
    email="dev@acme.com",
    password="SecurePass123!",
    first_name="Jane",       # 선택사항
    last_name="Doe",         # 선택사항
)

print(f"User: {result.user.email}")
print(f"API Key: {result.api_key}")

인증

SDK는 X-Avala-Api-Key 헤더를 통해 모든 요청에 전송되는 Avala API 키로 인증합니다. 방법 1: 키 직접 전달
from avala import Client

client = Client(api_key="your-api-key")
방법 2: 환경 변수 사용
export AVALA_API_KEY="your-api-key"
from avala import Client

# 환경에서 AVALA_API_KEY를 자동으로 읽음
client = Client()

비동기 지원

SDK는 httpx 위에 구축된 완전한 비동기 클라이언트를 제공합니다.
import asyncio
from avala import AsyncClient

async def main():
    async with AsyncClient() as client:
        datasets = await client.datasets.list()
        for dataset in datasets:
            print(dataset.name)

asyncio.run(main())

데이터셋 작업

# 데이터셋 목록
datasets = client.datasets.list()
for dataset in datasets:
    print(f"{dataset.name} ({dataset.uid})")

# 데이터셋 가져오기
dataset = client.datasets.get("550e8400-e29b-41d4-a716-446655440000")
print(dataset.name)

프로젝트 작업

projects = client.projects.list()
for project in projects:
    print(f"{project.name} ({project.uid})")
    print(f"  Status: {project.status}")

내보내기 작업

# 내보내기 생성
export = client.exports.create(project="770a9600-a40d-63f6-c938-668877660000")
print(f"Export started: {export.uid}")

# 완료까지 폴링
import time
while export.status != "completed":
    time.sleep(2)
    export = client.exports.get(export.uid)
print(f"Download: {export.download_url}")

오류 처리

SDK는 다양한 실패 모드를 정밀하게 처리할 수 있도록 타입이 지정된 예외를 발생시킵니다.
from avala import Client
from avala.errors import (
    AvalaError,
    NotFoundError,
    RateLimitError,
    ValidationError,
)

client = Client()

try:
    dataset = client.datasets.get("nonexistent")
except NotFoundError as e:
    print(f"Dataset not found: {e.message}")
except RateLimitError as e:
    print(f"Rate limited. Retry after {e.retry_after} seconds.")
except AvalaError as e:
    print(f"API error ({e.status_code}): {e.message}")
예외설명
AvalaError모든 Avala API 오류의 기본 예외.
AuthenticationError유효하지 않거나 누락된 API 키 (HTTP 401).
NotFoundError요청된 리소스가 존재하지 않음 (HTTP 404).
RateLimitErrorAPI 속도 제한 초과 (HTTP 429). retry_after 속성 포함.
ValidationError요청 페이로드 검증 실패 (HTTP 400/422).
ServerError서버 내부 오류 (HTTP 5xx).

페이지네이션

# 현재 페이지의 항목을 반복
for dataset in client.datasets.list():
    print(dataset.name)

# 수동 페이지네이션
page = client.datasets.list(limit=10)
for dataset in page.items:
    print(dataset.name)

if page.has_more:
    next_page = client.datasets.list(limit=10, cursor=page.next_cursor)

구성

from avala import Client

client = Client(
    api_key="your-api-key",
    base_url="https://api.avala.ai/api/v1",  # 기본값
    timeout=60,        # 요청 타임아웃(초) (기본값: 30)
    max_retries=3,     # 일시적 오류 시 재시도 횟수 (기본값: 2)
)