Skip to content

uv lock fails to update version in lockfile #10852

@vasiliy-poverennov-doordash

Description

Summary

here's a minimal repro
https://github.com/vasiliy-poverennov-sevenrooms/uv-lock-repro

relevant parts:

# pyproject.toml
[project]
name = "my-lib"
version = "0.42.2"
# uv.lock
version = "0.42.1"

running uv lock doesn't update the lockfile

uv lock
Resolved 1 package in 0.22ms

this used to work (uv lock updated the version in the lockfile) with uv 0.5.18 but stopped working since 5.19

I saw #10776 and #10683 but I believe they are unrelated

uv lock -vvv before the version is updated
> RUST_LOG=uv=trace uv lock -vvv
    0.000015s DEBUG uv uv 0.5.22 (Homebrew 2025-01-21)
    0.000272s DEBUG uv_workspace::workspace Found workspace root: `/Users/vasiliy/pg/uv-lock-repro`
    0.000284s DEBUG uv_workspace::workspace Adding current workspace member: `/Users/vasiliy/pg/uv-lock-repro`
    0.000344s DEBUG uv::commands::project Using Python request `==3.12.*` from `requires-python` metadata
    0.000421s DEBUG uv_python::discovery Searching for Python ==3.12.* in managed installations or search path
    0.000460s DEBUG uv_python::discovery Searching for managed installations at `/Users/vasiliy/.local/share/uv/python`
    0.000605s DEBUG uv_python::discovery Skipping incompatible managed installation `cpython-3.13.0-macos-aarch64-none`
    0.000611s DEBUG uv_python::discovery Found managed installation `cpython-3.12.8-macos-aarch64-none`
    0.000770s TRACE uv_python::interpreter Cached interpreter info for Python 3.12.8, skipping probing: /Users/vasiliy/.local/share/uv/python/cpython-3.12.8-macos-aarch64-none/bin/python3.12
    0.000779s DEBUG uv_python::discovery Found `cpython-3.12.8-macos-aarch64-none` at `/Users/vasiliy/.local/share/uv/python/cpython-3.12.8-macos-aarch64-none/bin/python3.12` (managed installations)
Using CPython 3.12.8
 uv_client::linehaul::linehaul 
    0.001225s DEBUG uv_client::base_client Using request timeout of 30s
 uv_resolver::flat_index::from_entries 
    0.001560s DEBUG uv_distribution::source Found static `requires-dist` for: /Users/vasiliy/pg/uv-lock-repro/
    0.001691s DEBUG uv_workspace::workspace No workspace root found, using project root
    0.001749s TRACE uv_resolver::lock Static `Requires-Dist` for `my-lib==0.42.1 @ editable+.` is up-to-date
    0.001759s DEBUG uv::commands::project::lock Existing `uv.lock` satisfies workspace requirements
Resolved 1 package in 0.63ms
uv lock --upgrade-package my-lib
> RUST_LOG=uv=trace uv lock --upgrade-package my-lib -vvv
    0.000015s DEBUG uv uv 0.5.22 (Homebrew 2025-01-21)
    0.000294s DEBUG uv_workspace::workspace Found workspace root: `/Users/vasiliy/pg/uv-lock-repro`
    0.000314s DEBUG uv_workspace::workspace Adding current workspace member: `/Users/vasiliy/pg/uv-lock-repro`
    0.000381s DEBUG uv::commands::project Using Python request `==3.12.*` from `requires-python` metadata
    0.000484s DEBUG uv_python::discovery Searching for Python ==3.12.* in managed installations or search path
    0.000527s DEBUG uv_python::discovery Searching for managed installations at `/Users/vasiliy/.local/share/uv/python`
    0.000707s DEBUG uv_python::discovery Skipping incompatible managed installation `cpython-3.13.0-macos-aarch64-none`
    0.000712s DEBUG uv_python::discovery Found managed installation `cpython-3.12.8-macos-aarch64-none`
    0.000810s TRACE uv_python::interpreter Querying interpreter executable at /Users/vasiliy/.local/share/uv/python/cpython-3.12.8-macos-aarch64-none/bin/python3.12
    0.042309s DEBUG uv_python::discovery Found `cpython-3.12.8-macos-aarch64-none` at `/Users/vasiliy/.local/share/uv/python/cpython-3.12.8-macos-aarch64-none/bin/python3.12` (managed installations)
