setuptools-git-versioning

Use git repo data for building a version number according PEP-440


Keywords
setuptools, git, versioning, pep-440, automation
License
MIT
Install
pip install setuptools-git-versioning==2.0.0

Documentation

setuptools-git-versioning

Project Status: Active – The project has reached a stable, usable state and is being actively developed. PyPI PyPI License PyPI Python Version ReadTheDocs Build Coverage pre-commit.ci

Use git repo data (latest tag, current commit hash, etc) for building a version number according 440.

Features:

  • Can be installed & configured through both setup.py and 518's pyproject.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 > file redirect instead)

Documentation

See https://setuptools-git-versioning.readthedocs.io/en/stable/

Contribution Guide

See ./CONTRIBUTING.rst

Install

pyproject.toml

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):

setup.py

Just add setuptools-git-versioning to setup_requires argument of setuptools.setup function call, and then add new argument setuptools_git_versioning with config options:

And check the package version generated (see command help):