Metadata Hook
May 3, 2025 ยท View on GitHub
uv-dynamic-versioning metadata hook allows you to set dependencies and optional-dependencies dynamically with a VCS based version.
Note
VCS based version configuration is the same as described at Version Source.
Add [tool.hatch.metadata.hooks.uv-dynamic-versioning] in your pyproject.toml to use it.
[tool.hatch.metadata.hooks.uv-dynamic-versioning]
dependencies = ["foo=={{ version }}"]
Also remove dependencies in project and set them in project.dynamic (dynamic = ["dependencies"]).
Before
[project]
name = "..."
dependencies = []
After
[project]
name = "..."
dynamic = ["dependencies"]
optional-dependencies can be set in the same way.
Configuration
-
dependencies: is a list of Jinja2 templates.dependenciesshould be set inproject.dynamic.Available variables:
version(dunamai.version)base(string)stage(string or None)revision(integer or None)distance(integer)commit(string)dirty(boolean)tagged_metadata(string or None)version(dunumai.Version)env(dictionary of environment variables)branch(string or None)branch_escaped(string or None)timestamp(string or None)major(integer)minor(integer)patch(integer)
Available functions:
bump_version(from Dunamai)serialize_pep440(from Dunamai)serialize_semver(from Dunamai)serialize_pvp(from Dunamai)
-
optional-dependencies: is an optional dependencies and each dependency is a list of Jinja2 templates.optional-dependenciesshould be set inproject.dynamic. Available variables are same as the above.