Python SDK (polylingo)

Mteja rasmi wa Python kwa PolyLingo REST API. Inatumia httpx na hutoa wateja wa sync na async wenye majina sawa ya njia.

Kwa maelezo ya HTTP ghafi, angalia marejeleo ya API.


Usanidi

pip install polylingo

Python: >= 3.9


Mteja wa Sync

import os
import polylingo

client = polylingo.PolyLingo(
    api_key=os.environ["POLYLINGO_API_KEY"],
    base_url="https://api.usepolylingo.com/v1",  # hiari; chaguo-msingi kinaonyeshwa
    timeout=120.0,  # hiari; sekunde kwa kila ombi (chaguo-msingi 120)
)

result = client.translate(content="# Hujambo", targets=["es", "fr"], format="markdown")
print(result["translations"]["es"])

client.close()

Msimamizi wa muktadha:

with polylingo.PolyLingo(api_key="...") as client:
    print(client.languages())
HojaInahitajikaMaelezo
api_keyNdiyoFunguo ya API (Authorization: Bearer …).
base_urlHapanaKiambatanisho cha API kinachojumuisha /v1. Chaguo-msingi https://api.usepolylingo.com/v1.
timeoutHapanamuda wa kusubiri httpx kwa sekunde. Chaguo-msingi 120.0.

Mteja wa Async

import polylingo

async with polylingo.AsyncPolyLingo(api_key="...") as client:
    r = await client.translate(content="Habari", targets=["de"])

Tumia await client.aclose() kama hutumi async with.

Majina ya njia ni sawa na mteja wa sync; njia zote za mtandao ni async def.


Njia (sync na async)

health() / await health()

GET /health

h = client.health()
# async: h = await client.health()

languages() / await languages()

GET /languages

data = client.languages()
langs = data["languages"]

translate(...)

POST /translate

r = client.translate(
    content="# Hujambo",
    targets=["es", "fr"],
    format="markdown",  # hiari
    source="en",        # hiari
    model="standard",   # hiari: "standard" | "advanced"
)
r["translations"]["es"]
r["usage"]["total_tokens"]

batch(...)

POST /translate/batch

b = client.batch(
    items=[
        {"id": "a", "content": "Hujambo"},
        {"id": "b", "content": "## Kichwa", "format": "markdown"},
    ],
    targets=["de"],
)
b["results"][0]["translations"]["de"]

usage() / await usage()

GET /usage

u = client.usage()

Jobs (client.jobs)

create / await create

POST /jobs. Inarudisha mwili wa 202 (job_id, status, …).

job = client.jobs.create(content=long_md, targets=["de", "fr"], format="markdown")
# kwargs pia zinakubaliwa: client.jobs.create(**{"content": ..., "targets": [...]})

get(job_id) / await get(job_id)

GET /jobs/:id. Wakati status == "completed", majibu yanajumuisha translations na usage kwenye ngazi ya juu.

translate(...) (urahisi)

Huchunguza hadi completed au failed, au hadi muda umalizike.

done = client.jobs.translate(
    content=long_md,
    targets=["de", "fr", "es"],
    format="markdown",
    poll_interval=10.0,   # sekunde kati ya uchunguzi; chaguo-msingi 5.0
    timeout=600.0,        # bajeti ya jumla ya sekunde; chaguo-msingi 1200 (dakika 20)
    on_progress=lambda pos: print(f"Foleni: {pos}"),
)
done["translations"]["de"]

Async:

done = await client.jobs.translate(
    content=long_md,
    targets=["de"],
    poll_interval=2.0,
    timeout=300.0,
)

Hali za API: pending, processing, completed, failed.


Makosa

DarasaWakati
polylingo.PolyLingoErrorMsingi. status, error, ujumbe katika args[0].
polylingo.AuthErrorHTTP 401.
polylingo.RateLimitErrorHTTP 429. retry_after inaweza kuwekwa (sekunde).
polylingo.JobFailedErrorKazi imeshindikana, payload mbaya iliyokamilika, au muda wa polling umeisha. Inajumuisha job_id.
import polylingo

try:
    client.translate(content="x", targets=["es"])
except polylingo.AuthError as e:
    print(e.status, e.error)
except polylingo.RateLimitError as e:
    print(e.retry_after)
except polylingo.JobFailedError as e:
    print(e.job_id)
except polylingo.PolyLingoError as e:
    print(e.status, e.error)

Mfano wa kazi za async (muhtasari)

  1. Manual: jobs.create → mzunguko wa jobs.get hadi hali ya mwisho.
  2. Msaidizi: jobs.translate na poll_interval, timeout, na hiari on_progress.

Tumia jobs kwa maudhui makubwa sana ambapo translate ya synchronous inaweza kufikia muda wa kusubiri wa mteja au seva.


Aina

Kifurushi kina py.typed. Vitu vya majibu ni thamani za kawaida za dict zinazolingana na API; tumia maelezo ya aina ya TypedDict katika msimbo wako ikiwa unataka.


Mabadiliko

0.1.2

  • Matengenezo: URL ya msingi ya API ni https://api.usepolylingo.com/v1 kwa chaguo-msingi.

0.1.0

  • Toleo la awali: sync PolyLingo, async AsyncPolyLingo, kufunika kamili kwa endpoints ikijumuisha msaidizi wa polling jobs.translate.
Python SDK | nyaraka za PolyLingo | PolyLingo