feat: implement dynamic versioning using git tags and hatch-vcs#6
Merged
Conversation
Transitioned build backend to hatchling/hatch-vcs to enable automatic versioning based on git tags. Updated GitHub Actions to trigger on tag push and fetch full git history for versioning.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
This PR transitions the project's versioning from a static string in
pyproject.tomlto a dynamic system based on Git tags. This enables automatic version calculation during build and automated releases via GitHub Actions.Key Changes
uv_buildtohatchlingwithhatch-vcsfor dynamic versioning.pyproject.toml: Removed staticversionand addeddynamic = ["version"].publish-prod.ymlto trigger onv*tag pushes.fetch-depth: 0to checkout steps to ensure all tag history is available for version calculation.uv.lockto reflect the build system change.Verification
uv buildcorrectly generates a development version string (e.g.,0.1.dev4+gc4d71f436.d20260413) based on the current Git state.uv syncworks as expected with the new build backend.How to Release
git tag v0.1.0git push origin v0.1.0The
publish-prodworkflow will automatically trigger and release to PyPI.