Мы рассмотрим некоторые пакеты для форматирования, пробега, проверки нашего кода, а затем создать предварительный крюк для автоматизации процесса.
Прежде чем поговорим о пакетах, которые мы будем использовать, давайте посмотрим на файлы Python, с которыми мы будем работать с
У нас есть функция, называемая helpers.py
Он имеет простые арифметические функции. Все функции принимают два параметра и выполняют арифметическую операцию.
У нас есть еще один файл с именем tester_helpers.py
Этот файл просто проверяет функции, которые мы определили ранее. Он использует Assert, чтобы сделать простую проверку равенства.
Теперь давайте посмотрим на пакеты, которые мы будем использовать.
Тестирование 🧪
Pytest 7.7k+ ⭐
Этот пакет помогает нам запустить модульные тесты. Одним из требований иметь в виду, что ваш файл Python, содержащий модульные тесты, должен начинаться с «test_».
Поддерживаются только утверждения утверждения. Чтобы установить пакет
pip install pytest
Чтобы запустить модульные тесты, введите следующие команды
pytest test_helpers.py
Если все ваши тесты пройдут, вы должны увидеть аналогичный вывод
test_helpers.py .... [100%] ========= 4 passed in 0.01s ===========
Если вы получите ошибку, связанную с несколькими относительным импортом
astroid.exceptions.TooManyLevelsError:
Это, вероятно, проблема с одной из зависимостей Pytest. Вам придется удалить астроиду и установить его снова. Это обеспечивает установку альтернативной астроидной версии.
pip uninstall astroid pip install astroid
После этого нам придется удалить Pytest и установить Pytest
pip uninstall pytest pip install pytest
Форматирование ✍
Yapf 12k+ ⭐ ️
Это было разработано Google и поддерживает форматирование на месте. Чтобы установить пакет
pip install yapf
Чтобы форматировать ваши файлы, введите следующее
yapf --in-place *.py
Это отформатирует все ваши файлы Python вашего верхнего уровня, если вы хотите включить папки, вы также можете использовать следующее
yapf --in-place **/*.py
Тем не менее, это также будет включать нашу папку виртуальной среды. Чтобы игнорировать папку Venv, просто создайте файл .yapfignore и добавьте в нее Venv.
Примечание: эта команда может занять некоторое время. Вместо «**» вы можете использовать конкретные имена папки.
Isort 4.1k+ ⭐
Эти пакеты сортируют ваши импортные заявления, чтобы убедиться, что они следовали правилам PEP8.
Импорт должен быть сгруппирован в следующем порядке:
- Стандартный импорт библиотеки.
- Связанный сторонний импорт.
- Локальное приложение/библиотека, специфичный импорт.
Изорт реорганирует заявления импорта, чтобы обеспечить соблюдение вышеупомянутого правила. Чтобы установить пакет
pip install isort
Запустить Isort
isort .
Автофляк 400+⭐
Это помогает избавиться от неиспользованного импорта, переменных и ключей объекта.
Чтобы установить пакет
pip install autoflake
Запустить автофляцию
autoflake --in-place --remove-unused-variables --remove-all-unused-imports *.py
Некоторые другие форматеры
Linting 🔎
Pylint 3.5k+ ⭐
Pylint гарантирует, что ваш код соблюдает правила и стандарты PEP8. Это дает каждому файлу Python оценку из 10 (он также может дать вам отрицательный результат)
Чтобы установить пакет
pip install pylint
Запустить Линтер
pylint --fail-under=7 *.py
Аргумент -Файл-ander
Это нижняя граница, если какой -либо файл имеет оценку ниже нижней границы, будет возвращена ошибка.
Предварительный крюк 🪝
Что такое крючки Git?
Гит -крючки – это в основном сценарии, запускаемые до того, как произойдет важное действие, например, до того, как будет сделан коммит, до того, как код будет отправлен в репо после того, как будет сделан коммит и т. Д. Вы можете узнать больше о Git Hooks и различных видах крючков над Здесь Анкет
Мы сосредоточимся на предварительном крючке. Предварительный крючок-это крючок, который запускается, прежде чем вы совершаете коммит.
Сначала установим пакет
pip install pre-commit
Теперь мы создадим образец предварительного крючного файла yaml, мы отредактируем это позже.
pre-commit sample-config
Теперь давайте добавим наш крюк
pre-commit install
Теперь перед каждым коммитиром будет выполнен предварительный крюк, определенный в нашем файле YAML.
Теперь давайте обновим наш файл YAML. Удалите все и сохраните только следующее
repos: - repo: local hooks:
Мы добавим наши плагины (пакеты) под Крюки:
в файле YAML. Ниже приведен общий синтаксис для плагина
- id: (unique id of hook) name: (name to be displayed in terminal) entry: (command to excute) language: system (for our case, always system) always_run: true (if true, it will always run) pass_filenames: true (if true, hook will have access to the file name)
Давайте определим образец плагина для YAPF
- id: YAPF name: YAPF 🧹 entry: zsh -c 'yapf --in-place *.py' language: system always_run: true pass_filenames: true
Если вы используете Bash или находитесь в Windows, замените ZSH в «запись» на Bash.
Все остальные плагины очень похожи, ниже приведен весь файл YAML со всеми плагинами
Всякий раз, когда вы обновляете свой файл YAML, вам придется добавить файл в зону постановки, используя git add. или git add .pre-commit-config.yaml
Ниже приведен успешный коммит
Вывод
Настройка крючка перед набором обеспечит ваш код соблюдать стандарты PEP8 и правильно отформатирован. Надеюсь, вы нашли статью полезной. Добавьте меня на LinkedIn , Twitter
Оригинал: “https://dev.to/rahulbanerjee99/automate-clean-code-and-linting-in-python-pal”