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.
- PyPI:
polylingo - Chanzo: UsePolyLingo/polylingo-python
Kwa maelezo ya HTTP ghafi, angalia marejeleo ya API.
Ufungaji
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="# Hello", targets=["es", "fr"], format="markdown")
print(result["translations"]["es"])
client.close()
Msimamizi wa muktadha:
with polylingo.PolyLingo(api_key="...") as client:
print(client.languages())
| Hoja | Inahitajika | Maelezo |
|---|---|---|
api_key | Ndiyo | Funguo ya API (Authorization: Bearer …). |
base_url | Hapana | Kiambatanisho cha API kinachojumuisha /v1. Chaguo-msingi https://api.usepolylingo.com/v1. |
timeout | Hapana | Muda wa kusubiri wa 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="Hi", targets=["de"])
Tumia await client.aclose() ikiwa hutumi async with.
Majina ya njia yanalingana 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="# Hello",
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": "Hello"},
{"id": "b", "content": "## Title", "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 — hurudisha 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, # muda wa jumla kwa sekunde; chaguo-msingi 1200 (dakika 20)
on_progress=lambda pos: print(f"Queue: {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
| Darasa | Wakati |
|---|---|
polylingo.PolyLingoError | Msingi — status, error, ujumbe katika args[0]. |
polylingo.AuthError | HTTP 401. |
polylingo.RateLimitError | HTTP 429 — retry_after inaweza kuwekwa (sekunde). |
polylingo.JobFailedError | Kazi imeshindikana, payload mbaya iliyokamilika, au muda wa polling umekwisha — 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)
- Mikono:
jobs.create→ mzunguko wajobs.gethadi hali ya mwisho. - Msaidizi:
jobs.translatenapoll_interval,timeout, na hiarion_progress.
Tumia jobs kwa maudhui makubwa sana ambapo translate ya sinkroni 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.0
- Toleo la awali: sync
PolyLingo, asyncAsyncPolyLingo, kufunika kamili kwa endpoints ikijumuisha msaidizi wa pollingjobs.translate.