setuptools-odoo documentation

39
setuptools-odoo Documentation Release 3.0.4.dev1+ga471ea7 Stéphane Bidoul (ACSONE) Oct 18, 2021

Upload: others

Post on 31-Oct-2021

9 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: setuptools-odoo Documentation

setuptools-odoo DocumentationRelease 3.0.4.dev1+ga471ea7

Stéphane Bidoul (ACSONE)

Oct 18, 2021

Page 2: setuptools-odoo Documentation
Page 3: setuptools-odoo Documentation

Contents

1 Requirements 3

2 Packaging a single addon 5

3 Packaging multiple addons 9

4 Controlling setuptools-odoo behaviour 11

5 setuptools-odoo-make-default helper script 13

6 setuptools-odoo-get-requirements helper script 17

7 Versioning 19

8 Public API 21

9 Useful links 23

10 Credits 25

11 Changes 2711.1 3.0.3 (2021-10-18) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2711.2 3.0.2 (2021-10-09) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2711.3 3.0.1 (2021-10-06) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2711.4 2.7.1 (2021-03-15) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2711.5 2.7.0 (2021-03-13) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2811.6 2.6.3 (2021-01-29) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2811.7 2.6.2 (2021-01-13) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2811.8 2.6.1 (unreleased) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2811.9 2.6.0 (2020-10-21) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2811.10 2.5.10 (2020-09-29) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2811.11 2.5.9 (2020-05-25) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2811.12 2.5.8 (2020-05-25) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2911.13 2.5.7 (2020-05-07) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2911.14 2.5.6 (2020-04-24) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2911.15 2.5.5 (2020-03-06) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2911.16 2.5.4 (2020-02-16) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2911.17 2.5.3 (2020-01-16) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

i

Page 4: setuptools-odoo Documentation

11.18 2.5.2 (2020-01-16) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2911.19 2.5.1 (2019-12-13) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2911.20 2.5.0 (2019-10-04) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3011.21 2.4.1 (2018-11-05) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3011.22 2.4.0 (2018-10-04) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3011.23 2.3.0 (2018-05-13) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3011.24 2.2.1 (2018-05-08) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3011.25 2.2.0 (2018-04-30) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3011.26 2.1.0 (2018-04-22) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3011.27 2.0.4 (2018-04-18) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3111.28 2.0.3 (2018-04-18) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3111.29 2.0.2 (2017-10-07) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3111.30 2.0.1 (2017-10-02) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3111.31 2.0.0 (2017-09-19) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3111.32 1.0.1 (2017-04-08) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3111.33 1.0.0 (2017-04-07) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3111.34 1.0.0rc4 (2017-02-21) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3211.35 1.0.0rc3 (2017-01-14) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3211.36 1.0.0rc2 (2016-10-07) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3211.37 1.0.0rc1 (2016-10-03) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3211.38 1.0.0b7 (2016-09-22) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3211.39 1.0.0b6 (2016-08-23) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3211.40 1.0.0b5 (2016-05-03) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3311.41 1.0.0b4 (2016-04-06) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3311.42 1.0.0b3 (2016-02-10) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3311.43 1.0.0b2 (2016-01-26) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3311.44 1.0.0b1 (2015-12-29) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3311.45 0.9.0 (2015-12-13) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

12 Developer instructions 3512.1 How to run tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3512.2 How to build the documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3512.3 How to release . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

ii

Page 5: setuptools-odoo Documentation

setuptools-odoo Documentation, Release 3.0.4.dev1+ga471ea7

setuptools-odoo is a library to help packaging Odoo addons with setuptools. It mainly populates the usualsetup.py keywords from the Odoo manifest files.

It enables the packaging and distribution of Odoo addons using standard python infrastructure (ie setuptools, pip,wheel, and pypi).

Contents

• setuptools-odoo

– Requirements

– Packaging a single addon

– Packaging multiple addons

– Controlling setuptools-odoo behaviour

– setuptools-odoo-make-default helper script

– setuptools-odoo-get-requirements helper script

– Versioning

– Public API

– Useful links

– Credits

– Changes

* 3.0.3 (2021-10-18)

* 3.0.2 (2021-10-09)

* 3.0.1 (2021-10-06)

* 2.7.1 (2021-03-15)

* 2.7.0 (2021-03-13)

* 2.6.3 (2021-01-29)

