Trytoncommunity-setuptools — specialized on Tryton modules

I’m pleased to announce

trytoncommunity-setuptools

A wrapper for setuptools shortening the boilerplate in Tryton modules.

Tryton modules normally contain and require a lot of boilerplate in setup.py. Not only this is a lot of duplicate code, also it is a burden to maintain this between different versions of Tryton.

This package allows moving most all the meta-data and options being somewhat “static” between Tryton modules and Tryton Versions into setup.cfg and using a quite terse setup.py only.

trytoncommunity-setuptools also supports the 'module prefix mapping` quite some developers and integrators use.

Example setup.py:

from trytoncommunity_setuptools import setup, get_require_version

requires = ['lxml']
tests_require = [
    get_require_version('proteus'),
    'pycountry',
]

setup('country_order', prefix='trytoncommunity',
      requires=requires, tests_require=tests_require)

Corresponding example setup.cfg:

[metadata]
; name will be filled by trytoncommunity-setuptools
description  = Precedence rating for countries in Tryton
long_description = file: README.rst
long_description_content_type = text/x-rst
url           = https://tryton.community
author        = Hartmut Goebel
author_email  = h.goebel@crazy-compilers.com
license       = GPL-3.0-or-later
license_files = LICENSE-GPL-3.0.txt
keywords      = tryton, country
classifiers =
  Development Status :: 5 - Production/Stable
  License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
  Natural Language :: English
  Natural Language :: German
;; These classifiers will be added by trytoncommunity-setuptools,
;  Environment :: Plugins
;  Framework :: Tryton
;  Intended Audience :: Developers
;  Programming Language :: Python :: … filled according to Tryton version
;  Programming Language :: Python :: Implementation :: CPython
;  Topic :: Office/Business
;  Operating System :: OS Independent

[options]
;python_requires = …          # filled by trytoncommunity-setuptools
;include_package_data = True  # enforced by trytoncommunity-setuptools
;zip_safe = False             # enforced by trytoncommunity-setuptools

When using a PEP 517 compliant build tool e.g. build, you need to also provide a pyproject.toml file:

[build-system]
requires = ["trytoncommunity-setuptools"]
build-backend = "setuptools.build_meta:__legacy__"