how to set bug tracker url in setup.py script

The entry is called bugtrack_url, but it's not being picked up from setup.py.

From context and code I understand it was intended to be used through-the-web on PyPI only, as per-project metadata, and not the usual per-release information.

The field is now considered a legacy field (hardcoded to None) and you instead add such information through the Project-URL list, which you can set in setuptools via the project_urls entry:

    project_urls={
        'Documentation': 'https://packaging.python.org/tutorials/distributing-packages/',
        'Funding': 'https://donate.pypi.org',
        'Say Thanks!': 'http://saythanks.io/to/example',
        'Source': 'https://github.com/pypa/sampleproject/',
        'Tracker': 'https://github.com/pypa/sampleproject/issues',
    },

This option was finally added to setuptools in November 2017, and landed in version 38.3.0.


Bug tracker URL on PyPi project

In setup.py use project_urls in the setup :

setup(
...
    project_urls={
        'Documentation': 'https://readthedocs.io/',
        'Funding': 'https://donate.pypi.org',
        'Say Thanks!': 'http://saythanks.io/to/example',
        'Source': 'https://github.com/pypa/sampleproject/',
        'Tracker': 'https://github.com/pypa/sampleproject/issues',
    },
...
)

The dict order is kept but listed in reversed on PyPi:

enter image description here

About PyPi bugtracker_url legacy code

pypa/warehouse Issue #233

bugtrack_url: IIRC it was something added by the PyPI maintainers to help projects, but in parallel PEP 345 introduced Project-URL which was intended to cover source code repository, bug tracker, mailing list, etc. If PEP 426 or one of its companion keeps Project-URL (and maybe improves it with defined labels for common sites, e.g. "repository"), then this special case becomes redundant.

And

At the moment, it looks like this is hardcoded to None in their API. I guess they left the field for backwards compatibility when they migrated...