Open
Description
An incredibly useful tool I've become accustomed to with Poetry/PDM is the use of a tool/plugin to sync the tagged pre-commit repo versions with the versions of the tools in the lockfile
See: https://github.com/GabDug/sync-pre-commit-lock
- implemented as plugin for Poetry/PDM that runs when
<poetry / pdm> lock
is called - configured via
pyproject.toml
See: https://github.com/floatingpurr/sync_with_poetry | https://github.com/floatingpurr/sync_with_pdm
- implemented as pre-commit hook written in Python
- configured with CLAs +
.pre-commit-config.yaml
This way, whenever a tool version is updated the developer doesn't have to manually update the pre-commit config to keep the versions in-sync, especially sync pre-commit autoupdate
will only update to the latest repo versions, which might conflict with the actual tool versions pinned by UV
Possibly related to: #17
Activity
nathanjmcdougall commentedon Nov 19, 2024
Personally I'm thinking
sync-pre-commit-lock
is the best place for this functionality to live:GabDug/sync-pre-commit-lock#42
Most of the time, the recommendation is not to install a pre-commit tool both in the
venv
and as a pre-commit hook. But in some cases, it seems unavoidable, e.g. when wanting to use the ruff VS Code extension - it will look at the venv for a ruff install, otherwise it will default to some random version. So in such a case it really needs to be declared both as a dev dependency and a pre-commit hook - so ideally there would be some syncing logic.As a workaround, in the interim, I am using the hacky technique of using
uv run
via a system hook. This isn't compatible with thepre-commit.ci
bot framework though, also the hook will display a nasty warning when the hooks fails about the fact that the wrong venv is activated. Presumably there are other disadvantages.