Как использовать yapf в VSCode
Я установил yapf, используя:
conda install yapf
и добавьте следующие строки в мой .vscode/settings.json
файл:
{
//"python.linting.pylintEnabled": true,
//"python.linting.pycodestyleEnabled": false,
//"python.linting.flake8Enabled": true,
"python.formatting.provider": "yapf",
"python.formatting.yapfArgs": [
" — style",
"{based_on_style: pep8, indent_width: 4}"
],
"python.linting.enabled": true,
}
Но я не могу понять, как его использовать - он не показывает ошибок в плохо отформатированном скрипте:
import pandas as pd
class MyClass(object):
def __init__(self, some_value: int):
self.value = some_value
def one_more_function(self, another_value):
print(another_value)
myObject = MyClass(45)
myObject.one_more_function(2)
my__object2 = MyClass(324)
print('ok')
def some_foo():
"""
"""
pass
4 ответа
Проблема была в неправильных настройках. Для использования yapf, black или autopep8 вам необходимо:
- Установите yapf / black / autopep8 (pip install black)
- Настроить
.vscode/settings.json
следующим образом:
часть файла:
{
"python.linting.enabled": true,
"python.linting.pylintPath": "pylint",
"editor.formatOnSave": true,
"python.formatting.provider": "yapf", // or "black" here
"python.linting.pylintEnabled": true,
}
Ключевой вариант - "editor.formatOnSave": true,
это значит yapf
форматирует ваш документ каждый раз, когда вы его сохраняете.
Расширение
@Mikhail_Sam
отвечать. Вы можете использовать отдельный файл конфигурации, как мне нравится. Таким образом, вы отделяете настройки своего проекта от VS Code IDE. Для этого вам необходимо создать:
type null > .style.yapf (for windows environment)
touch .style.yapf (for MacOS, Linux environments)
Добавьте правила, например:
[style]
based_on_style = google
spaces_before_comment = 4
indent_width: 2
split_before_logical_operator = true
column_limit = 80
Не забудьте удалить из кода VS следующий параметр. Они отменяют
.style.yapf
:
"python.formatting.yapfArgs": [
"--style={based_on_style: google, column_limit: 80, indent_width: 2}"
],
Мои другие настройки VS Code в
settings.json
:
"[python]": {
"editor.defaultFormatter": "ms-python.python",
"editor.formatOnSave": true
},
"python.formatting.provider": "yapf",
"python.formatting.yapfPath": "C:\\ProgramData\\envCondaPy379\\Scripts\\yapf.exe",
"python.formatting.blackPath": "C:\\ProgramData\\envCondaPy379\\Scripts\\black.exe",
"python.linting.lintOnSave": true,
"python.linting.enabled": true,
"python.linting.pylintPath": "pylint",
"python.linting.pylintEnabled": true,
Согласно документации YAPF : YAPF будет искать стиль форматирования следующим образом:
- Указывается в командной строке >> VS Code settings.json
- В разделе [style] файла .style.yapf либо в текущем каталоге, либо в одном из его родительских каталогов.
- В разделе [yapf] файла setup.cfg либо в текущем каталоге, либо в одном из его родительских каталогов.
- В разделе [style] файла ~ / .config / yapf / style в вашем домашнем каталоге.
- Если ни один из этих файлов не найден, используется стиль по умолчанию (PEP8).
Ответ от 2022 года
Если вы предпочитаете «GUI», вы также можете напрямую ввести эти значения в настройках (Файл-> Настройки-> Настройки):
Может быть другая причина.
Об этом коде детали:
import pandas as pd
class MyClass(object):
def __init__(self, some_value: int):
self.value = some_value
def one_more_function(self, another_value):
print(another_value)
myObject = MyClass(45)
myObject.one_more_function(2)
my__object2 = MyClass(324)
print('ok')
def some_foo():
"""
"""
pass
Я напрямую форматирую его с помощью yapf CLI, там написано:
yapf: t.py:12:4: unexpected indent
Это означает:print('ok')
В строке неправильный отступ, из-за чего yapf не работает.
Когда я изменил правый отступ, это сработало.