# Comparison with Other Tools

## Alternatives

| Tool                                                             | Base mechanism                                                   | Multi-release | Multi-addon | Status     |
| ---------------------------------------------------------------- | ---------------------------------------------------------------- | ------------- | ----------- | ---------- |
| **Polytropos**                                                   | Read `pyproject.toml` → Generate `__manifest__.py` → Build wheel | Yes 💖        | No          | Active     |
| **[whool](https://github.com/sbidoul/whool)**                    | Read `pyproject.toml` and `__manifest__.py` → Build wheel        | No            | No          | Active     |
| **[hatch-odoo](https://github.com/acsone/hatch-odoo)**           | Read `pyproject.toml` and `./*/__manifest__.py` → Build wheel    | No            | Yes         | Active     |
| **[setuptools-odoo](https://github.com/acsone/setuptools-odoo)** | Read `__manifest__.py` → Generate `setup.py` → Build wheel       | No            | Yes         | Deprecated |
| **[oca.recipe.odoo](https://oca.github.io/oca.recipe.odoo/)**    | 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.

## How to Choose

-   Ship the same addon across multiple Odoo releases? → **Polytropos**
-   Package one addon for one Odoo release? → **whool**
-   Bundle multiple addons as a single wheel for one Odoo release? → **hatch-odoo**
-   Integration environment (include Odoo and addons)? -> **uv**, combined with the
    others
