Невозможно установить / использовать ручки с помощью yapf (средство форматирования python от Google)

#python #formatter #pep8 #pep8-checker

#python #форматировщик #pep8 #pep8-проверка

Вопрос:

Недавно я пытался ознакомиться с Google / yapf. Но почему-то я не могу настроить .style.yapf и даже setup.cfg . Я не уверен, где разместить эти файлы. В настоящее время я использую любой / или оба файла в моем текущем каталоге, но глобальные настройки всегда переопределяют мои .style.yapf/setup.cfg файлы. Может кто-нибудь, пожалуйста, помогите мне, я не получаю ожидаемых результатов, используя их ручки с примерами примеров, приведенных на github / yapf

Ответ №1:

Из документов:

YAPF будет искать стиль форматирования следующим образом:

  1. Указано в командной строке
  2. В разделе [style] a .style .файл yapf либо в текущем каталоге, либо в одном из его родительских каталогов.
  3. В разделе [yapf] файла setup.cfg либо в текущем каталоге, либо в одном из его родительских каталогов.
  4. В файле ~/.config/yapf/style в вашем домашнем каталоге.

Если ни один из этих файлов не найден, используется стиль по умолчанию (PEP8).

Если я использую следующий ввод Python для тестирования:

 class Example: # This is an example
    def __init__(self):
        pass
  

Запуск yapf example.py не приводит к изменениям:

 class Example:  # This is an example
    def __init__(self):
        pass
  

Но если я создам .style.yapf в текущем каталоге следующий контент:

 [style]
SPACES_BEFORE_COMMENT=5
BLANK_LINE_BEFORE_NESTED_CLASS_OR_DEF=true
  

И затем повторный yapf example.py запуск, я получаю:

 class Example:     # This is an example

    def __init__(self):
        pass
  

Если бы я хотел, чтобы эти изменения применялись глобально, я бы создал вместо ~/.config/yapf/style этого тот же контент.

Я также мог бы создать файл с именем setup.cfg в текущем каталоге (или родительском) со следующим содержимым:

 [yapf]
SPACES_BEFORE_COMMENT=5
BLANK_LINE_BEFORE_NESTED_CLASS_OR_DEF=true
  

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

1. Могу ли я использовать это с FormatCode или FormatFile с in_place параметром, установленным в True ?

2. Из документов похоже, что вам нужно передать явное style_config значение любому из этих методов, но если вы посмотрите на исходный код , вы можете увидеть, как это делает инструмент командной строки.