* 2.6.2 (2021-01-13)

* 2.6.1 (unreleased)

* 2.6.0 (2020-10-21)

* 2.5.10 (2020-09-29)

* 2.5.9 (2020-05-25)

* 2.5.8 (2020-05-25)

* 2.5.7 (2020-05-07)

* 2.5.6 (2020-04-24)

Contents 1

Page 6: setuptools-odoo Documentation

setuptools-odoo Documentation, Release 3.0.4.dev1+ga471ea7

* 2.5.5 (2020-03-06)

* 2.5.4 (2020-02-16)

* 2.5.3 (2020-01-16)

* 2.5.2 (2020-01-16)

* 2.5.1 (2019-12-13)

* 2.5.0 (2019-10-04)

* 2.4.1 (2018-11-05)

* 2.4.0 (2018-10-04)

* 2.3.0 (2018-05-13)

* 2.2.1 (2018-05-08)

* 2.2.0 (2018-04-30)

* 2.1.0 (2018-04-22)

* 2.0.4 (2018-04-18)

* 2.0.3 (2018-04-18)

* 2.0.2 (2017-10-07)

* 2.0.1 (2017-10-02)

* 2.0.0 (2017-09-19)

* 1.0.1 (2017-04-08)

* 1.0.0 (2017-04-07)

* 1.0.0rc4 (2017-02-21)

* 1.0.0rc3 (2017-01-14)

* 1.0.0rc2 (2016-10-07)

* 1.0.0rc1 (2016-10-03)

* 1.0.0b7 (2016-09-22)

* 1.0.0b6 (2016-08-23)

* 1.0.0b5 (2016-05-03)

* 1.0.0b4 (2016-04-06)

* 1.0.0b3 (2016-02-10)

* 1.0.0b2 (2016-01-26)

* 1.0.0b1 (2015-12-29)

* 0.9.0 (2015-12-13)

– Developer instructions

* How to run tests

* How to build the documentation

* How to release

2 Contents

Page 7: setuptools-odoo Documentation

CHAPTER 1

Requirements

The following prerequisites apply:

• Odoo version 8, 9, 10, 11, 12, 13, 14 and 15 are supported (see notes in the documentation for implementationdifferences).

• To install addons packaged with this tool, any pip version that supports the wheel package format should work(ie pip >= 1.4).

• For any advanced use such as installing from source, installing from git, packaging wheels etc, you need a recentversion of pip (>= 9.0.1).

• Finally, if you are using Odoo 8, 9 or 10, you need to install odoo-autodiscover (pip installodoo-autodiscover) to provide automatic extension of the addons path (and workaround a bug with se-tuptools > 31 and Odoo 10). odoo-autodiscover is not necessary for Odoo >= 11.

3

Page 8: setuptools-odoo Documentation

setuptools-odoo Documentation, Release 3.0.4.dev1+ga471ea7

4 Chapter 1. Requirements

Page 9: setuptools-odoo Documentation

CHAPTER 2

Packaging a single addon

To be packaged with this library, the addon source code must have the following structure (assuming the addon isnamed <addon_name>):

# Odoo >= 11setup.pyodoo/odoo/addons/odoo/addons/<addon_name>/odoo/addons/<addon_name>/__manifest__.pyodoo/addons/<addon_name>/...

# Odoo 10setup.pyodoo/odoo/__init__.pyodoo/addons/odoo/addons/__init__.pyodoo/addons/<addon_name>/odoo/addons/<addon_name>/__manifest__.pyodoo/addons/<addon_name>/...

# Odoo 8, 9setup.pyodoo_addons/odoo_addons/__init__.pyodoo_addons/<addon_name>/odoo_addons/<addon_name>/__openerp__.pyodoo_addons/<addon_name>/...

where odoo/__init__.py, odoo/addons/__init__.py, and odoo_addons/__init__.py are stan-dard python namespace package declaration __init__.py (note __init__.py is absent for Odoo >= 11):

__import__('pkg_resources').declare_namespace(__name__)

and where setup.py has the following content:

5

Page 10: setuptools-odoo Documentation

setuptools-odoo Documentation, Release 3.0.4.dev1+ga471ea7

import setuptools

setuptools.setup(setup_requires=['setuptools-odoo'],odoo_addon=True,

)

The usual setup() keyword arguments are computed automatically from the Odoo manifest file (__manifest__.pyor __openerp__.py) and contain:

