{"id":2349,"library":"uv-dynamic-versioning","title":"uv-dynamic-versioning","description":"uv-dynamic-versioning is a plugin for `uv` (and `hatch`) that provides dynamic versioning capabilities for Python projects, typically by deriving versions from Git VCS tags. It's built on top of `setuptools_scm` and offers various configuration options for version formatting and bumping. The current version is 0.14.0, with frequent minor releases addressing features, bug fixes, and documentation.","status":"active","version":"0.14.0","language":"en","source_language":"en","source_url":"https://github.com/ninoseki/uv-dynamic-versioning/","tags":["versioning","build-tool","uv","hatch","setuptools_scm","pyproject.toml"],"install":[{"cmd":"pip install uv-dynamic-versioning","lang":"bash","label":"Install with pip"}],"dependencies":[{"reason":"The core functionality for deriving versions from VCS tags relies heavily on `setuptools_scm` being available in the build environment.","package":"setuptools_scm","optional":false}],"imports":[{"note":"Users interact with this tool via `pyproject.toml` configuration and command-line execution (e.g., `uv build`), rather than importing Python modules.","symbol":"uv-dynamic-versioning","correct":"This library is primarily configured via `pyproject.toml` and invoked indirectly through build tools like `uv` or `hatch`. Direct Python imports are not a typical use case for end-users."}],"quickstart":{"code":"# pyproject.toml\n[project]\nname = \"my-dynamic-project\"\nversion = \"0.0.0\" # This placeholder will be overwritten by uv-dynamic-versioning\n\n[tool.uv-dynamic-versioning]\n# Optional: Specify version source and style\nsource = \"git_archive\"\nstyle = \"default\"\n\n# Terminal\npip install uv uv-dynamic-versioning\ngit init\ngit add .\ngit commit -m \"Initial commit\"\ngit tag 0.1.0\nuv build\n","lang":"python","description":"Configure dynamic versioning in your `pyproject.toml` and then use `uv build` to build your project, allowing `uv-dynamic-versioning` to automatically determine and apply the version based on your VCS tags."},"warnings":[{"fix":"Ensure all configuration values in `pyproject.toml` (e.g., `bump`, `tag`) are set with their correct Python type (e.g., `bump = true` instead of `bump = \"true\"`).","message":"Starting from v0.9.0, `uv-dynamic-versioning` no longer auto-coerces configuration values. Boolean and other types must be set explicitly with their correct type.","severity":"breaking","affected_versions":">=0.9.0"},{"fix":"Ensure your development and build environments are running Python 3.10 or newer. Python 3.9 is no longer supported.","message":"The minimum Python version requirement was raised to 3.10.","severity":"gotcha","affected_versions":">=0.13.0"},{"fix":"To force a fresh build and ensure the latest dynamic version is applied, use `uv clean --all` or `uv build --refresh` before building your project. Refer to `uv`'s documentation on caching for more details.","message":"When using `uv build`, remember that `uv` has its own build cache. If you change Git tags or commit messages that should alter the version, `uv` might serve a cached wheel with an old version string.","severity":"gotcha","affected_versions":"All versions"},{"fix":"Focus on configuring the tool via `pyproject.toml` and leveraging your chosen build orchestrator (`uv` or `hatch`) rather than attempting to import and call functions from `uv_dynamic_versioning` in your Python application.","message":"`uv-dynamic-versioning` primarily integrates with build systems (like `uv` or `hatch`) and modifies the project's version metadata during the build process. It's not a library intended for direct programmatic import and use within application code.","severity":"gotcha","affected_versions":"All versions"}],"env_vars":null,"last_verified":"2026-04-09T00:00:00.000Z","next_check":"2026-07-08T00:00:00.000Z"}