Using CPython 3.12.8
 uv_client::linehaul::linehaul 
    0.042610s DEBUG uv_client::base_client Using request timeout of 30s
 uv_resolver::flat_index::from_entries 
    0.042676s DEBUG uv::commands::project::lock Ignoring existing lockfile due to `--upgrade-package`
 uv_distribution::distribution_database::get_or_build_wheel_metadata dist=my-lib @ file:///Users/vasiliy/pg/uv-lock-repro
    0.042835s   0ms DEBUG uv_distribution::source Found static `pyproject.toml` for: my-lib @ file:///Users/vasiliy/pg/uv-lock-repro
    0.042916s   0ms DEBUG uv_workspace::workspace No workspace root found, using project root
    0.043040s TRACE uv_requirements::lookahead Performing lookahead for my-lib @ file:///Users/vasiliy/pg/uv-lock-repro
    0.043059s TRACE uv_requirements::lookahead Performing lookahead for my-lib @ file:///Users/vasiliy/pg/uv-lock-repro
 uv_resolver::resolver::solve 
    0.043243s   0ms DEBUG uv_resolver::resolver Solving with installed Python version: 3.12.8
    0.043249s   0ms DEBUG uv_resolver::resolver Solving with target Python version: ==3.12.*
    0.043266s   0ms TRACE uv_resolver::resolver assigned packages: 
    0.043269s   0ms TRACE uv_resolver::resolver Chose package for decision: root. remaining choices: 
   uv_resolver::resolver::get_dependencies_forking package=root, version=0a0.dev0
     uv_resolver::resolver::get_dependencies package=root, version=0a0.dev0
    0.043324s   0ms DEBUG uv_resolver::resolver Adding direct dependency: my-lib*
    0.043331s   0ms DEBUG uv_resolver::resolver Adding direct dependency: my-lib:dev*
    0.043356s   0ms TRACE uv_resolver::resolver assigned packages: root==0a0.dev0
    0.043359s   0ms TRACE uv_resolver::resolver Chose package for decision: my-lib:dev. remaining choices: my-lib
    0.043364s   0ms DEBUG uv_resolver::resolver Searching for a compatible version of my-lib @ file:///Users/vasiliy/pg/uv-lock-repro (*)
   uv_resolver::resolver::get_dependencies_forking package=my-lib:dev, version=0.42.2
     uv_resolver::resolver::get_dependencies package=my-lib:dev, version=0.42.2
    0.043913s   0ms DEBUG uv_resolver::resolver Adding direct dependency: my-lib:dev==0.42.2
    0.043944s   0ms TRACE uv_resolver::resolver assigned packages: root==0a0.dev0
    0.043948s   0ms TRACE uv_resolver::resolver Chose package for decision: my-lib. remaining choices: my-lib:dev
    0.043952s   0ms DEBUG uv_resolver::resolver Searching for a compatible version of my-lib @ file:///Users/vasiliy/pg/uv-lock-repro (*)
   uv_resolver::resolver::get_dependencies_forking package=my-lib, version=0.42.2
     uv_resolver::resolver::get_dependencies package=my-lib, version=0.42.2
    0.043983s   0ms TRACE uv_resolver::resolver assigned packages: root==0a0.dev0, my-lib==0.42.2
    0.043985s   0ms TRACE uv_resolver::resolver Chose package for decision: my-lib:dev. remaining choices: 
    0.044605s   1ms DEBUG uv_resolver::resolver Searching for a compatible version of my-lib @ file:///Users/vasiliy/pg/uv-lock-repro (==0.42.2)
   uv_resolver::resolver::get_dependencies_forking package=my-lib:dev, version=0.42.2
     uv_resolver::resolver::get_dependencies package=my-lib:dev, version=0.42.2
    0.044623s   1ms TRACE uv_resolver::resolver assigned packages: root==0a0.dev0, my-lib==0.42.2, my-lib:dev==0.42.2
    0.044626s   1ms DEBUG uv_resolver::resolver::batch_prefetch Tried 1 versions: my-lib 1
    0.044632s   1ms DEBUG uv_resolver::resolver all marker environments resolution took 0.001s
    0.044661s   1ms TRACE uv_resolver::resolver Resolution: ResolverEnvironment { kind: Universal { initial_forks: [], markers: true, include: {}, exclude: {} } }
    0.045316s   2ms TRACE uv_resolver::resolver Resolution edge: ROOT -> my-lib
    0.045321s   2ms TRACE uv_resolver::resolver Resolution edge:     0a0.dev0 -> 0.42.2 (group: dev)
    0.045323s   2ms TRACE uv_resolver::resolver Resolution edge: ROOT -> my-lib
    0.045326s   2ms TRACE uv_resolver::resolver Resolution edge:     0a0.dev0 -> 0.42.2
