0002 — Scelta di Odooly come client RPC¶
- Status: accepted
- Date: 2026-04-26
Context¶
Per parlare con Odoo via RPC esistono diverse opzioni Python:
xmlrpc.clientdella stdlib — funziona ma è verboso, senza ergonomia per i modelli Odoo (noclient.env["res.partner"]).odoorpc— libreria storica, attiva, basata su XML-RPC.odooly— single-file, supporta XML-RPC e JSON-RPC, mantiene un'API ergonomica (client.env["model"]), attivamente manutenuta, supporta nativamente JSON-RPC v2 di Odoo 19 con Bearer token (API key).
Il progetto deve supportare Odoo 16, 17, 18 e 19. Odoo 19 ha introdotto
JSON-RPC v2 con autenticazione Bearer/API key, gestita nativamente da Odooly
ma non da odoorpc (che richiederebbe workaround).
Decision¶
Usiamo Odooly come unico client RPC del pacchetto.
OdooClient (src/odoo_analysis/client.py) è il solo punto del codice
che istanzia odooly.Client: tutto il resto va attraverso OdooClient
(direttamente o via ConnectionManager).
Consequences¶
- ✅ Singola dipendenza single-file, footprint minimo.
- ✅ Supporto out-of-the-box per Odoo 16–19, incluso JSON-RPC v2.
- ✅ Centralizzando l'uso in
OdooClientpossiamo cambiare libreria in futuro toccando un solo file. - ⚠️ Odooly è meno conosciuto di
odoorpc: nuovi contributor potrebbero cercare doc suodoorpc. Mitigato dalla documentazione interna e dai docstring diOdooClient. - ⚠️ Se Odooly smettesse di essere manutenuto, andrebbe valutata una
migrazione: l'isolamento in
client.pyrende la sostituzione locale.