Навигация по курсу:
Начнем!
Ресурсы:
- https://pre-commit.com
Будь то работа, свидание или обещание другу, мы думаем, прежде чем взять на себя обязательства, тогда почему в наших проектах мы берем на себя обязательства безрассудно и превращаем наш проект в кошмар для кого-то нового? В Python есть рекомендации pep8, которым большинство из нас хотят следовать и, возможно, даже имеют в виду, но зачем соревноваться с компьютером в запоминании? Чтобы упростить процесс разработки, мы можем использовать перехватчики перед фиксацией, которые проверят наш код на предмет необходимого форматирования, соблюдения рекомендаций pep8, проверок безопасности и многого другого.
Добавление форматора кода, например Black
Black, форматирует наш код, придавая ему единообразный стиль. Правила черного форматирования — это расширенный набор Python. Давайте посмотрим на очень простой пример.
после того, как black форматирует наш код
Обратите внимание, как он устранил пробелы после оператора '=' и длины строки > 79. Мы не будем устанавливать black. Вместо этого мы сохраним его как часть нашего конвейера предварительной фиксации. Для этого сначала нам нужно установить pre-commit. Давайте изменим наш файл requiremets.txt и установим требования, используя
pip install -r requirements.txt
Теперь нам нужно добавить файл конфигурации, в котором мы укажем все, что нам нужно в нашем конвейере предварительной фиксации. Для этого нам нужно создать .pre-commit-config.yaml файл.
Поместите следующее в содержимое этого файла и сохраните. Это минимальная конфигурация.
Запустите pre-commit install настройку гит-хуков. Вы должны увидеть это сообщение «предварительная фиксация установлена в .git\hooks\pre-commit». Теперь каждый раз, когда вы пытаетесь сделать коммит, ваш код будет переформатирован.
Добавление линтера проверки кода, например Flake8.
Линтер — это инструмент для статического анализа кода, используемый для выявления ошибок программирования, ошибок, стилистических ошибок и подозрительных конструкций. Например, он сообщит нам, что «бесполезный импорт со стороны администратора» или «переменная объявлена, но никогда не используется». Эти мелочи могут действительно помочь как разработчику, так и тестировщику, тк когнитивных перегрузок будет гораздо меньше. Кроме того, наша кодовая база станет чище. Чтобы включить Flake8, добавьте эти строки в файл .pre-commit-config.yaml
Однако в большинстве случаев такой конфигурации flake8 недостаточно. Часто мне хочется исключить некоторые файлы, изменить max_line_length или игнорировать некоторые ошибки. В этом случае мы можем создать файл setup.cfg или файл .flake8 для предоставления дополнительных конфигураций. Я предлагаю файл setup.cfg, поскольку это общий файл конфигурации. По сути, позже, если вы захотите добавить дополнительные перехватчики, подобные flake8, вы можете добавить их конфигурацию в setup.cfg. Это, например, файл setup.cfg, в котором находится наш .pre-commit-config.yaml файл.
Каждый раз, когда вы совершаете black Flake8 переформатирует и проверит ваши файлы. Чтобы избежать перехватов перед фиксацией, используйте:
git commit -m "my message" --no-verify
Добавление автоматического переупорядочения импорта.
Чтобы включить переупорядочение импорта, мы можем использовать переупорядочение импорта, сортировку и т. д. Python. Это дополнительная конфигурация yaml.
Теперь каждый раз, когда мы совершаем коммит, эти перехватчики будут очищать многие вещи в нашей кодовой базе.
Чтобы запустить наши перехватчики перед фиксацией для всей базы кода, мы можем ввести
pre-commit run --all-files
Внимание: это может изменить некоторые вещи в кодовой базе, и будет сложно просмотреть коммит. Возможно, вам придется исправить несколько строк кода и импорта, чтобы ваш git зафиксировался. Вот пример в моей системе: до тех пор, пока я не исправлю этот неиспользуемый импорт, flake8 не позволит мне зафиксировать мой код.
После этого я исправляю все проблемы, добавляю gid и затем фиксирую.
Так, с кодом разобрались... В следующей статье будем делать авторизацию пользователей.
Читайте также: Часть 13 (Создание системы авторизации пользователей)
.
❤️ Если вам понравилась статья, ставьте лайк и подписывайтесь на мой канал (Заходи в Ай-Ти).
👍 Если у вас остались вопросы или есть интересные темы, которые вы хотите, чтобы я разобрал, то пишите в комментариях. Ваше мнение очень важно для меня!
#fastapi #fastapi python #fastapi sqlalchemy #pre commit #flake8 python #pre commit python #flake8