Resolved 1 package in 2ms
vasiliy@vasya-mbp2 ~/p/uv-lock-repro (main)> RUST_LOG=uv=trace uv lock --upgrade-package my-lib -vvv
    0.000020s DEBUG uv uv 0.5.22 (Homebrew 2025-01-21)
    0.000634s DEBUG uv_workspace::workspace Found workspace root: `/Users/vasiliy/pg/uv-lock-repro`
    0.000661s DEBUG uv_workspace::workspace Adding current workspace member: `/Users/vasiliy/pg/uv-lock-repro`
    0.000731s DEBUG uv::commands::project Using Python request `==3.12.*` from `requires-python` metadata
    0.000831s DEBUG uv_python::discovery Searching for Python ==3.12.* in managed installations or search path
    0.000873s DEBUG uv_python::discovery Searching for managed installations at `/Users/vasiliy/.local/share/uv/python`
    0.001013s DEBUG uv_python::discovery Skipping incompatible managed installation `cpython-3.13.0-macos-aarch64-none`
    0.001018s DEBUG uv_python::discovery Found managed installation `cpython-3.12.8-macos-aarch64-none`
    0.001084s TRACE uv_python::interpreter Querying interpreter executable at /Users/vasiliy/.local/share/uv/python/cpython-3.12.8-macos-aarch64-none/bin/python3.12
    0.040591s DEBUG uv_python::discovery Found `cpython-3.12.8-macos-aarch64-none` at `/Users/vasiliy/.local/share/uv/python/cpython-3.12.8-macos-aarch64-none/bin/python3.12` (managed installations)
