Вы можете использовать autopep8 ! Пока вы делаете себе чашку кофе, этот инструмент удачно устраняет все те надоедливые нарушения PEP8, которые не меняют смысла. кода.
Установите его через pip:
pip install autopep8
Примените это к конкретному файлу:
autopep8 py_file --in-place
или вашему проекту (рекурсивно), подробный вариант дает вам некоторую обратную связь о том, как это происходит :
autopep8 project_dir --recursive --in-place --pep8-passes 2000 --verbose
Примечание: иногда 100 проходов по умолчанию недостаточно, я устанавливаю его на 2000, поскольку он достаточно высокий и будет перехватывать все, кроме наиболее проблемных файлов (он перестает проходить, как только не находит разрешаемых нарушений pep8) ...
На этом этапе я предлагаю повторно протестировать и выполнить фиксацию!
Если вы хотите «полного» соответствия PEP8: одна из тактик, которую я использовал, - запустить autopep8, как указано выше, затем запустить PEP8, который распечатает оставшиеся нарушения (файл, номер строки и т. Д.):
pep8 project_dir --ignore=E501
и вручную изменить их по отдельности (например, E712s - сравнение с логическим значением).
Примечание: autopep8 предлагает --aggressive
аргумент (чтобы безжалостно "исправить" эти изменяющие смысл нарушения), но будьте осторожны, если вы действительно используете агрессивный режим, вам, возможно, придется отлаживать ... (например, в numpy / pandas, True == np.bool_(True)
но не True is np.bool_(True)
!)
Вы можете проверить, сколько нарушений каждого типа (до и после):
pep8 --quiet --statistics .
Примечание: я считаю, что E501 (слишком длинная строка) - это особый случай, поскольку их, вероятно, будет много в вашем коде, и иногда они не исправляются с помощью autopep8.
В качестве примера я применил эту технику к базе кода pandas .