• name: the package name, odoo<series>-addon-<addon_name>

• version: the version key from the manifest

• description: the summary key from the manifest if it exists otherwise the name key from the manifest

• long_description: the content of the README.rst file if it exists, otherwise the description keyfrom the manifest

• url: the website key from the manifest

• license: the license key from the manifest

• packages: autodetected packages

• namespace_packages: ['odoo', 'odoo.addons'] (Odoo 10) or ['odoo_addons'] (Odoo 8,9), absent for Odoo 11

• zip_safe: False

• include_package_data: True

• install_requires: dependencies to Odoo, other addons (except official odoo community and enterpriseaddons, which are brought by the Odoo dependency) and python libraries.

• python_requires

Then, the addon can be deployed and packaged with usual setup.py or pip commands such as:

python setup.py installpython setup.py developpython setup.py bdist_wheelpip install odoo<8|9|10|11|12|13|14>-addon-<addon name>pip install -e .pip install -e git+https://github.com/OCA/<repo>/<addon>#egg=odoo→˓<8|9|10|11|12|13|14>-addon-<addon name>\&subdirectory=setup/<addon name>

Note: When using pip to install from source, the -e option is important because of pip issue #3500. The -e option hasthe huge advantage of letting pip freeze produce meaningful output.

When odoo-server-autodiscover is installed, The addons-path is automatically populated with all placesproviding odoo addons installed with this method.

It is of course highly recommanded to run in a virtualenv.

Note: Odoo 8, 9 namespace.

Although the addons are packaged in the odoo_addons namespace, the code can still import them usingimport odoo.addons..... odoo_addons must never appear in the code, it is just a packaging

6 Chapter 2. Packaging a single addon

Page 11: setuptools-odoo Documentation

setuptools-odoo Documentation, Release 3.0.4.dev1+ga471ea7

peculiarity for Odoo 8 and 9 only, and does not require any change to the addons source code.

7

Page 12: setuptools-odoo Documentation

setuptools-odoo Documentation, Release 3.0.4.dev1+ga471ea7

8 Chapter 2. Packaging a single addon

Page 13: setuptools-odoo Documentation

CHAPTER 3

Packaging multiple addons

Addons that are intended to be reused or depended upon by other addons MUST be packaged individually. Whenpreparing a project for a specific customer, it is common to prepare a collection of addons that are not intended to bedepended upon by addons outside of the project. setuptools-odoo provides tools to help you do that.

To be packaged with this library, your project must be structured according to the following structure:

# Odoo >= 11setup.pyodoo/odoo/addons/odoo/addons/<addon1_name>/odoo/addons/<addon1_name>/__manifest__.pyodoo/addons/<addon1_name>/...odoo/addons/<addon2_name>/odoo/addons/<addon2_name>/__manifest__.pyodoo/addons/<addon2_name>/...

# Odoo 10setup.pyodoo/odoo/__init__.pyodoo/addons/odoo/addons/__init__.pyodoo/addons/<addon1_name>/odoo/addons/<addon1_name>/__manifest__.pyodoo/addons/<addon1_name>/...odoo/addons/<addon2_name>/odoo/addons/<addon2_name>/__manifest__.pyodoo/addons/<addon2_name>/...

# Odoo 8, 9setup.pyodoo_addons/odoo_addons/__init__.py

(continues on next page)

9

Page 14: setuptools-odoo Documentation

setuptools-odoo Documentation, Release 3.0.4.dev1+ga471ea7

(continued from previous page)

odoo_addons/<addon1_name>/odoo_addons/<addon1_name>/__openerp__.pyodoo_addons/<addon1_name>/...odoo_addons/<addon2_name>/odoo_addons/<addon2_name>/__openerp__.pyodoo_addons/<addon2_name>/...

where setup.py has the following content:

import setuptools

setuptools.setup(name='<your project package name>',version='<your version>',# ...any other setup() keywordsetup_requires=['setuptools-odoo'],odoo_addons=True,

)

The following setup() keyword arguments are computed automatically from the Odoo manifest files(__manifest__.py or __openerp__.py) and contain:

• packages: autodetected packages

• namespace_packages: ['odoo', 'odoo.addons'] (Odoo 10) or ['odoo_addons'] (Odoo 8,9), absent for Python 3 (Odoo 11 and later)

