Skip to main content

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

Project description

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 to PEP 440.

Features:

  • Can be installed & configured through both setup.py and PEP 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/

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>=3.0,<4", ]
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.1

When add a git tag:

$ git add .
$ git commit -m "Test tagged"
$ git tag 1.2.3

And now version is based on git tag:

$ setuptools-git-versioning
1.2.3

$ echo 1 > uncommitted.change
$ git add .
$ setuptools-git-versioning
1.2.3.post0+git.d2bc6516.dirty

$ git commit -m "Test committed"
$ setuptools-git-versioning
1.2.3.post1+git.d452190b

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:

import setuptools

setuptools.setup(
    ...,
    setuptools_git_versioning={
        "enabled": True,
    },
    setup_requires=["setuptools-git-versioning>=3.0,<4"],
)

Commands are the same as above, plus python -m setup.py returns the same version.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

setuptools_git_versioning-3.0.1.tar.gz (13.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

setuptools_git_versioning-3.0.1-py3-none-any.whl (15.1 kB view details)

Uploaded Python 3

File details

Details for the file setuptools_git_versioning-3.0.1.tar.gz.

File metadata

File hashes

Hashes for setuptools_git_versioning-3.0.1.tar.gz
Algorithm Hash digest
SHA256 c8a599bacf163b5d215552b5701faf5480ffc4d65426a5711a010b802e1590eb
MD5 28a4fdda66e3f0c5fbf55395bbe2b113
BLAKE2b-256 cffb956b5d9bd33213e7859acfd71c51615f8fd8a46c3efb8a3e18335fc5df0f

See more details on using hashes here.

Provenance

The following attestation bundles were made for setuptools_git_versioning-3.0.1.tar.gz:

Publisher: release.yml on dolfinus/setuptools-git-versioning

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file setuptools_git_versioning-3.0.1-py3-none-any.whl.

File metadata

File hashes

Hashes for setuptools_git_versioning-3.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 737c4d17e848edd46e28764a19dc424d8537fcb2257022e5f4f5c0c8e9b64c80
MD5 0b3b39a508a437c607e8a80ee6a48278
BLAKE2b-256 54f952877c329cfc671bf1bda1e06abc7447fafaf0d4d5d4e2837f225d29668b

See more details on using hashes here.

Provenance

The following attestation bundles were made for setuptools_git_versioning-3.0.1-py3-none-any.whl:

Publisher: release.yml on dolfinus/setuptools-git-versioning

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page