Skip to main content

A build backend for Odoo modules supporting multiple versions

Project description

Polytropos

Polytropos logo

Polytropos is a Python build backend for Odoo modules that enables writing code once and using it across multiple Odoo releases.

Features

  • Multi-release support: Write your module once, target multiple Odoo releases
  • Conditional manifests: Configure different manifest values per Odoo release, to let you include or exclude data files per release
  • Editable installs: Develop in editable is supported
  • PEP 517 compliant: Works with any PEP 517 compatible frontend

Quick Example

Replace your module's __manifest__.py with this pyproject.toml file:

[build-system]
requires = ["polytropos[build]"]
build-backend = "polytropos.build"

[project]
name = "odoo-addon-my-module"
version = "1.0.0"
dependencies = [
    # Specify supported Odoo versions here
    "odoo>=17"
]

# All versions have this data
[[tool.polytropos.manifest]]
depends = ["base"]
data = ["data/views.xml"]

# This section is only for Odoo 18+
[[tool.polytropos.manifest]]
releases = ">=18"
data = ["security/ir.model.access.csv"]

Then, inside the module folder:

# Don't forget the module must be a Python package
touch __init__.py

# Build wheels for different odoo releases
uv build --sdist
uv build --wheel --config-setting odoo_release=17.0
uv build --wheel --config-setting odoo_release=18.0
uv build --wheel --config-setting odoo_release=19.0

# List artifacts
ls -1 dist/
my_module-1.0.0.tar.gz
odoo_addon_my_module-17.0.1.0.0-py3-none-any.whl
odoo_addon_my_module-18.0.1.0.0-py3-none-any.whl
odoo_addon_my_module-19.0.1.0.0-py3-none-any.whl

Single branch, single code, multiple releases! 🤯

Installation

Python will auto-install the build backend when you build a module.

But yes, you can install a small CLI with:

pip install polytropos[cli]

For development, the recommended tool you need is uv. Then:

uvx polytropos[cli] --help-all

Why Polytropos?

Odoo modules traditionally require separate codebases or branches for each release. Polytropos solves this by generating release-specific code at build time, allowing you to maintain a single codebase.

So, it will help you or not depending on your product vision:

What is your product? What does that mean? Is Polytropos for you?
Odoo + its release + all addons in that release Customers that want new features must upgrade to newer Odoo releases. ⛔ No
Addons that should work always the same way Customers need new features and cannot wait for the upgrade to the next Odoo release; but when they upgrade, they expect the same features they have now ✅ Yes

Examples

Check out the examples folder for real-world modules with views, models, and tests that exercise the conditional logic.

Credits

Moduon logo

Polytropos is developed and maintained by Moduon. Need a professional Odoo partner? Contact us.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

polytropos-6.6.0.tar.gz (584.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

polytropos-6.6.0-py3-none-any.whl (27.9 kB view details)

Uploaded Python 3

File details

Details for the file polytropos-6.6.0.tar.gz.

File metadata

  • Download URL: polytropos-6.6.0.tar.gz
  • Upload date:
  • Size: 584.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for polytropos-6.6.0.tar.gz
Algorithm Hash digest
SHA256 10aa46cdc431fc79f54dc8a6cb9b77e36b367a0d1d9cb9c78d59be8b64afa9bd
MD5 93b52a35d4fbc04713e60a0355b9f377
BLAKE2b-256 080c88bc5d6b40cae9c4dbb69d2c3d2fda9afcd81de0a47733909116fd644165

See more details on using hashes here.

File details

Details for the file polytropos-6.6.0-py3-none-any.whl.

File metadata

  • Download URL: polytropos-6.6.0-py3-none-any.whl
  • Upload date:
  • Size: 27.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for polytropos-6.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8caecc79f55cb81e8c7ad19dcc231aa306893679db0697db47c019b23fc122b5
MD5 c461cf937d4f5fee05bb6b91e69b3db3
BLAKE2b-256 6edb1ab8d4a80caf922c6f91d3d8ffc8b1f3a4a4f4603c538723f055c2e6f8aa

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page