NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #3626 most downloaded on PyPI
Versioning It with your Version In Git
Last release 1 years ago
27 Jun 2025
Release timing varies
gaps range from 2 weeks to 10 months
Nearly every release is documented
notes for 24 of 24 stable releases
Nothing withdrawn
no release was ever pulled
5 years old
25 releases · first in 2021
One column per quarter.
Added {normalized_version} to the fields available to the write and onbuild steps
{normalized_version} to the fields available to the write and onbuild stepsSupport reading configuration from a versioningit.toml file instead of pyproject.toml (contributed by @b-sturgeon)
versioningit.toml file instead of pyproject.toml (contributed by @b-sturgeon)NoConfigFileError and NoConfigSectionError subclasses of NotVersioningitErrorBugfix: Don't crash when log.showSignature is set in .gitconfig
log.showSignature is set in .gitconfigBugfix : When using versioningit with Hatch, don't run the onbuild step for editable builds
versioningit with Hatch, don't run the onbuild step for editable buildsCorrectly mark a certain test as requiring Mercurial
When git describe fails to retrieve a tag, the resulting log/error message now includes all options passed to the command (based on contribution by @j
git describe fails to retrieve a tag, the resulting log/error message now includes all options passed to the command (based on contribution by @jenshnielsen)hg log fails to retrieve a tag, the resulting log/error message now includes the tag pattern passed to latesttag(), if anyMigrated from setuptools to hatch
onbuild step with Hatchbuild_dir argument passed to Versioningit.do_onbuild() and onbuild method callables has been changed to an OnbuildFileProvider ABCAlways read .hg_archival.txt files using UTF-8 encoding
.hg_archival.txt files using UTF-8 encodingRaise a ConfigError if the selected tool.versioningit.format field is not a string
ConfigError if the selected tool.versioningit.format field is not a stringThe custom setuptools command classes can now be imported directly from the versioningit.cmdclass module as an alternative to calling get_cmdclasses()
versioningit.cmdclass module as an alternative to calling get_cmdclasses()- Drop support for Python 3.6 - Support Python 3.11 - Use tomllib on Python 3.11
tomllib on Python 3.11Don't run the onbuild step under setuptools' upcoming PEP 660 editable mode (contributed by @abravalheri)
onbuild step under setuptools' upcoming PEP 660 editable mode (contributed by @abravalheri)The {version} placeholder in the "basic" format step has been renamed to {base_version}. The old name remains usable, but is deprecated.
{version} placeholder in the "basic" format step has been renamed to {base_version}. The old name remains usable, but is deprecated.
version argument passed to Versioningit.do_format() and format method callables has been renamed to base_version.{version_tuple} field, along with the fields available in the format step, is now available for use in templates in the write and onbuild steps.
version arguments passed to Versioningit.do_write(), Versioningit.do_onbuild(), run_onbuild(), and write & onbuild method callables have been replaced with template_fields argumentsget_template_fields_from_distribution() function for use by callers of run_onbuild()Versioningit.get_version() now takes optional write and fallback argumentsonbuild step is no longer run when building from an sdist; the configuration therefore no longer needs to be idempotentget_cmdclasses(), which should only be called in an environment where setuptools is already installed.require-match parameters of the tag2version and onbuild steps must now actually be booleans; previously, values of any type were accepted and were converted to booleans.Versioningit.run() method that returns a structure containing all intermediate & final values{author_date} and {committer_date} are no longer "clamped" to less than or equal to {build_date}. This undocumented behavior was based on a misinterpretation of the SOURCE_DATE_EPOCH spec, and was even applied when SOURCE_DATE_EPOCH was not set.Backport "Don't run the onbuild step under setuptools' upcoming PEP 660 editable mode" from v2.0.1 (contributed by @abravalheri)
onbuild step under setuptools' upcoming PEP 660 editable mode" from v2.0.1 (contributed by @abravalheri)Do not import setuptools unless needed (contributed by @jenshnielsen)
Added custom setuptools commands for inserting the project version into a source file at build time
get_cmdclasses() and run_onbuild() functionstool.versioningit.default-version, emit a warning if the version is not PEP 440-compliant.versioningit command now honors the VERSIONINGIT_LOG_LEVEL environment variableThe signatures of the method functions have changed; user-supplied parameters are now passed as a single params: Dict[str, Any] argument instead of as
params: Dict[str, Any] argument instead of as keyword arguments.%(describe) format placeholder.describe-subst parameter, which is now required, and the old match and exclude parameters are now ignored.%(describe) placeholder is "expanded" into itself in an archivefile parameter to the "basic" write method is now required when the [tool.versioningit.write] table is present. If you don't want to write the version to a file, omit the table entirely.Config is no longer exported; it should now be considered private.Versioningit.from_config() functionality into Versioningit.from_project_dir()Versioningit.from_config_obj() to Versioningit.from_config(); it should now be considered privateGit 1.8.0 is now the minimum required version for the git methods, and this is documented. (Previously, the undocumented minimum version was Git 1.8.5
Call importlib.metadata.entry_points() only once and reuse the result for a speedup (contributed by @jenshnielsen)
importlib.metadata.entry_points() only once and reuse the result for
a speedup (contributed by @jenshnielsen)- Support Python 3.10 - Support tomli 2.0
Gave the CLI interface an -n/--next-version option for showing a project's next release version
-n/--next-version option for showing a project's next release versionget_next_version() functionget_version()Versioningit to have names of the form do_$STEP()- Update for tomli 1.2.0
The log messages displayed for unknown parameters are now at WARNING level instead of INFO and include suggestions for what you might have meant
vcs method: default-tag will now be honored if the git describe command fails (which generally only happens in a repository without any commits).git/ are no longer considered to be under version controlChanged default version formats to something that doesn't use {next_version}
{next_version}tag2version method:
regex is given and it does not contain a group named "version," the entire text matched by the regex will be used as the versionrequire-match parameter for erroring if the regex does not matchwrite method: encoding now defaults to UTF-8next-version methods: "minor-release", "smallest-release", and "null"entry-points dependency with importlib-metadatatool.versioningit.default-version for setting the version to use if an error occursAlpha release
Alpha release
Your coding agent can read these notes before it upgrades. Set up the MCP server →