Modern Python packaging standards rely on static metadata in pyproject.toml rather than dynamic metadata in setup.py, which is considered deprecated.
Porting notes:
In modern packaging, console scripts are installed via entry points. The bin/ directory containing the ly and ly-server scripts is removed; instead, entry points specify a module and function to run, and pip automatically creates a wrapper script when installing the project.
The pkginfo is trimmed down to contain only the version. This is because pyproject.toml is not Python code, and the ways in which it can read metadata dynamically are limited. The conf.py file for Sphinx now declares the metadata as well; this might be considered duplication, but things like the name 'python-ly' and the author 'Wilbert Berendsen' are unlikely to change.
There are now a few more URLs in the [project.urls] table.
This does not use setuptools_scm to display the version, but that could be done in the future (see #148). However, getting the version for conf.py needs having the package installed, so this will impose certain constraints for developers.
This change was tested by executing "python -m build" before and after, unpacking the sdists, and checking that the differences were intended.
I have several dependent changes, so now that @fedelibre has reviewed this, I will merge it, as there seemed to be agreement for pyproject.toml in frescobaldi/frescobaldi#1518.
Modern Python packaging standards rely on static metadata in pyproject.toml rather than dynamic metadata in setup.py, which is considered deprecated.
Porting notes:
In modern packaging, console scripts are installed via entry points. The bin/ directory containing the ly and ly-server scripts is removed; instead, entry points specify a module and function to run, and pip automatically creates a wrapper script when installing the project.
The pkginfo is trimmed down to contain only the version. This is because pyproject.toml is not Python code, and the ways in which it can read metadata dynamically are limited. The conf.py file for Sphinx now declares the metadata as well; this might be considered duplication, but things like the name 'python-ly' and the author 'Wilbert Berendsen' are unlikely to change.
There are now a few more URLs in the [project.urls] table.
This does not use setuptools_scm to display the version, but that could be done in the future (see #148). However, getting the version for conf.py needs having the package installed, so this will impose certain constraints for developers.
This change was tested by executing "python -m build" before and after, unpacking the sdists, and checking that the differences were intended.