Generate Metainfo

This tool also support generating some metainfo to a file like


Just

[tool.setuptools-generate]
write-to = "src/translate_shell/_metainfo.py"

You can customize template by

[tool.setuptools-generate]
write-to = "src/translate_shell/_metainfo.py"

[tool.setuptools-generate.metainfo-template]
text = "XXXXX"

or

[tool.setuptools-generate]
write-to = "src/translate_shell/_metainfo.py"

[tool.setuptools-generate.metainfo-template]
file = "XXXXX"

The template language is jinja2:

"""This file is generated by setuptools-generate.
The information comes from pyproject.toml.
It provide some metainfo for docs/conf.py to build documents and
help2man to build man pages.
"""

# For docs/conf.py
project = "{{ data['project']['name'] }}"
author = """{% for author in data['project']['authors'] -%}
{{ author['name'] }} <{{ author['email'] }}> {% endfor -%}
"""
copyright = "{{ year }}"

# For help2man
DESCRIPTION = "{{ data['project']['description'] }}"
EPILOG = "Report bugs to {{ data['project']['urls']['Bug Report'] }}"
# format __version__ by yourself
VERSION = """{{ data['project']['name'] }} {__version__}
Copyright (C) {{ year }}
Written by {% for author in data['project']['authors'] -%}
{{ author['name'] }} <{{ author['email'] }}> {% endfor %}"""

sphinx

For sphinx’s docs/conf.py, just

from translate_shell._metainfo import author, copyright, project

You don’t need write these metainfo twice: in pyproject.toml and docs/conf.py.

help2man

For help2man, just in your __main__.py:

from argparse import ArgumentParser
from translate_shell._metainfo import author, copyright, project


def get_parser():
    parser = ArgumentParser(description=DESCRIPTION, epilog=EPILOG)
    parser.add_argument("--version", action="version", version=VERSION)