• zip_safe: False

• include_package_data: True

• install_requires: dependencies on Odoo, any depending addon not found in the addons directory, andexternal python dependencies.

• python_requires

10 Chapter 3. Packaging multiple addons

Page 15: setuptools-odoo Documentation

CHAPTER 4

Controlling setuptools-odoo behaviour

It is possible to use a dictionary instead of True for the odoo_addon and odoo_addons keywords, in order tocontrol their behaviour.

The following keys are supported:

• depends_override, used to precisely control odoo addons dependencies. Its value must be a dictionarymapping addon names to a package requirement string.

• external_dependencies_override, used to precisely control python external dependencies. Its valuemust be a dictionary with one python key, with value a dictionary mapping python external dependencies topython package requirement strings.

• odoo_version_override, used to specify which Odoo series to use (8.0, 9.0, 10.0, 11.0, . . . ) in case anaddon version does not start with the Odoo series number. Use this only as a last resort, if you have no way tocorrect the addon version in its manifest.

• post_version_strategy_override, used to specify how the git commits are used to amend the versionfound in the manifest (see the Versioning section below).

For instance, if your module requires at least version 10.0.3.2.0 of the connector addon, as well as at least version 0.5.5of py-Asterisk, your setup.py would look like this:

import setuptools

setuptools.setup(setup_requires=['setuptools-odoo'],odoo_addon={

'depends_override': {'connector': 'odoo10-addon-connector>=10.0.3.2.0',

},'external_dependencies_override': {

'python': {'Asterisk': 'py-Asterisk>=0.5.5',

},},

(continues on next page)

11

Page 16: setuptools-odoo Documentation

setuptools-odoo Documentation, Release 3.0.4.dev1+ga471ea7

(continued from previous page)

},)

12 Chapter 4. Controlling setuptools-odoo behaviour

Page 17: setuptools-odoo Documentation

CHAPTER 5

setuptools-odoo-make-default helper script

Since reusable addons are generally not structured using the namespace package but instead collected in a directorywith each subdirectory containing an addon, this package provides the setuptools-odoo-make-default scriptwhich creates a default setup.py for each addon according to the following structure:

# Odoo >= 11setup/setup/addon1/setup/addon1/setup.pysetup/addon1/odoo/setup/addon1/odoo/addons/setup/addon1/odoo/addons/<addon1_name> -> ../../../../<addon1_name>setup/addon2/setup.pysetup/addon1/odoo/setup/addon2/odoo/addons/setup/addon2/odoo/addons/<addon2_name> -> ../../../../<addon2_name><addon1_name>/<addon1_name>/__manifest__.py<addon1_name>/...<addon2_name>/<addon2_name>/__manifest__.py<addon2_name>/...

# Odoo 10setup/setup/addon1/setup/addon1/setup.pysetup/addon1/odoo/setup/addon1/odoo/__init__.pysetup/addon1/odoo/addons/setup/addon1/odoo/addons/__init__.pysetup/addon1/odoo/addons/<addon1_name> -> ../../../../<addon1_name>setup/addon2/setup.pysetup/addon1/odoo/setup/addon1/odoo/__init__.py

(continues on next page)

13

Page 18: setuptools-odoo Documentation

setuptools-odoo Documentation, Release 3.0.4.dev1+ga471ea7

(continued from previous page)

setup/addon2/odoo/addons/setup/addon2/odoo/addons/__init__.pysetup/addon2/odoo/addons/<addon2_name> -> ../../../../<addon2_name><addon1_name>/<addon1_name>/__manifest__.py<addon1_name>/...<addon2_name>/<addon2_name>/__manifest__.py<addon2_name>/...

# Odoo 8, 9setup/setup/addon1/setup/addon1/setup.pysetup/addon1/odoo_addons/setup/addon1/odoo_addons/__init__.pysetup/addon1/odoo_addons/<addon1_name> -> ../../../<addon1_name>setup/addon2/setup.pysetup/addon2/odoo_addons/setup/addon2/odoo_addons/__init__.pysetup/addon2/odoo_addons/<addon2_name> -> ../../../<addon2_name><addon1_name>/<addon1_name>/__openerp__.py<addon1_name>/...<addon2_name>/<addon2_name>/__openerp__.py<addon2_name>/...

Available options:

