Skip to content

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.client della stdlib — funziona ma è verboso, senza ergonomia per i modelli Odoo (no client.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 OdooClient possiamo cambiare libreria in futuro toccando un solo file.
  • ⚠️ Odooly è meno conosciuto di odoorpc: nuovi contributor potrebbero cercare doc su odoorpc. Mitigato dalla documentazione interna e dai docstring di OdooClient.
  • ⚠️ Se Odooly smettesse di essere manutenuto, andrebbe valutata una migrazione: l'isolamento in client.py rende la sostituzione locale.