Version discovery for Python packages
Project description
DiscoverVersion
This package automatically discovers version information for a package. It tries the following options to get the version of the package (in order):
- Check the
DISCOVER_VERSIONenvironment variable - Inspect a
PKG-INFOfile - Ask
git, if the current directory is a git-repository - Ask
importlib.metadata
It is intended as a lightweight replacement for
setuptools_scm.
Usage with meson-python
For projects using the meson-python build backend, add the following to your
pyproject.toml:
[build-system]
requires = ["meson>=1.0.0", "meson-python>=0.13.0", "ninja", "DiscoverVersion>=0.4.0"]
build-backend = "mesonpy"
[project]
dynamic = ["version"]
dependencies = ["DiscoverVersion"]
[tool.meson-python.metadata]
version.provider = "DiscoverVersion.meson_python"
Then add the following to your toplevel __init__.py for runtime version access:
from DiscoverVersion import get_version
__version__ = get_version('my_package_name', __file__)
Usage with flit
For projects using the flit build backend, add the
following lines to your pyproject.toml:
[build-system]
requires = ["flit_core>=3.2", "DiscoverVersion"]
build-backend = "flit_core.buildapi"
[project]
dynamic = ['version']
dependencies = ['DiscoverVersion']
Then add the following to your toplevel __init__.py:
from DiscoverVersion import get_version
__version__ = get_version('my_package_name', __file__)
Note that it is important to hard code the name of your package in the call
to get_version. The __file__ argument is required for git-based version
discovery to locate the repository.
Environment Variable Override
You can override version discovery by setting the DISCOVER_VERSION environment
variable. This is useful in CI/CD pipelines where git may not be available or
when building in isolated environments:
DISCOVER_VERSION=1.2.3 python -m build
Command Line Interface
DiscoverVersion provides a CLI for discovering and outputting version information:
# Print the discovered version
python -m DiscoverVersion
# Or use the entry point
discover-version
# Write version to a Python file
python -m DiscoverVersion --write-to version.py
# Write version to a plain text file (useful for Meson builds)
python -m DiscoverVersion --write-to version.txt --plain
# Specify a fallback version if discovery fails
python -m DiscoverVersion --fallback 0.0.0
# Disable specific discovery methods
python -m DiscoverVersion --no-git --no-env
CI/CD Example (GitHub Actions)
Here's an example of using DiscoverVersion in a GitHub Actions workflow with
cibuildwheel:
- name: Get version from DiscoverVersion
id: get_version
run: |
pip install DiscoverVersion
echo "version=$(python -m DiscoverVersion)" >> $GITHUB_OUTPUT
- name: Build wheels
uses: pypa/cibuildwheel@v2
env:
CIBW_ENVIRONMENT: DISCOVER_VERSION=${{ steps.get_version.outputs.version }}
Tests
Before being able to run tests, you need to execute
pip install -e .[test]
to editably install the code. Then run tests with:
pytest
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file discoverversion-0.4.0.tar.gz.
File metadata
- Download URL: discoverversion-0.4.0.tar.gz
- Upload date:
- Size: 6.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.25
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d6b6bcc202fc9d6d64334e7ae98de8e4693f1f62cf9df510f008e8351ab7a658
|
|
| MD5 |
bb1ca992caf4858e203ffceb47683ab4
|
|
| BLAKE2b-256 |
5be167e5d75fd0810bb64427dc282c24d34e19f92cbd616841a91a1a6cc1fe84
|
File details
Details for the file discoverversion-0.4.0-py3-none-any.whl.
File metadata
- Download URL: discoverversion-0.4.0-py3-none-any.whl
- Upload date:
- Size: 11.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.25
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6d45830a3340aa94bbe115cae28f7a02a4f65802423c33e8c385bc44168f0555
|
|
| MD5 |
7ddd528e39cabcf84717c4b0b752e657
|
|
| BLAKE2b-256 |
3c35fb5287385b518d7908226403da28af30bae02463822288834bb24977e7e8
|