usage: setuptools-odoo-make-default [-h] --addons-dir ADDONS_DIR [--force][--odoo-version-override ODOO_VERSION_OVERRIDE][--metapackage METAPACKAGE] [--clean][--commit]

Generate default setup.py for all addons in an Odoo addons directory

optional arguments:-h, --help show this help message and exit--addons-dir ADDONS_DIR, -d ADDONS_DIR--force, -f--odoo-version-override ODOO_VERSION_OVERRIDE

Force Odoo version for situations where some addonsversions do not start with the odoo version.

--metapackage METAPACKAGE, -m METAPACKAGECreate a metapackage using the given name. Thispackage depends on all installable addons inADDONS_DIR.

--clean, -c Clean the setup directory: remove setups ofuninstallable addons, remove files corresponding toother Odoo versions, remove metapackage setup if thereare no installable addons.

--commit Git commit changes, if any.

setuptools-odoo-make-default is also available as a pre-commit hook. To use it, you can add such an entryin your .pre-commit-config.yaml:

14 Chapter 5. setuptools-odoo-make-default helper script

Page 19: setuptools-odoo Documentation

setuptools-odoo Documentation, Release 3.0.4.dev1+ga471ea7

repos:- repo: https://github.com/acsone/setuptools-odoorev: 2.5.2hooks:

- id: setuptools-odoo-make-default

15

Page 20: setuptools-odoo Documentation

setuptools-odoo Documentation, Release 3.0.4.dev1+ga471ea7

16 Chapter 5. setuptools-odoo-make-default helper script

Page 21: setuptools-odoo Documentation

CHAPTER 6

setuptools-odoo-get-requirements helper script

Since it is a common practice in the Odoo world to have a file named requirements.txt at the repository root,this script helps generating it from the external dependencies declared in addons manifests.:

usage: setuptools-odoo-get-requirements [-h] [--addons-dir ADDONS_DIR] [--output→˓OUTPUT]

Print external python dependencies for all addons in an Odoo addons directory.If dependencies overrides are declared in setup/{addon}/setup.py, they arehonored in the output.

optional arguments:-h, --help show this help message and exit--addons-dir ADDONS_DIR, -d ADDONS_DIR

addons directory (default: .)--output OUTPUT, -o OUTPUT

output file (default: stdout)--header HEADER output file header--include-addons Include addons and odoo requirements in addition to

python external dependencies (default: false).

17

Page 22: setuptools-odoo Documentation

setuptools-odoo Documentation, Release 3.0.4.dev1+ga471ea7

18 Chapter 6. setuptools-odoo-get-requirements helper script

Page 23: setuptools-odoo Documentation

CHAPTER 7

Versioning

By default, setuptools-odoo does its best to detect if an addon has changed compared to the version indicated in it’smanifest. To this end it explores the git log of the addon subtree.

If the last change to the addon corresponds to the version number in the manifest, it is used as is for the python packageversion. Otherwise a counter is incremented for each commit and the resulting version number includes that counter.

The default strategy depends on the Odoo series. It has the following form, N being the number of git commits sincethe version change.

• Strategy .99.devN is the default for series 8 to 12 and yields [8|9|10|11|12].0.x.y.z.99.devN.

• Strategy +1.devN is the default for series 13 and 14 and yields [13|14].0.x.y.z+1.devN.

• Strategy .N is the default for series 15 and later, and adds a digit, typically yielding [series].0.x.y.z.N.

• Strategy none is not used by default and disables the post versioning mechanism, yielding the version found inthe manifest.

These schemes are compliant with the accepted python versioning scheme documented in PEP 440.

The default strategy can be overridden using the post_version_strategy_override keyword or theSETUPTOOLS_ODOO_POST_VERSION_STRATEGY_OVERRIDE environment variable. If set and not empty, theenvironment variable has priority over the setup.py keyword.

Note: For pip to install a developmental version, it must be invoked with the --pre option.

19

Page 24: setuptools-odoo Documentation

setuptools-odoo Documentation, Release 3.0.4.dev1+ga471ea7

20 Chapter 7. Versioning

Page 25: setuptools-odoo Documentation

CHAPTER 8

Public API

The setuptools_odoo package exposes a provisional public API.

• get_addon_metadata(addon_dir, ...) returns an email.message.Message compliant withPEP 566 – Metadata for Python Software Packages 2.1.

21

Page 26: setuptools-odoo Documentation

