Используйте крючок предварительной фиксации для black с несколькими языковыми версиями для python

#python #git #pre-commit-hook #pre-commit #pre-commit.com

Вопрос:

Мы используем предварительную фиксацию для форматирования нашего кода Python с использованием черного цвета со следующей конфигурацией в .pre-commit-config.yaml :

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

Поскольку наши пакеты тестируются и используются в различных версиях Python (например 3.7 , 3.8 , 3.9 ) Я хочу иметь возможность использовать крючок предварительной фиксации в разных версиях Python. Но при фиксации кода , например, на Python 3.8 , я получаю ошибку из language_version -за моей конфигурации (см. Выше):

 C:UsersFooBarDocumentsProgrammierungfoo (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:UsersFooBar.cachepre-commitpre-commit.log
 

Как я могу включить крючок предварительной фиксации в разных версиях Python, например, только в Python 3?

Заранее спасибо!

Комментарии:

1. Я мог бы решить эту проблему с помощью language_version: python3 !

Ответ №1:

одним из способов было бы установить language_version: python3 (раньше это было по умолчанию black ) — фактическое language_version использование там не имеет большого значения, поскольку black не использует его для выбора целевого языка форматирования (это отдельная опция).

как правило, однако, вам не нужно устанавливать language_version либо (1) сам крючок установит правильный, либо (2) по умолчанию он будет соответствовать вашему текущему python

примечание также: вы используете дважды устаревший URL-адрес для черного-теперь он psf/black

__

отказ от ответственности: Я создал предварительную фиксацию, и я черный участник

Комментарии:

1. Спасибо за ваш ответ и подсказку о новейшей конфигурации. Теперь это работает как заклинание!

2. Возможно, вы также могли бы добавить конфигурацию в свой ответ: black.readthedocs.io/en/stable/integrations/…