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. dependencies should be set in project.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:

  • optional-dependencies: is an optional dependencies and each dependency is a list of Jinja2 templates. optional-dependencies should be set in project.dynamic. Available variables are same as the above.