Comparison with Other Tools¶
Alternatives¶
| Tool | PEP 517 compliant | Base mechanism | Multi-release | Multi-addon | Status |
|---|---|---|---|---|---|
| Polytropos | ✅ Yes | Read pyproject.toml → Generate __manifest__.py → Build wheel |
Yes 💖 | No | Active |
| whool | ✅ Yes | Read pyproject.toml and __manifest__.py → Build wheel |
No | No | Active |
| hatch-odoo | ✅ Yes | Read pyproject.toml and ./*/__manifest__.py → Build wheel |
No | Yes | Active |
| setuptools-odoo | ⛔ No | Read __manifest__.py → Generate setup.py → Build wheel |
No | Yes | Deprecated |
| oca.recipe.odoo | ⛔ No | Buildout recipe → Install Odoo and addons | No | Partial | Legacy |
In general, all other tools rely on version-specific code with a properly-formed
__manifest__.py file to do their job.
Polytropos, instead, allows for multi-version code and produces a version-specific
__manifest__.py file at build time, based on the instructions inferred from the
pyproject.toml file.
All PEP 517 compliant tools can be combined in the same virtualenv and are intercompatible. Upvote odoo/odoo#44001 if you want Odoo to eventually become also compliant.
How to Choose¶
- Ship the same addon across multiple Odoo releases? → Polytropos
- Package one addon for one Odoo release? → whool (or polytropos with a single release)
- Bundle multiple addons as a single wheel for one Odoo release? → hatch-odoo
- Integration environment (include Odoo and addons)? -> uv, combined with the others