setuptools-odoo Documentation, Release 3.0.4.dev1+ga471ea7

22 Chapter 8. Public API

Page 27: setuptools-odoo Documentation

CHAPTER 9

Useful links

• pypi page: https://pypi.python.org/pypi/setuptools-odoo

• documentation: https://setuptools-odoo.readthedocs.io

• code repository: https://github.com/acsone/setuptools-odoo

• report issues at: https://github.com/acsone/setuptools-odoo/issues

• see also odoo-autodiscover: https://pypi.python.org/pypi/odoo-autodiscover

23

Page 28: setuptools-odoo Documentation

setuptools-odoo Documentation, Release 3.0.4.dev1+ga471ea7

24 Chapter 9. Useful links

Page 29: setuptools-odoo Documentation

CHAPTER 10

Credits

Author:

• Stéphane Bidoul (ACSONE)

Contributors

• Benjamin Willig

• Matteo Bilotta

Many thanks to Daniel Reis who cleared the path, and Laurent Mignon who convinced me it was possible to do itusing standard Python packaging tools and had the idea of the odoo_addons namespace package.

25

Page 30: setuptools-odoo Documentation

setuptools-odoo Documentation, Release 3.0.4.dev1+ga471ea7

26 Chapter 10. Credits

Page 31: setuptools-odoo Documentation

CHAPTER 11

Changes

11.1 3.0.3 (2021-10-18)

