Use git repo data (latest tag, current commit hash, etc) for building a version number according to PEP 440.
Features:
- Can be installed & configured through both
setup.pyand PEP 518'spyproject.toml - Does not require to change source code of the project
- Tag-, file-, and callback-based versioning schemas are supported
- Templates for tag, dev and dirty versions are separated
- Templates support a lot of substitutions including git and environment information
- Well-documented
See comparison
between setuptools-git-versioning and other tools.
Limitations:
- Currently the only supported VCS is Git
- Only Git v2 is supported
- Only Setuptools build backend is supported (no Poetry & others)
- Currently does not support automatic exporting of package version to a file for runtime use
(but you can use
setuptools-git-versioning > fileredirect instead)
See https://setuptools-git-versioning.readthedocs.io/en/stable/
See ./CONTRIBUTING.rst
Just add setuptools-git-versioning to build-sytem section of your pyproject.toml,
add a section tool.setuptools-git-versioning with config options, and mark the project
version as dynamic.
[build-system]
requires = [ "setuptools>=41", "wheel", "setuptools-git-versioning>=2.0,<3", ]
build-backend = "setuptools.build_meta"
[tool.setuptools-git-versioning]
enabled = true
[project]
dynamic = ["version"]And check the package version generated (see command help):
$ python -m setuptools_git_versioning
0.0.1
# or
$ setuptools-git-versioning
0.0.1Just add setuptools-git-versioning to setup_requires argument of setuptools.setup function call,
and then add new argument setuptools_git_versioning with config options:
import setuptools
setuptools.setup(
...,
setuptools_git_versioning={
"enabled": True,
},
setup_requires=["setuptools-git-versioning>=2.0,<3"],
)And check the package version generated (see command help):
$ python setup.py --version
0.0.1
# or
$ python -m setuptools_git_versioning
0.0.1
# or
$ setuptools-git-versioning
0.0.1