SDK Python
Le paquet addrova est le client Python officiel. Il demande Python 3.10 ou plus et une seule dépendance, httpx. Les clients synchrone (Addrova) et asynchrone (AsyncAddrova) ont les mêmes méthodes.
Installation
Le paquet n'est pas encore publié sur PyPI ; installez-le depuis le dépôt. [À VÉRIFIER : publication sur PyPI]
pip install ./sdk/python
export ADDROVA_API_KEY=adr_live_…
Géocoder, inverse, autocomplétion, réparation
from addrova import Addrova
with Addrova() as client: # clé lue dans ADDROVA_API_KEY
r = client.geocode("4 place d'Armes, Belfort", country="FR")
best = r["results"][0]
print(best["label"], best["location"], best["confidence_level"])
print(r["attribution"]) # à afficher avec les résultats (licences)
client.reverse(47.6376, 6.8626)
client.autocomplete("4 place d'ar", focus=(47.64, 6.86), session="checkout-123")
fix = client.repair("4 pl darmes belfor", country="FR")
print(fix["status"], [(c["field"], c["reason"]) for c in fix.get("changes", [])])
print(client.usage())
print([c["country"] for c in client.coverage()["countries"]]) # pays couverts, sources, licences
Pour le client asynchrone, utilisez AsyncAddrova, async with et await client.geocode(...).
Fichiers par lot
with Addrova() as client:
job = client.submit_batch("clients.csv", address_column="adresse", country="FR")
job = client.wait_batch(job["id"])
open("clients-geocodes.csv", "wb").write(client.batch_result(job["id"]))
client.delete_batch(job["id"]) # purge immédiate (sinon automatique après la rétention)
Erreurs et nouvelles tentatives
- Le SDK réessaie automatiquement sur
429 rate_limited, les erreurs 5xx et les erreurs réseau, avec backoff exponentiel et gigue, en respectantRetry-After.max_retriesvaut 3 par défaut. - Exceptions typées :
AuthenticationError,InvalidRequestError(dontUnsupportedCountryErrorpour un pays non couvert),NotFoundError,ConflictError,RateLimitError,QuotaExceededError(sans nouvelle tentative),ServerErroretTransportError. Toutes dérivent d'AddrovaErroret portentstatus,codeetrequest_id, jamais l'adresse envoyée.
Confidentialité
geocode envoie l'adresse dans le corps d'un POST, jamais dans l'URL. Le SDK ne journalise aucune adresse, et retire aussi la chaîne de requête des URL journalisées par httpx. Ce que l'API journalise et conserve figure sur la page conformité.