In bf3c328, uv.lock was added to the .gitignore template.
I'd like to propose we always store the lock file in the repo.
In griffe, I was scratching my head figuring out why CI shows no mypy errors while my fresh installation of the project reported a number of them. Only then did I run make allrun uv sync --upgrade && make allrun check-types and saw it pass. The upgrade bumped my mypy version. A lockfile would eliminate that scenario in the first place and be a source of truth regarding what versions of tools are used by everybody.
Having a lockfile will work with our tests against different resolutions and even potentially speed up CI by not re-resolving already resolved deps. Of course, uv sync will ignore the lockfile when explicitly given a different resolution than the one used to produce the lockfile, showing a message like
Ignoring existing lockfile due to change in resolution mode: `highest` vs. `lowest-direct`
As a bonus, we may want to set --exclude-newer in sync in CI to the datetime of the examined git revision to fully make sure the runs are roughly reproducible at all times. But we'd still want to see CI without --exclude-newer to catch stuff.
In bf3c328,
uv.lockwas added to the.gitignoretemplate.I'd like to propose we always store the lock file in the repo.
In griffe, I was scratching my head figuring out why CI shows no mypy errors while my fresh installation of the project reported a number of them. Only then did I run
make allrun uv sync --upgrade && make allrun check-typesand saw it pass. The upgrade bumped my mypy version. A lockfile would eliminate that scenario in the first place and be a source of truth regarding what versions of tools are used by everybody.Having a lockfile will work with our tests against different resolutions and even potentially speed up CI by not re-resolving already resolved deps. Of course,
uv syncwill ignore the lockfile when explicitly given a different resolution than the one used to produce the lockfile, showing a message likeAs a bonus, we may want to set
--exclude-newerinsyncin CI to the datetime of the examined git revision to fully make sure the runs are roughly reproducible at all times. But we'd still want to see CI without--exclude-newerto catch stuff.