Skip to main content

A dynamic version source plugin for uv workspaces.

Project description

uv-workspace-dynamic-versioning

PyPI version CI Status Coverage SLSA Level 3 License

A powerful Hatch plugin for dynamic versioning and dependency injection in uv workspaces.


📖 Context & Origin

This project was created to address a specific limitation in the existing uv-dynamic-versioning plugin when used within complex monorepos and uv workspaces.

As discussed in ninoseki/uv-dynamic-versioning#81, the standard implementation often calculates version distance and commit hashes based on the entire repository history. In a workspace with multiple packages, this leads to:

  1. False Positives: Packages bumping versions when unrelated code in the workspace changes.
  2. Inaccurate Metadata: Commit hashes reflecting global repo state rather than the state of the specific package.

uv-workspace-dynamic-versioning introduces Directory-Specific Patching. It re-calculates the Git distance and commit hash by filtering the history to the specific package subdirectory, ensuring that versions only reflect changes relevant to that package.


🚀 Key Features

  • VCS-Powered Versioning: Automatically derive versions from Git, Mercurial, and more via Dunamai.
  • Workspace Aware: Accurate distance and commit hash calculation restricted to the project subdirectory.
  • Dynamic Dependencies: Inject versions into dependencies using Jinja2 templates (e.g., pkg == {{ version.base }}).
  • Secure by Design: Sandboxed Jinja2 environment and Path Traversal protection.
  • Highly Configurable: Custom formats, bumping logic, and fallback versions.

🛠 Quick Start

1. Installation

Add the plugin to your build-system.requires in pyproject.toml:

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

2. Basic Configuration

Enable the version source and mark the version as dynamic:

[project]
name = "my-awesome-package"
dynamic = ["version"]

[tool.hatch.version]
source = "uv-workspace-dynamic-versioning"

📚 Documentation

For full guides and API reference, visit our Documentation Site.


⚖️ License

Distributed under the terms of the MIT license.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

uv_workspace_dynamic_versioning-0.1.3.tar.gz (114.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

uv_workspace_dynamic_versioning-0.1.3-py3-none-any.whl (14.7 kB view details)

Uploaded Python 3

File details

Details for the file uv_workspace_dynamic_versioning-0.1.3.tar.gz.

File metadata

File hashes

Hashes for uv_workspace_dynamic_versioning-0.1.3.tar.gz
Algorithm Hash digest
SHA256 1a31ecf26d4aa7f8d83d3f48024ffe125c2e636cb991f665ec3d7eb1ed4a4606
MD5 f1df61416567ff6a3fb70d8010fbf555
BLAKE2b-256 88603f953d2d5de7ce6c2169a4b6dbf2d3f908ae73e1473c659b6b34b305ea72

See more details on using hashes here.

Provenance

The following attestation bundles were made for uv_workspace_dynamic_versioning-0.1.3.tar.gz:

Publisher: ci.yml on indiVar0508/uv-workspace-dynamic-versioning

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file uv_workspace_dynamic_versioning-0.1.3-py3-none-any.whl.

File metadata

File hashes

Hashes for uv_workspace_dynamic_versioning-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 142b4395c814060371ee0ea15fac7bfc3d3810fd74b7f82c143d5947dcbd6053
MD5 181b7a9612d5c3de0747ba6e69354a34
BLAKE2b-256 d7b9f622509072e3cff66676e5665a1546c44cb3c7225cf1dd924fb06c572cdd

See more details on using hashes here.

Provenance

The following attestation bundles were made for uv_workspace_dynamic_versioning-0.1.3-py3-none-any.whl:

Publisher: ci.yml on indiVar0508/uv-workspace-dynamic-versioning

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page