astral-sh / uv-pre-commit

Apache License 2.0
88 stars 7 forks source link

`setuptools-scm` with `uv-lock` `pre-commit` hook workflow broken by `uv==0.5` #25

Open jamesbraza opened 2 weeks ago

jamesbraza commented 2 weeks ago

I have this in my pre-commit-config.yaml:

default_language_version:
  python: python3
repos:
  - repo: https://github.com/astral-sh/uv-pre-commit
    rev: X
    hooks:
      - id: uv-lock

Notably, I also use setuptools-scm for SCM versioning of my package:

# pyproject.toml

[build-system]
build-backend = "setuptools.build_meta"
requires = ["setuptools>=64", "setuptools_scm>=8"]

[project]
dynamic = ["version"]
name = "foo"

[tool.setuptools_scm]
version_file = "foo/version.py"

When the rev is below 0.5, the uv-lock hook passes within a branch.

After pre-commit autoupdate to uv==0.5.1, the uv-lock hook fails within a branch on a commit-by-commit basis:

 [[package]]
 name = "foo"
-version = "0.14.3.dev3+ge144e1b"
+version = "0.14.3.dev5+g1ca1866"

If you enforce pre-commit passing in CI, you seemingly can't win because every commit changes the uv.lock file, which leads to failing CI.

aliabbasjaffri commented 3 days ago

Can confirm, i'm impacted by this as well!