whool - build backend for Odoo addons
Project description
whool
A standards-compliant Python build backend to package individual Odoo addons.
[!NOTE] If you are looking at packaging a customer project or a collection of addons, you may want to consider the hatch-odoo project.
Quick start
Create a file named pyproject.toml next to the addon's __manifest__.py with the
following content:
[build-system]
requires = ["whool"]
build-backend = "whool.buildapi"
💡 you can use the
pipx run whool initcommand to do that.
When that is done you can work with the addon as any regular python project. Notably
pipx run build --wheel --outdir /tmp/dist/orpip wheel --no-deps --wheel-dir /tmp/dist/ .will create a wheel.- Assuming
odoohas been installed with pip in the current Python environment (for instance withpip install --editable ./odoo),pip install --editable .will install the addon and its dependencies (which it will pull from PyPI) and make it available in the Odoo addons path without the need to modify Odoo's--addons-pathoption.
Files included in the distribution packages
whool will package all the files that are under git control and ignore everything
else.
📝 TODO: explain what is included in a sdist vs wheel, and how building from a sdist works.
Version number of the generated packages
The version of the generated distribution packages is influenced by the git
commit history in the following way.
📝 TODO: elaborate (see setuptools-odoo docs in the meantime)
Configuration
The following options can be set in pyproject.toml:
📝 TODO: explain this (see setuptools-odoo docs in the meantime)
[tool.whool]
depends_override = {}
external_dependencies_override = {}
post_version_strategy_override = "..."
odoo_series_override = "..."
If set, the following environment variables override the corresponding pyproject.toml
options:
WHOOL_POST_VERSION_STRATEGY_OVERRIDE
Standard compliance
whool is compliant with PEP 517 and PEP
660, so it is compatible with all Python build
frontends, and supports editable installs.
[!NOTE] Editable install require support for symbolic links, which are available on most platforms but may not be enabled by default on Windows.
It supports the optional prepare_metadata_for_build_wheel and
prepare_metadata_for_build_editable hooks, for faster metadata preparation.
Comparison to setuptools-odoo
This project is the successor of setuptools-odoo, as a standard-compliant Python build backend.
The main expected benefit of whool over setuptools-odoo is that the setup
directory and setup.py files are replaced by a pyproject.toml file at the root of
each addon. It is less intrusive, and does not need symbolic links for regular
operation.
setuptools-odoo relied on little documented hooks and deprecated extension
mechanisms of setuptools, which was progressively causing compatibility issues.
setuptools-odoo provided a mechanism to package a multi-addon project. This
is now covered by the hatch-odoo project.
The equivalent of the setuptools-odoo-make-default command is now whool init, which
can initialize a pyproject.toml in the current directory if it is an addon, or in all
immediate subrectories that are addons.
An equivalent of setuptools-odoo-get-requirements can now easily be built using
standard-based tools such as pyproject-dependencies.
An example can be found in OCA/maintainer-tools.
Development
To release and publish to PyPI:
- Update the changelog by running
towncrier build --version X.Y.Z. - Commit and push the changes.
- Go to GitHub and create a release with a tag
vX.Y.Z.
The release will be uploaded to PyPI automatically.
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file whool-1.3.tar.gz.
File metadata
- Download URL: whool-1.3.tar.gz
- Upload date:
- Size: 11.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1744d56fc0de65fff6e4fca4cd5e711ff0a10cf41fc702dbd5437a9299b402fb
|
|
| MD5 |
c31df04f8f849c23742c3a6de3780149
|
|
| BLAKE2b-256 |
e2192e98e2f0e0b83823aea009029b90feaf1b899b583badb866be052e31f362
|
Provenance
The following attestation bundles were made for whool-1.3.tar.gz:
Publisher:
release.yml on sbidoul/whool
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
whool-1.3.tar.gz -
Subject digest:
1744d56fc0de65fff6e4fca4cd5e711ff0a10cf41fc702dbd5437a9299b402fb - Sigstore transparency entry: 314714761
- Sigstore integration time:
-
Permalink:
sbidoul/whool@9fa6bfae14205f7d812552584a320444a2397de2 -
Branch / Tag:
refs/tags/v1.3 - Owner: https://github.com/sbidoul
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@9fa6bfae14205f7d812552584a320444a2397de2 -
Trigger Event:
release
-
Statement type:
File details
Details for the file whool-1.3-py3-none-any.whl.
File metadata
- Download URL: whool-1.3-py3-none-any.whl
- Upload date:
- Size: 9.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
459f1aded3dc2906daf20a3a63027e760d184bc008b94577df3732f16e269060
|
|
| MD5 |
0d88a7b10206354b3ec531b8dab15128
|
|
| BLAKE2b-256 |
8901c180b3c2c0b52f4dd75eaf75155d89fb42fe1472b37b1db80b765abf3e75
|
Provenance
The following attestation bundles were made for whool-1.3-py3-none-any.whl:
Publisher:
release.yml on sbidoul/whool
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
whool-1.3-py3-none-any.whl -
Subject digest:
459f1aded3dc2906daf20a3a63027e760d184bc008b94577df3732f16e269060 - Sigstore transparency entry: 314714771
- Sigstore integration time:
-
Permalink:
sbidoul/whool@9fa6bfae14205f7d812552584a320444a2397de2 -
Branch / Tag:
refs/tags/v1.3 - Owner: https://github.com/sbidoul
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@9fa6bfae14205f7d812552584a320444a2397de2 -
Trigger Event:
release
-
Statement type: