Python SDK (polylingo)
PolyLingo REST API-এর জন্য অফিসিয়াল Python ক্লায়েন্ট। এটি httpx ব্যবহার করে এবং একই মেথড নাম সহ sync এবং async উভয় ক্লায়েন্ট প্রদান করে।
- PyPI:
polylingo - Source: UsePolyLingo/polylingo-python
কাঁচা HTTP বিবরণের জন্য দেখুন API reference।
ইনস্টলেশন
pip install polylingo
Python: >= 3.9
Sync ক্লায়েন্ট
import os
import polylingo
client = polylingo.PolyLingo(
api_key=os.environ["POLYLINGO_API_KEY"],
base_url="https://api.usepolylingo.com/v1", # ঐচ্ছিক; ডিফল্ট দেখানো হয়েছে
timeout=120.0, # ঐচ্ছিক; প্রতি অনুরোধ সেকেন্ড (ডিফল্ট 120)
)
result = client.translate(content="# Hello", targets=["es", "fr"], format="markdown")
print(result["translations"]["es"])
client.close()
কনটেক্সট ম্যানেজার:
with polylingo.PolyLingo(api_key="...") as client:
print(client.languages())
| আর্গুমেন্ট | প্রয়োজনীয় | বর্ণনা |
|---|---|---|
api_key | হ্যাঁ | API কী (Authorization: Bearer …). |
base_url | না | API প্রিফিক্স /v1 সহ। ডিফল্ট https://api.usepolylingo.com/v1. |
timeout | না | httpx টাইমআউট সেকেন্ডে। ডিফল্ট 120.0. |
Async ক্লায়েন্ট
import polylingo
async with polylingo.AsyncPolyLingo(api_key="...") as client:
r = await client.translate(content="Hi", targets=["de"])
async with ব্যবহার না করলে await client.aclose() ব্যবহার করুন।
মেথড নামগুলি sync ক্লায়েন্টের সাথে মেলে; সব নেটওয়ার্ক মেথড async def।
মেথডসমূহ (sync এবং 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", # ঐচ্ছিক
source="en", # ঐচ্ছিক
model="standard", # ঐচ্ছিক: "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 — 202 বডি ফেরত দেয় (job_id, status, …)।
job = client.jobs.create(content=long_md, targets=["de", "fr"], format="markdown")
# kwargs ও গ্রহণযোগ্য: client.jobs.create(**{"content": ..., "targets": [...]})
get(job_id) / await get(job_id)
GET /jobs/:id। যখন status == "completed", রেসপন্সে শীর্ষ স্তরে translations এবং usage থাকে।
translate(...) — সুবিধাজনক
completed বা failed না হওয়া পর্যন্ত অথবা সময় শেষ না হওয়া পর্যন্ত পোল করে।
done = client.jobs.translate(
content=long_md,
targets=["de", "fr", "es"],
format="markdown",
poll_interval=10.0, # পোলের মধ্যে সেকেন্ড; ডিফল্ট 5.0
timeout=600.0, # **মোট** সেকেন্ড বাজেট; ডিফল্ট 1200 (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,
)
API স্ট্যাটাস: pending, processing, completed, failed।
Exceptions
| Class | কখন |
|---|---|
polylingo.PolyLingoError | বেস — status, error, args[0] মেসেজ। |
polylingo.AuthError | HTTP 401। |
polylingo.RateLimitError | HTTP 429 — retry_after সেট থাকতে পারে (সেকেন্ডে)। |
polylingo.JobFailedError | ব্যর্থ কাজ, খারাপ সম্পন্ন পে-লোড, অথবা পোলিং টাইমআউট — 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)
Async jobs প্যাটার্ন (সারাংশ)
- ম্যানুয়াল:
jobs.create→ লুপjobs.getযতক্ষণ না টার্মিনাল স্টেট। - হেল্পার:
jobs.translateসাথেpoll_interval,timeout, এবং ঐচ্ছিকon_progress।
খুব বড় কনটেন্টের জন্য jobs ব্যবহার করুন যেখানে synchronous translate ক্লায়েন্ট বা সার্ভার টাইমআউট পেতে পারে।
টাইপস
প্যাকেজটি py.typed নিয়ে আসে। রেসপন্স অবজেক্টগুলি সাধারণ dict মান যা API এর সাথে সামঞ্জস্যপূর্ণ; আপনার কোডে TypedDict-স্টাইল অ্যানোটেশন ব্যবহার করুন যদি ইচ্ছা হয়।
চেঞ্জলগ
0.1.0
- প্রাথমিক রিলিজ: sync
PolyLingo, asyncAsyncPolyLingo, সম্পূর্ণ এন্ডপয়েন্ট কভারেজ সহjobs.translateপোলিং হেল্পার।