Using CPython 3.12.8
 uv_client::linehaul::linehaul 
    0.040899s DEBUG uv_client::base_client Using request timeout of 30s
 uv_resolver::flat_index::from_entries 
    0.040959s DEBUG uv::commands::project::lock Ignoring existing lockfile due to `--upgrade-package`
 uv_distribution::distribution_database::get_or_build_wheel_metadata dist=my-lib @ file:///Users/vasiliy/pg/uv-lock-repro
    0.041135s   0ms DEBUG uv_distribution::source Found static `pyproject.toml` for: my-lib @ file:///Users/vasiliy/pg/uv-lock-repro
    0.041208s   0ms DEBUG uv_workspace::workspace No workspace root found, using project root
    0.041334s TRACE uv_requirements::lookahead Performing lookahead for my-lib @ file:///Users/vasiliy/pg/uv-lock-repro
    0.041353s TRACE uv_requirements::lookahead Performing lookahead for my-lib @ file:///Users/vasiliy/pg/uv-lock-repro
 uv_resolver::resolver::solve 
    0.041476s   0ms DEBUG uv_resolver::resolver Solving with installed Python version: 3.12.8
    0.041482s   0ms DEBUG uv_resolver::resolver Solving with target Python version: ==3.12.*
    0.041500s   0ms TRACE uv_resolver::resolver assigned packages: 
    0.041503s   0ms TRACE uv_resolver::resolver Chose package for decision: root. remaining choices: 
   uv_resolver::resolver::get_dependencies_forking package=root, version=0a0.dev0
     uv_resolver::resolver::get_dependencies package=root, version=0a0.dev0
    0.041560s   0ms DEBUG uv_resolver::resolver Adding direct dependency: my-lib*
    0.041567s   0ms DEBUG uv_resolver::resolver Adding direct dependency: my-lib:dev*
    0.041698s   0ms TRACE uv_resolver::resolver assigned packages: root==0a0.dev0
    0.041703s   0ms TRACE uv_resolver::resolver Chose package for decision: my-lib:dev. remaining choices: my-lib
    0.041707s   0ms DEBUG uv_resolver::resolver Searching for a compatible version of my-lib @ file:///Users/vasiliy/pg/uv-lock-repro (*)
   uv_resolver::resolver::get_dependencies_forking package=my-lib:dev, version=0.42.2
     uv_resolver::resolver::get_dependencies package=my-lib:dev, version=0.42.2
    0.041723s   0ms DEBUG uv_resolver::resolver Adding direct dependency: my-lib:dev==0.42.2
    0.041731s   0ms TRACE uv_resolver::resolver assigned packages: root==0a0.dev0
    0.041733s   0ms TRACE uv_resolver::resolver Chose package for decision: my-lib. remaining choices: my-lib:dev
    0.042352s   0ms DEBUG uv_resolver::resolver Searching for a compatible version of my-lib @ file:///Users/vasiliy/pg/uv-lock-repro (*)
   uv_resolver::resolver::get_dependencies_forking package=my-lib, version=0.42.2
     uv_resolver::resolver::get_dependencies package=my-lib, version=0.42.2
    0.042376s   0ms TRACE uv_resolver::resolver assigned packages: root==0a0.dev0, my-lib==0.42.2
    0.042378s   0ms TRACE uv_resolver::resolver Chose package for decision: my-lib:dev. remaining choices: 
    0.042382s   0ms DEBUG uv_resolver::resolver Searching for a compatible version of my-lib @ file:///Users/vasiliy/pg/uv-lock-repro (==0.42.2)
   uv_resolver::resolver::get_dependencies_forking package=my-lib:dev, version=0.42.2
     uv_resolver::resolver::get_dependencies package=my-lib:dev, version=0.42.2
    0.043212s   1ms TRACE uv_resolver::resolver assigned packages: root==0a0.dev0, my-lib==0.42.2, my-lib:dev==0.42.2
    0.043217s   1ms DEBUG uv_resolver::resolver::batch_prefetch Tried 1 versions: my-lib 1
    0.043219s   1ms DEBUG uv_resolver::resolver all marker environments resolution took 0.002s
    0.043238s   1ms TRACE uv_resolver::resolver Resolution: ResolverEnvironment { kind: Universal { initial_forks: [], markers: true, include: {}, exclude: {} } }
    0.043243s   1ms TRACE uv_resolver::resolver Resolution edge: ROOT -> my-lib
    0.043246s   1ms TRACE uv_resolver::resolver Resolution edge:     0a0.dev0 -> 0.42.2 (group: dev)
    0.043248s   1ms TRACE uv_resolver::resolver Resolution edge: ROOT -> my-lib
    0.043821s   2ms TRACE uv_resolver::resolver Resolution edge:     0a0.dev0 -> 0.42.2
