Changelog
v3.2.0 (in development)
Support Python 3.13
v3.1.2 (2024-07-20)
Drop support for Python 3.7
Bugfix: When using
versioningit
with Hatch, don’t run theonbuild
step 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
onbuild
step with HatchBreaking: The
build_dir
argument passed toVersioningit.do_onbuild()
andonbuild
method callables has been changed to anOnbuildFileProvider
ABC
v2.3.0 (2023-11-19)
Always read
.hg_archival.txt
files using UTF-8 encodingAdded support for using versioningit with Hatch
v2.2.1 (2023-09-22)
Raise a
ConfigError
if the selectedtool.versioningit.format
field 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.cmdclass
module as an alternative to callingget_cmdclasses()
v2.1.0 (2022-10-25)
Drop support for Python 3.6
Support Python 3.11
Use
tomllib
on Python 3.11
v2.0.1 (2022-08-01)
Don’t run the
onbuild
step under setuptools’ upcoming PEP 660 editable mode (contributed by @abravalheri)
v2.0.0 (2022-06-12)
The
{version}
placeholder in the “basic”format
step has been renamed to{base_version}
. The old name remains usable, but is deprecated.Breaking: The
version
argument passed toVersioningit.do_format()
andformat
method callables has been renamed tobase_version
.
A
{version_tuple}
field, along with the fields available in theformat
step, is now available for use in templates in thewrite
andonbuild
steps.New step and subtable: “template-fields”
Breaking: The
version
arguments passed toVersioningit.do_write()
,Versioningit.do_onbuild()
,run_onbuild()
, andwrite
&onbuild
method callables have been replaced withtemplate_fields
argumentsAdded a
get_template_fields_from_distribution()
function for use by callers ofrun_onbuild()
Versioningit.get_version()
now takes optionalwrite
andfallback
argumentsThe
onbuild
step 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-match
parameters of thetag2version
andonbuild
steps 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_EPOCH
spec, and was even applied whenSOURCE_DATE_EPOCH
was 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
onbuild
step 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
versioningit
command now honors theVERSIONINGIT_LOG_LEVEL
environment 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-subst
parameter, which is now required, and the oldmatch
andexclude
parameters 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
file
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.Library API:
Config
is 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-version
option 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
Versioningit
to 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”
vcs
method:default-tag
will 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”
tag2version
method:If
regex
is 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-match
parameter for erroring if the regex does not match
“basic”
write
method:encoding
now defaults to UTF-8New
next-version
methods:"minor-release"
,"smallest-release"
, and"null"
Replaced
entrypoints
dependency withimportlib-metadata
Added
tool.versioningit.default-version
for 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