• Odoo 15 addons now require python >= 3.8 by default. (#65)

11.2 3.0.2 (2021-10-09)

• setuptools-odoo-make-default now uses the new naming scheme for the metapackage name. (#64)

11.3 3.0.1 (2021-10-06)

• Generate Metada-Version 2.2. Since metadata obtained from a sdist with PKG-INFO is directly read from thePKG-INFO, all metadata is static by definition.

• Add a precomputed_metadata_path argument to get_addon_metadata.

• Support Odoo 15, with new odoo-addon-{addon_name} package name structure. This leverages the newpip dependency resolver to correctly install the correct version, depending on the installed Odoo version. Thedefault git postversion strategy for Odoo 15 addons is now .N, which means it adds a 6th digit to the versionnumber with the number of commit since the last version bump in the addon manifest.

• Add support for the new Odoo series trove classifers.

• Update Odoo base addons list.

11.4 2.7.1 (2021-03-15)

• setuptools-odoo-get-requirements --include-addons does not output local addons, as it ismeant to list third party dependencies

27

Page 32: setuptools-odoo Documentation

setuptools-odoo Documentation, Release 3.0.4.dev1+ga471ea7

11.5 2.7.0 (2021-03-13)

• [ADD] add new .N git post version strategy that adds a 6th digit with the number of commit since the latestmanifest version change

• [ADD] implement the post_version_strategy_override keyword that was documented but not ef-fective

• [ADD] allow overriding the post version strategy using the SETUPTOOLS_ODOO_POST_VERSION_STRATEGY_OVERRIDEenvironment variable

• [ADD] add --include-addons option to setuptools-odoo-get-requirements, to output addonpackages and odoo in addition to python external dependencies

• [UPD] update base addons lists

11.6 2.6.3 (2021-01-29)

• [UPD] update base addons lists

11.7 2.6.2 (2021-01-13)

• Fixed build system by opting-in to PEP 517

11.8 2.6.1 (unreleased)

• [UPD] update base addons lists

11.9 2.6.0 (2020-10-21)

• [ADD] Support for post version strategy override

• [ADD] setuptools-odoo-get-requirements to extract the list of external python dependencies from addon mani-fests

11.10 2.5.10 (2020-09-29)

• [UPD] update base addons lists

• [ADD] Odoo 14 support

11.11 2.5.9 (2020-05-25)

• [FIX] further avoid depending on broken setuptools_scm 4.0.0

28 Chapter 11. Changes

Page 33: setuptools-odoo Documentation

setuptools-odoo Documentation, Release 3.0.4.dev1+ga471ea7

11.12 2.5.8 (2020-05-25)

• [FIX] avoid depending on broken setuptools_scm 4.0.0

• [UPD] update base addons lists

11.13 2.5.7 (2020-05-07)

• [UPD] update base addons lists

11.14 2.5.6 (2020-04-24)

• [UPD] update base addons lists

11.15 2.5.5 (2020-03-06)

• [UPD] update base addons lists

11.16 2.5.4 (2020-02-16)

• [UPD] update base addons lists

11.17 2.5.3 (2020-01-16)

• [IMP] update documentation for Odoo 12 and 13

11.18 2.5.2 (2020-01-16)

• [UPD] update base addons lists

• [ADD] pre-commit hook for setuptools-odoo-make-default

11.19 2.5.1 (2019-12-13)

• [FIX] Better detection of git repo root

• [UPD] update base addons lists

11.12. 2.5.8 (2020-05-25) 29

Page 34: setuptools-odoo Documentation

setuptools-odoo Documentation, Release 3.0.4.dev1+ga471ea7

11.20 2.5.0 (2019-10-04)

• [ADD] new git autoversioning strategy (increase last digit instead of appending .99), will be used for Odoo 13

• [ADD] preliminary Odoo 13 support

• [ADD] new provisional public API that returns Python Package Metada 2.1 for and Odoo addon

11.21 2.4.1 (2018-11-05)

• [FIX] issue with make-default-setup metapackage generator now honors .setuptools-odoo-make-default-ignore

11.22 2.4.0 (2018-10-04)

• [IMP] update base addons lists, including Odoo 12

11.23 2.3.0 (2018-05-13)

• [FIX] remove tests from sdist (they work only within a proper git clone)

• [IMP] support development_status manifest key to generate corresponding pypi classifers

• [IMP] use pypa/setuptools_scm instead of the unmaintained setuptools-git as git file finder

11.24 2.2.1 (2018-05-08)

• [FIX] issue with make-default-setup –commit in empty directory

11.25 2.2.0 (2018-04-30)

• [IMP] silence some useless git warnings when looking for manifst in git history

• [IMP] when searching for manifest, look for __manifest__.py before __openerp__.py, this should slightly im-prove performance for what is becoming the most common case in recent Odoo versions

• [IMP] update base addons list for Odoo 8, 9, 10

• [IMP] load base addons list from resource files, making it easier to maintain these lists (using the udpatedmk_base_addons script)

• [IMP] add OpenSSL and suds in external dependencies map

11.26 2.1.0 (2018-04-22)

• [FIX] give precedence to PKG-INFO over manifest to get version, so the git post version obtained when gener-ating an sdist is preserved (before it would fall back in the manifest version when trying to build from an sdistoutside of git)

30 Chapter 11. Changes

Page 35: setuptools-odoo Documentation

setuptools-odoo Documentation, Release 3.0.4.dev1+ga471ea7

• [IMP] update base addons list for Odoo 11.0

11.27 2.0.4 (2018-04-18)

• [FIX] setuptools-odoo-make-default: make metapackage a universal wheel for Odoo 11

11.28 2.0.3 (2018-04-18)

• [IMP] add –clean, –commit and –metapackage options to setuptools-odoo-make-default

11.29 2.0.2 (2017-10-07)

• [IMP] update base addons list for Odoo 11 (CE and EE)

11.30 2.0.1 (2017-10-02)

• [FIX] fix issue when odoo/addons has no __init__.py.

11.31 2.0.0 (2017-09-19)

• [IMP] update base addons list for Odoo 10.0

• [IMP] when setuptools extends a list-type keyword, prevent duplicate items

• [IMP] make tests pass with python 3

• [ADD] preliminary Odoo 11 support

• [IMP] BREAKING: remove LEGACY_MODE support

• [IMP] python_requires is now part of the generated keywords

• [CHG] In the classifiers, use Python instead of Python :: 2.7 since we now have python_requires that is moreprecise

11.32 1.0.1 (2017-04-08)

• [ADD] add license classifier for the licenses commonly used in OCA

11.33 1.0.0 (2017-04-07)

• [ADD] support the brand new Framework :: Odoo classifier

11.27. 2.0.4 (2018-04-18) 31

Page 36: setuptools-odoo Documentation

setuptools-odoo Documentation, Release 3.0.4.dev1+ga471ea7

11.34 1.0.0rc4 (2017-02-21)

• [FIX] avoid setuptools-git version 1.2 as it is broken for our use case

11.35 1.0.0rc3 (2017-01-14)

• [FIX] git based automatic postversioning was not working in situations where the manifest was renamed (egwhen renaming __openerp__.py to __manifest__.py)

• [IMP] support author email: since the Odoo manifest has no such concept this is currently just a special casewhen OCA is in the authors

11.36 1.0.0rc2 (2016-10-07)

• [IMP] 10.0 addons now depend on the specific Odoo version again (>=10.0, <10.1dev)

11.37 1.0.0rc1 (2016-10-03)

• [IMP] Odoo 10.0 support with addons in the odoo.addons namespace.

• [IMP] update base addons list for Odoo 9.0 and 10.0rc1

11.38 1.0.0b7 (2016-09-22)

• [IMP] add __manifest__.py support for Odoo 10, drop __odoo__.py support which has never been supported byOdoo.

• [IMP] BREAKING: package names are now constructed along the following scheme: odoo{series}-addon-{addon_name} where series is 8, 9 or 10.

11.39 1.0.0b6 (2016-08-23)

• [IMP] the odoo_addon and odoo_addons keyword now extend list keywords such as install_requires if they arepresent in setup.py (previously, it left them alone); this is useful to create a package that contains odoo addonsin addition to other python packages

• [IMP] allow None as value for depends_override to disable the addition of an addon present in __openerp__.py‘depends’ key to setup.py ‘install_requires’

• [IMP] check if Odoo version is supported also in presence of odoo_version_override

• [ADD] preliminary OpenErp 7.0 support

• [ADD] –odoo-version-override to setuptools-odoo-make-default to use when there is no practical way to nor-malize addons versions

• [FIX] when using odoo_version_override, make sure the package version starts with the Odoo version, otherwisedependencies from other packages do not work

• [UPD] refresh base addons list for odoo 9c with new modules added over the last months

32 Chapter 11. Changes

Page 37: setuptools-odoo Documentation

setuptools-odoo Documentation, Release 3.0.4.dev1+ga471ea7

11.40 1.0.0b5 (2016-05-03)

• [FIX] fix bug of previous release that prevented the packaging of a single auto_install addon

11.41 1.0.0b4 (2016-04-06)

• [UPD] pycrypto in external dependencies map

• [ADD] setuptools-odoo-make-default now ignores addons listed in .setuptools-odoo-make-default-ignore; thisis useful when some addons are manually included in another package (such as autoinstallable glue modules)

• [ADD] setuptools-odoo-make-default now generates README and .setuptools-odoo-make-default-ignore filesat the root of the setup directory

• [IMP] the odoo_addon setup keyword now accepts several addons in the odoo_addons namespace, providedexactly one is installable and not auto installable. This is meant to package an addon together with one or moreauto_installable glue modules.

11.42 1.0.0b3 (2016-02-10)

• [ADD] mechanism to specify which Odoo version to use in dependencies (8.0, 9.0) in case some addons to bepackaged have non-standard version numbers

• [ADD] support for addons without version number in their manifest (unfortunately there are some in the wild. . . )

11.43 1.0.0b2 (2016-01-26)

• [ADD] mechanism to override dependencies, to allow addon authors to require minimal versions of dependentodoo addons, and to control external python dependencies

11.44 1.0.0b1 (2015-12-29)

• [FIX] fix postversioning when running outside git directory

• [IMP] additional mappings for python external dependencies

• [ADD] make_pkg_name public api to convert an addon name to a python package name

• [ADD] make_pkg_requirement public api to obtain a valid package requirement for a given addon (same asmake_pkg_name but includes requirement for the correct Odoo series)

• [FIX] crash in case a previous commit had a bad __openerp__.py

11.45 0.9.0 (2015-12-13)

• first beta

11.40. 1.0.0b5 (2016-05-03) 33

Page 38: setuptools-odoo Documentation

setuptools-odoo Documentation, Release 3.0.4.dev1+ga471ea7

34 Chapter 11. Changes

Page 39: setuptools-odoo Documentation

CHAPTER 12

Developer instructions

12.1 How to run tests

• run tox (if not installed apt-get install tox)

12.2 How to build the documentation

Documentation is built automatically at http://setuptools-odoo.readthedocs.io/.

To build it locally:

• pip install -e .

• pip install sphinx

• cd docs

• make html

12.3 How to release

• update changelog in CHANGES.rst, by running towncrier --version <version>

• python setup.py check –restructuredtext

• commit everything

• make sure tests pass!

• git tag <version>, where <version> is PEP 440 compliant

• git push –tags

Uploading of tagged versions to pypi will be taken care of by travis.

35