Resolved 1 package in 3ms
Updated my-lib v0.42.1 -> v0.42.2
uv lock -vvv after the version is updated
> RUST_LOG=uv=trace uv lock -vvv
    0.000007s DEBUG uv uv 0.5.22 (Homebrew 2025-01-21)
    0.000166s DEBUG uv_workspace::workspace Found workspace root: `/Users/vasiliy/pg/uv-lock-repro`
    0.000172s DEBUG uv_workspace::workspace Adding current workspace member: `/Users/vasiliy/pg/uv-lock-repro`
    0.000201s DEBUG uv::commands::project Using Python request `==3.12.*` from `requires-python` metadata
    0.000243s DEBUG uv_python::discovery Searching for Python ==3.12.* in managed installations or search path
    0.000262s DEBUG uv_python::discovery Searching for managed installations at `/Users/vasiliy/.local/share/uv/python`
    0.000333s DEBUG uv_python::discovery Skipping incompatible managed installation `cpython-3.13.0-macos-aarch64-none`
    0.000336s DEBUG uv_python::discovery Found managed installation `cpython-3.12.8-macos-aarch64-none`
    0.000420s TRACE uv_python::interpreter Cached interpreter info for Python 3.12.8, skipping probing: /Users/vasiliy/.local/share/uv/python/cpython-3.12.8-macos-aarch64-none/bin/python3.12
    0.000425s DEBUG uv_python::discovery Found `cpython-3.12.8-macos-aarch64-none` at `/Users/vasiliy/.local/share/uv/python/cpython-3.12.8-macos-aarch64-none/bin/python3.12` (managed installations)
Using CPython 3.12.8
 uv_client::linehaul::linehaul 
    0.000624s DEBUG uv_client::base_client Using request timeout of 30s
 uv_resolver::flat_index::from_entries 
    0.000770s DEBUG uv_distribution::source Found static `requires-dist` for: /Users/vasiliy/pg/uv-lock-repro/
    0.000824s DEBUG uv_workspace::workspace No workspace root found, using project root
    0.000845s TRACE uv_resolver::lock Static `Requires-Dist` for `my-lib==0.42.2 @ editable+.` is up-to-date
    0.000851s DEBUG uv::commands::project::lock Existing `uv.lock` satisfies workspace requirements
Resolved 1 package in 0.27ms
uv lock (uv 0.5.18)
> RUST_LOG=uv=trace uv lock -vvv
    0.000017s DEBUG uv uv 0.5.18 (27d1bad55 2025-01-11)
    0.000337s DEBUG uv_workspace::workspace Found workspace root: `/Users/vasiliy/pg/uv-lock-repro`
    0.000354s DEBUG uv_workspace::workspace Adding current workspace member: `/Users/vasiliy/pg/uv-lock-repro`
    0.000418s DEBUG uv::commands::project Using Python request `==3.12.*` from `requires-python` metadata
    0.000503s DEBUG uv_python::discovery Searching for Python ==3.12.* in managed installations or search path
    0.000544s DEBUG uv_python::discovery Searching for managed installations at `/Users/vasiliy/.local/share/uv/python`
    0.000672s DEBUG uv_python::discovery Skipping incompatible managed installation `cpython-3.13.0-macos-aarch64-none`
    0.000681s DEBUG uv_python::discovery Found managed installation `cpython-3.12.8-macos-aarch64-none`
    0.000844s TRACE uv_python::interpreter Cached interpreter info for Python 3.12.8, skipping probing: /Users/vasiliy/.local/share/uv/python/cpython-3.12.8-macos-aarch64-none/bin/python3.12
    0.000853s DEBUG uv_python::discovery Found `cpython-3.12.8-macos-aarch64-none` at `/Users/vasiliy/.local/share/uv/python/cpython-3.12.8-macos-aarch64-none/bin/python3.12` (managed installations)
