为 python 使用多种语言版本的黑色预提交挂钩

Use pre-commit hook for black with multiple language versions for python

我们在 .pre-commit-config.yaml 中使用具有以下配置的 pre-commit to format our Python code using black

repos:
  - repo: https://github.com/ambv/black
    rev: 20.8b1
    hooks:
      - id: black
        language_version: python3.7

由于我们的软件包是针对不同的 Python 版本进行测试和使用的(例如 3.73.83.9),我希望能够使用 pre -commit 挂钩不同的 Python 版本。但是在提交代码时,例如在 Python 3.8 上,由于我的配置中的 language_version 出现错误(见上文):

C:\Users\FooBar\Documents\Programmierung\foo (dev -> origin)
λ git commit -m "Black file with correct black version"
[INFO] Initializing environment for https://github.com/ambv/black.
[INFO] Installing environment for https://github.com/ambv/black.
[INFO] Once installed this environment will be reused.
[INFO] This may take a few minutes...
An unexpected error has occurred: CalledProcessError: command: ('c:\users\FooBar\anaconda\python.exe', '-mvirtualenv', 'C:\Users\FooBar\.cache\pre-commit\repobmlg3b_m\py_env-python3.7', '-p', 'python3.7')
return code: 1
expected return code: 0
stdout:
    RuntimeError: failed to find interpreter for Builtin discover of python_spec='python3.7'

stderr: (none)
Check the log at C:\Users\FooBar\.cache\pre-commit\pre-commit.log

如何在不同的 Python 版本上启用预提交挂钩,例如仅在 Python 3?

提前致谢!

一种方法是设置 language_version: python3(这曾经是 black 的默认设置)——您在那里实际使用的 language_version 并不重要,因为black 不使用它来选择格式化的语言目标(这是一个单独的选项)

不过,一般来说,您不需要将 language_version 设置为 (1) 挂钩本身会设置一个合适的,或者 (2) 它会默认为您当前的 运行 python

另请注意:您使用的是已弃用两次的 url 黑色 - 现在是 psf/black

__

免责声明:我创建了预提交并且我是黑人贡献者