# uv-dynamic-versioning

> Dynamic versioning based on VCS tags for uv/hatch project

- **URL**: https://www.freshcrate.ai/projects/uv-dynamic-versioning
- **Author**: pypi
- **Category**: Frameworks
- **Latest version**: `0.14.0` (2026-04-21)
- **License**: non-standard
- **Source**: https://github.com/ninoseki/uv-dynamic-versioning/
- **Homepage**: https://pypi.org/project/uv-dynamic-versioning/
- **Language**: Python
- **GitHub**: 189 stars, 16 forks
- **Registry**: pypi (`uv-dynamic-versioning`)
- **Tags**: `hatch`, `pypi`, `uv`

## Description

# uv-dynamic-versioning

[![PyPI version](https://badge.fury.io/py/uv-dynamic-versioning.svg)](https://badge.fury.io/py/uv-dynamic-versioning)

[poetry-dynamic-versioning](https://github.com/mtkennerly/poetry-dynamic-versioning) influenced dynamic versioning tool for [uv](https://github.com/astral-sh/uv)/[hatch](https://github.com/pypa/hatch), powered by [dunamai](https://github.com/mtkennerly/dunamai/).

> [!NOTE]
> This plugin doesn't work with [the uv build backend](https://docs.astral.sh/uv/concepts/build-backend/) right now. (ref. [astral-sh/uv#14561](https://github.com/astral-sh/uv/issues/14561))

## Installation

Update or add `build-system` to use `uv-dynamic-versioning`.

```toml
[build-system]
requires = ["hatchling", "uv-dynamic-versioning"]
build-backend = "hatchling.build"
```

## Plugins

This project offers two plugins:

- Version source plugin: is for setting a version based on VCS.
- Metadata hook plugin: is for setting dependencies and optional-dependencies dynamically based on VCS version. This plugin is useful for monorepo.

See [Version Source](https://github.com/ninoseki/uv-dynamic-versioning/blob/main/docs/version_source.md) and [Metadata Hook](https://github.com/ninoseki/uv-dynamic-versioning/blob/main/docs/metadata_hook.md) for more details.

## Tips

See [Tips](https://github.com/ninoseki/uv-dynamic-versioning/blob/main/docs/tips.md).

## Examples

See [Examples](https://github.com/ninoseki/uv-dynamic-versioning/tree/main/examples/).

## Projects Using `uv-dynamic-versioning`

- Version Source:
  - [IBM/Agentics](https://github.com/IBM/Agentics)
  - [microsoft/agent-framework](https://github.com/microsoft/agent-framework)
  - [modelcontextprotocol/python-sdk](https://github.com/modelcontextprotocol/python-sdk)
- Metadata Hook:
  - [mkdocstrings/griffe](https://github.com/mkdocstrings/griffe)
  - [NVIDIA-NeMo/DataDesigner](https://github.com/NVIDIA-NeMo/DataDesigner)
  - [pydantic/pydantic-ai](https://github.com/pydantic/pydantic-ai)

And more.

## Alternatives

- [hatch-vcs](https://github.com/ofek/hatch-vcs): Hatch plugin for versioning with your preferred VCS.
- [versioningit](https://github.com/jwodder/versioningit): Versioning It with your Version In Git.

## Recent releases

| Version | Date | Urgency | Changes |
| --- | --- | --- | --- |
| `0.14.0` | 2026-04-21 | Low | Imported from PyPI (0.14.0) |
| `v0.14.0` | 2026-03-22 | Low | ## What's Changed * Improve Version Source Docs by @ninoseki in https://github.com/ninoseki/uv-dynamic-versioning/pull/85 * ci: update actions by @ninoseki in https://github.com/ninoseki/uv-dynamic-versioning/pull/86 * docs: update README by @ninoseki in https://github.com/ninoseki/uv-dynamic-versioning/pull/87 * feat: support highest-tag option by @ninoseki in https://github.com/ninoseki/uv-dynamic-versioning/pull/89 * docs: update tips by @ninoseki in https://github.com/ninoseki/uv-dynami |
| `v0.14.0` | 2026-03-22 | Low | ## What's Changed * Improve Version Source Docs by @ninoseki in https://github.com/ninoseki/uv-dynamic-versioning/pull/85 * ci: update actions by @ninoseki in https://github.com/ninoseki/uv-dynamic-versioning/pull/86 * docs: update README by @ninoseki in https://github.com/ninoseki/uv-dynamic-versioning/pull/87 * feat: support highest-tag option by @ninoseki in https://github.com/ninoseki/uv-dynamic-versioning/pull/89 * docs: update tips by @ninoseki in https://github.com/ninoseki/uv-dynami |
| `v0.14.0` | 2026-03-22 | Low | ## What's Changed * Improve Version Source Docs by @ninoseki in https://github.com/ninoseki/uv-dynamic-versioning/pull/85 * ci: update actions by @ninoseki in https://github.com/ninoseki/uv-dynamic-versioning/pull/86 * docs: update README by @ninoseki in https://github.com/ninoseki/uv-dynamic-versioning/pull/87 * feat: support highest-tag option by @ninoseki in https://github.com/ninoseki/uv-dynamic-versioning/pull/89 * docs: update tips by @ninoseki in https://github.com/ninoseki/uv-dynami |
| `v0.14.0` | 2026-03-22 | Low | ## What's Changed * Improve Version Source Docs by @ninoseki in https://github.com/ninoseki/uv-dynamic-versioning/pull/85 * ci: update actions by @ninoseki in https://github.com/ninoseki/uv-dynamic-versioning/pull/86 * docs: update README by @ninoseki in https://github.com/ninoseki/uv-dynamic-versioning/pull/87 * feat: support highest-tag option by @ninoseki in https://github.com/ninoseki/uv-dynamic-versioning/pull/89 * docs: update tips by @ninoseki in https://github.com/ninoseki/uv-dynami |
| `v0.14.0` | 2026-03-22 | Low | ## What's Changed * Improve Version Source Docs by @ninoseki in https://github.com/ninoseki/uv-dynamic-versioning/pull/85 * ci: update actions by @ninoseki in https://github.com/ninoseki/uv-dynamic-versioning/pull/86 * docs: update README by @ninoseki in https://github.com/ninoseki/uv-dynamic-versioning/pull/87 * feat: support highest-tag option by @ninoseki in https://github.com/ninoseki/uv-dynamic-versioning/pull/89 * docs: update tips by @ninoseki in https://github.com/ninoseki/uv-dynami |
| `v0.14.0` | 2026-03-22 | Low | ## What's Changed * Improve Version Source Docs by @ninoseki in https://github.com/ninoseki/uv-dynamic-versioning/pull/85 * ci: update actions by @ninoseki in https://github.com/ninoseki/uv-dynamic-versioning/pull/86 * docs: update README by @ninoseki in https://github.com/ninoseki/uv-dynamic-versioning/pull/87 * feat: support highest-tag option by @ninoseki in https://github.com/ninoseki/uv-dynamic-versioning/pull/89 * docs: update tips by @ninoseki in https://github.com/ninoseki/uv-dynami |
| `v0.14.0` | 2026-03-22 | Low | ## What's Changed * Improve Version Source Docs by @ninoseki in https://github.com/ninoseki/uv-dynamic-versioning/pull/85 * ci: update actions by @ninoseki in https://github.com/ninoseki/uv-dynamic-versioning/pull/86 * docs: update README by @ninoseki in https://github.com/ninoseki/uv-dynamic-versioning/pull/87 * feat: support highest-tag option by @ninoseki in https://github.com/ninoseki/uv-dynamic-versioning/pull/89 * docs: update tips by @ninoseki in https://github.com/ninoseki/uv-dynami |
| `v0.14.0` | 2026-03-22 | Low | ## What's Changed * Improve Version Source Docs by @ninoseki in https://github.com/ninoseki/uv-dynamic-versioning/pull/85 * ci: update actions by @ninoseki in https://github.com/ninoseki/uv-dynamic-versioning/pull/86 * docs: update README by @ninoseki in https://github.com/ninoseki/uv-dynamic-versioning/pull/87 * feat: support highest-tag option by @ninoseki in https://github.com/ninoseki/uv-dynamic-versioning/pull/89 * docs: update tips by @ninoseki in https://github.com/ninoseki/uv-dynami |
| `v0.14.0` | 2026-03-22 | Low | ## What's Changed * Improve Version Source Docs by @ninoseki in https://github.com/ninoseki/uv-dynamic-versioning/pull/85 * ci: update actions by @ninoseki in https://github.com/ninoseki/uv-dynamic-versioning/pull/86 * docs: update README by @ninoseki in https://github.com/ninoseki/uv-dynamic-versioning/pull/87 * feat: support highest-tag option by @ninoseki in https://github.com/ninoseki/uv-dynamic-versioning/pull/89 * docs: update tips by @ninoseki in https://github.com/ninoseki/uv-dynami |

## Citation

- HTML: https://www.freshcrate.ai/projects/uv-dynamic-versioning
- Markdown: https://www.freshcrate.ai/projects/uv-dynamic-versioning.md
- Dependencies JSON: https://www.freshcrate.ai/api/projects/uv-dynamic-versioning/deps

_Generated by freshcrate.ai. Indexes pypi releases for AI-agent ecosystem packages._