Using CPython 3.12.8
 uv_client::linehaul::linehaul 
    0.001249s DEBUG uv_client::base_client Using request timeout of 30s
 uv_resolver::flat_index::from_entries 
    0.001518s DEBUG uv::commands::project::lock Ignoring existing lockfile due to mismatched version: `my-lib` (expected: `0.42.2`, found: `0.42.1`)
 uv_distribution::distribution_database::get_or_build_wheel_metadata dist=my-lib @ file:///Users/vasiliy/pg/uv-lock-repro
    0.001769s   0ms DEBUG uv_distribution::source Found static `pyproject.toml` for: my-lib @ file:///Users/vasiliy/pg/uv-lock-repro
    0.001882s   0ms DEBUG uv_workspace::workspace No workspace root found, using project root
    0.002220s TRACE uv_requirements::lookahead Performing lookahead for my-lib @ file:///Users/vasiliy/pg/uv-lock-repro
    0.002301s TRACE uv_requirements::lookahead Performing lookahead for my-lib @ file:///Users/vasiliy/pg/uv-lock-repro
 uv_resolver::resolver::solve 
    0.002657s   0ms DEBUG uv_resolver::resolver Solving with installed Python version: 3.12.8
    0.002665s   0ms DEBUG uv_resolver::resolver Solving with target Python version: ==3.12.*
    0.002713s   0ms TRACE uv_resolver::resolver assigned packages: 
    0.002723s   0ms TRACE uv_resolver::resolver Chose package for decision: root. remaining choices: 
   uv_resolver::resolver::get_dependencies_forking package=root, version=0a0.dev0
     uv_resolver::resolver::get_dependencies package=root, version=0a0.dev0
    0.002861s   0ms DEBUG uv_resolver::resolver Adding direct dependency: my-lib*
    0.002874s   0ms DEBUG uv_resolver::resolver Adding direct dependency: my-lib:dev*
    0.002915s   0ms TRACE uv_resolver::resolver assigned packages: root==0a0.dev0
    0.003061s   0ms TRACE uv_resolver::resolver Chose package for decision: my-lib:dev. remaining choices: my-lib
    0.003085s   0ms DEBUG uv_resolver::resolver Searching for a compatible version of my-lib @ file:///Users/vasiliy/pg/uv-lock-repro (*)
   uv_resolver::resolver::get_dependencies_forking package=my-lib:dev, version=0.42.2
     uv_resolver::resolver::get_dependencies package=my-lib:dev, version=0.42.2
    0.003125s   0ms DEBUG uv_resolver::resolver Adding direct dependency: my-lib:dev==0.42.2
    0.003146s   0ms TRACE uv_resolver::resolver assigned packages: root==0a0.dev0
    0.003151s   0ms TRACE uv_resolver::resolver Chose package for decision: my-lib. remaining choices: my-lib:dev
    0.003157s   0ms DEBUG uv_resolver::resolver Searching for a compatible version of my-lib @ file:///Users/vasiliy/pg/uv-lock-repro (*)
   uv_resolver::resolver::get_dependencies_forking package=my-lib, version=0.42.2
     uv_resolver::resolver::get_dependencies package=my-lib, version=0.42.2
    0.004358s   1ms TRACE uv_resolver::resolver assigned packages: root==0a0.dev0, my-lib==0.42.2
    0.004362s   1ms TRACE uv_resolver::resolver Chose package for decision: my-lib:dev. remaining choices: 
    0.004372s   1ms DEBUG uv_resolver::resolver Searching for a compatible version of my-lib @ file:///Users/vasiliy/pg/uv-lock-repro (==0.42.2)
   uv_resolver::resolver::get_dependencies_forking package=my-lib:dev, version=0.42.2
     uv_resolver::resolver::get_dependencies package=my-lib:dev, version=0.42.2
    0.004395s   1ms TRACE uv_resolver::resolver assigned packages: root==0a0.dev0, my-lib==0.42.2, my-lib:dev==0.42.2
    0.005370s   2ms DEBUG uv_resolver::resolver::batch_prefetch Tried 1 versions: my-lib 1
    0.005376s   2ms DEBUG uv_resolver::resolver all marker environments resolution took 0.003s
    0.005432s   2ms TRACE uv_resolver::resolver Resolution: ResolverEnvironment { kind: Universal { initial_forks: [], markers: true, include: {}, exclude: {} } }
    0.005441s   2ms TRACE uv_resolver::resolver Resolution edge: ROOT -> my-lib
    0.005445s   2ms TRACE uv_resolver::resolver Resolution edge:     0a0.dev0 -> 0.42.2 (group: dev)
    0.005448s   2ms TRACE uv_resolver::resolver Resolution edge: ROOT -> my-lib
    0.005451s   2ms TRACE uv_resolver::resolver Resolution edge:     0a0.dev0 -> 0.42.2
Resolved 1 package in 5ms
Updated my-lib v0.42.1 -> v0.42.2

Platform

macOS 14, Darwin 23.5.0 arm64

Version

uv 0.5.22 (Homebrew 2025-01-21)

Python version

Python 3.12.8

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions