Changelog
v3.3.0 (2025-06-27)
Added
{normalized_version}to the fields available to thewriteandonbuildsteps
v3.2.0 (2025-06-10)
Support reading configuration from a
versioningit.tomlfile instead ofpyproject.toml(contributed by @b-sturgeon)Added
NoConfigFileErrorandNoConfigSectionErrorsubclasses ofNotVersioningitError
v3.1.3 (2025-05-12)
Support Python 3.13
Bugfix: Don’t crash when
log.showSignatureis set in.gitconfig
v3.1.2 (2024-07-20)
Drop support for Python 3.7
Bugfix: When using
versioningitwith Hatch, don’t run theonbuildstep for editable builds
v3.1.1 (2024-04-29)
Correctly mark a certain test as requiring Mercurial
v3.1.0 (2024-03-16)
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 @jenshnielsen)
When hg log fails to retrieve a tag, the resulting log/error message now includes the tag pattern passed to
latesttag(), if any
v3.0.0 (2023-12-13)
Migrated from setuptools to hatch
Support using the
onbuildstep with HatchBreaking: The
build_dirargument passed toVersioningit.do_onbuild()andonbuildmethod callables has been changed to anOnbuildFileProviderABC
v2.3.0 (2023-11-19)
Always read
.hg_archival.txtfiles using UTF-8 encodingAdded support for using versioningit with Hatch
v2.2.1 (2023-09-22)
Raise a
ConfigErrorif the selectedtool.versioningit.formatfield is not a stringUpdate tests for pydantic 2.0
Update tests for Python 3.12
Support Python 3.12
v2.2.0 (2023-02-11)
The custom setuptools command classes can now be imported directly from the
versioningit.cmdclassmodule as an alternative to callingget_cmdclasses()
v2.1.0 (2022-10-25)
Drop support for Python 3.6
Support Python 3.11
Use
tomllibon Python 3.11
v2.0.1 (2022-08-01)
Don’t run the
onbuildstep under setuptools’ upcoming PEP 660 editable mode (contributed by @abravalheri)
v2.0.0 (2022-06-12)
The
{version}placeholder in the “basic”formatstep has been renamed to{base_version}. The old name remains usable, but is deprecated.Breaking: The
versionargument passed toVersioningit.do_format()andformatmethod callables has been renamed tobase_version.
A
{version_tuple}field, along with the fields available in theformatstep, is now available for use in templates in thewriteandonbuildsteps.New step and subtable: “template-fields”
Breaking: The
versionarguments passed toVersioningit.do_write(),Versioningit.do_onbuild(),run_onbuild(), andwrite&onbuildmethod callables have been replaced withtemplate_fieldsargumentsAdded a
get_template_fields_from_distribution()function for use by callers ofrun_onbuild()
Versioningit.get_version()now takes optionalwriteandfallbackargumentsThe
onbuildstep is no longer run when building from an sdist; the configuration therefore no longer needs to be idempotentDrop setuptools runtime dependency
setuptools is only needed for
get_cmdclasses(), which should only be called in an environment where setuptools is already installed.
Prevent log messages from being printed twice under recent versions of setuptools
Values supplied for the
require-matchparameters of thetag2versionandonbuildsteps must now actually be booleans; previously, values of any type were accepted and were converted to booleans.Added a
Versioningit.run()method that returns a structure containing all intermediate & final values“git” method:
{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 theSOURCE_DATE_EPOCHspec, and was even applied whenSOURCE_DATE_EPOCHwas not set.When resolving entry points, if multiple entry points with the given group & name are found, error instead of using the first one returned
v1.1.2 (2022-08-12)
Backport “Don’t run the
onbuildstep under setuptools’ upcoming PEP 660 editable mode” from v2.0.1 (contributed by @abravalheri)
v1.1.1 (2022-04-08)
Do not import setuptools unless needed (contributed by @jenshnielsen)
v1.1.0 (2022-03-03)
Added custom setuptools commands for inserting the project version into a source file at build time
New step and subtable: “onbuild”
New public
get_cmdclasses()andrun_onbuild()functions
Moved documentation from the README to a Read the Docs site
Established external documentation for the public library API
When falling back to using
tool.versioningit.default-version, emit a warning if the version is not PEP 440-compliant.The
versioningitcommand now honors theVERSIONINGIT_LOG_LEVELenvironment variable
v1.0.0 (2022-02-06)
Changes to custom methods:
The signatures of the method functions have changed; user-supplied parameters are now passed as a single
params: Dict[str, Any]argument instead of as keyword arguments.User-supplied parameters with the same names as step-specific method arguments are no longer discarded.
Changes to the “git-archive” method:
Lightweight tags are now ignored (by default, but see below) when installing from a repository in order to match the behavior of the
%(describe)format placeholder.The “match” and “exclude” settings are now parsed from the
describe-substparameter, which is now required, and the oldmatchandexcludeparameters are now ignored.Git 2.35’s “tags” option for honoring lightweight tags is now recognized.
Added a dedicated error message when an invalid
%(describe)placeholder is “expanded” into itself in an archive
The
fileparameter 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.Library API:
Configis no longer exported; it should now be considered private.Merged
Versioningit.from_config()functionality intoVersioningit.from_project_dir()Renamed
Versioningit.from_config_obj()toVersioningit.from_config(); it should now be considered private
v0.3.3 (2022-02-04)
Git 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.)
Document the minimum supported Mercurial version as 5.2.
v0.3.2 (2022-01-16)
Call
importlib.metadata.entry_points()only once and reuse the result for a speedup (contributed by @jenshnielsen)
v0.3.1 (2022-01-02)
Support Python 3.10
Support tomli 2.0
v0.3.0 (2021-09-27)
Gave the CLI interface an
-n/--next-versionoption for showing a project’s next release versionAdded a
get_next_version()functionAdded a mention to the README of the existence of exported functionality other than
get_version()Renamed the individual step-calling methods of
Versioningitto have names of the formdo_$STEP()
v0.2.1 (2021-08-02)
Update for tomli 1.2.0
v0.2.0 (2021-07-13)
The log messages displayed for unknown parameters are now at WARNING level instead of INFO and include suggestions for what you might have meant
“git”
vcsmethod:default-tagwill now be honored if the git describe command fails (which generally only happens in a repository without any commits)Added an experimental “git-archive” method for determining a version when installing from a Git archive
Project directories under
.git/are no longer considered to be under version controlProject directories inside Git working directories that are not themselves tracked by Git are no longer considered to be under version control
Support added for installing from Mercurial repositories & archives
v0.1.0 (2021-07-08)
Add more logging messages
Changed default version formats to something that doesn’t use
{next_version}“basic”
tag2versionmethod:If
regexis given and it does not contain a group named “version,” the entire text matched by the regex will be used as the versionAdded a
require-matchparameter for erroring if the regex does not match
“basic”
writemethod:encodingnow defaults to UTF-8New
next-versionmethods:"minor-release","smallest-release", and"null"Replaced
entrypointsdependency withimportlib-metadataAdded
tool.versioningit.default-versionfor setting the version to use if an error occursWhen building a project from a shallow clone or in a non-sdist directory without VCS information, display an informative error message.
v0.1.0a1 (2021-07-05)
Alpha release