I am having trouble with pre-commit and black.
Everything worked fine until I cleared the cache with
pre-commit clean. Now I always get the error
blackrequires pre-commit version 2.9.2 but version 2.6.0 is installed. Perhaps run `pip install –upgrade pre-commit
If I check my version I am running the latest pre-commmit version (v2.12.1). Also, if I run the recommended command, nothing changes and I get the same error. If I deactivate the
black hook the error disappears, so I at least know it’s a problem with black.
I tried changing version of black from
stable to the most recent, but nothing helps.
Any ideas how I can do to troubleshoot this?
My pre-commit config:
- repo: https://github.com/ambv/black rev: stable hooks: - id: black language_version: python3.8 exclude: | (?x)( migrations/| config/| _build/| buck-out/| build/| dist/ )
Help is greatly appreciated
rev: stable is not a supported configuration — when you run you’ll also get a warning telling you exactly that:
$ pre-commit run black --all-files [WARNING] The 'rev' field of repo 'https://github.com/ambv/black' appears to be a mutable reference (moving tag / branch). Mutable references are never updated after first install and are not supported. See https://pre-commit.com/#using-the-latest-version-for-a-repository for more details. Hint: `pre-commit autoupdate` often fixes this. ...
the warning also tells you the rationale for this and explains the behaviour you saw: mutable references are never updated after first install — so the version in your cache was from an old old version of black and when you cleared it that got updated to the latest
the latest version of black uses
types_or in its definition which requires a newer version of
an aside, your
exclude isn’t doing what you want —
pre-commit only runs on files which are checked into your repository so excluding things like
_build isn’t necessary
to fix the actual error message you’re seeing, make sure to
pip install --upgrade pre-commit (and ~potentially
pre-commit install to reset the git hooks if you’ve moved where pre-commit was installed from the first time) —
which -a pre-commit can help you locate all of your installations
disclaimer: I am the creator of pre-commit