Рубрики
Без рубрики

Автоматизируйте чистый код и лининг в Python

Мы рассмотрим некоторые пакеты, чтобы форматировать, провести, проверить наш код, а затем создать крюк перед набором … Tagged с помощью Python, Programming, Codenewbie, 100daysOfCode.

Мы рассмотрим некоторые пакеты для форматирования, пробега, проверки нашего кода, а затем создать предварительный крюк для автоматизации процесса.

Прежде чем поговорим о пакетах, которые мы будем использовать, давайте посмотрим на файлы 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”