10 пакетов Python, которые улучшат вашу кодовую базу
Нашли 10 топовых инструментов для программирования на Python, которые сделают код чище и эффективнее.
15К открытий58К показов
Data Scientist’ы и разработчики тратят немало времени на отладку кода, чтобы сделать его более эффективным и простым в дальнейшем использовании. Пользователь Medium нашел 10 пакетов Python, которые повысили его продуктивность в работе. Рассказываем, как они помогают автоматизировать форматирование кода и тестировать его на выявление ошибок на первых этапах.
Black
Это инструмент, который одновременно выявляет ошибки и форматирует код на Python. В сообществе питонистов уже давно есть PEP8, оформляющий код в едином стиле, и пойти против него — практически преступление. Black менее красивый, но при этом более консистентный, плюс его нельзя конфигурировать. Об этом даже написано в readme.md пакета:
By using it, you agree to cede control over minutiae of hand-formatting. In return, Black gives you speed, determinism, and freedom from pycodestyle nagging about formatting. You will save time and mental energy for more important matters.
Используя его, вы соглашаетесь больше не контролировать форматирование вручную. Взамен Black «обещает» скорость, определенность и свободу от придирчивого отношения к стилю pycodestyle. Тем самым вы экономите свое время и силы для более важных дел.
Форматирование кода крайне важно при работе над крупными проектами и в больших командах — код будет в разы проще читать, равно как и выявлять ошибки.
Для установки вводим в командную строку:
А чтобы сразу приступить к работе с дефолтными настройками, прописываем:
MyPy
MyPy — инструмент статической проверки типов, который поддерживает и динамическую типизацию (duck typing). Он помогает выявлять ошибки несоответствия типов в коде до его выполнения, повышает надежность программы, а еще — поддерживает другие библиотеки и разные режимы проверки типов.
Для установки вводим:
Пример кода с ошибками, который проверяет работу MyPy:
Вывод будет такой:
Pydantic
Популярная библиотека для проверки данных и управления настройками. Внутри — интуитивно понятный синтаксис и user-friendly инструменты, которые проверяют данные на достоверность и соответствие заданным типам и ограничениям.
Pydantic определяет структуру данных декларативным способом с помощью аннотаций типов Python, а также использует схему JSON для интеграции инструментов и проверяет стандартные типы библиотек с помощью TydepDicts.
Вот простой пример, как работает Pydantic:
Здесь можно увидеть, как использование библиотеки Pedantic уменьшило размер кода и сделало его более понятным за счет того, что в нежелательном кастомном методе validate()
особо нет необходимости.
Hypothesis
Это мощная библиотека Python для property-based тестирования, которая генерирует тестовые данные в соответствии с определенными правилами (strategies). Основная идея заключается в том, чтобы задать общие свойства программы, а Hypothesis автоматически сгенерирует множество входных данных для проверки этих свойств.
Библиотека интегрируется со многими популярными утилитами для тестирования, например, с pytest и unittest.
Установка:
Вот пример простого кода с ошибкой деления на 0, которую проверяет «Гипотеза»:
Тест выдаст следующее:
Pre-commit
Классный фреймворк Python для управления многоязычными прекоммитами и их поддержки. Он определяет набор проверок и преобразований, которые выполняются в вашем коде автоматически перед каждым коммитом.
Для установки:
Вот как это работает:
- Создаем файл .pre-commit-config.yaml в корневой структуре проекта:
- Устанавливаем скрипты Git-хуков:
- Сам коммит-код:
Pre-commit автоматически проверит код на ошибки и исправит их.
Vulture
Пакет Python, который выявляет мертвый код в ваших проектах и выдает подробный отчет.
Мертвый код — код, который никогда не использовался и не выполнялся, он может накапливаться с течением времени, но при этом не несет никакой пользы.
Устанавливаем:
Работает это так:
Isort
Утилита командной строки и одновременно библиотека, которая упрощает жизнь разработчикам. Она сортирует import Python — упорядочивает и делает его более читабельными, группируя по типу (стандартная библиотека, сторонние и локальные) и выстраивая в алфавитном порядке внутри каждой группы.
Для установки:
Пример до и после использования Isort:
PyDocstyle
Утилита проверяет, соответствует ли ваши docstrings стандарту PEP 257. Это стиль, который упорядочивает высокоуровневую структуру таких строк — что они должны содержать и как их писать (при этом он не затрагивает синтаксис в самих строках).
Для установки:
Затем пишем это и проверяем свой код:
Вывод будет следующий:
Bandit
Программа проверяет безопасность кода. Она ищет наиболее частые проблемы в приложениях на Python.mlt, анализирует AST (абстрактное синтаксическое дерево) и запускает набор плагинов для выявления ошибок.
Код, который проверял автор статьи на ошибки безопасности:
Вот какой результат выдал «Бандит»:
Radon
Пакет Python, который анализирует исходный код и вычисляет различные метрики, включая Cyclomatic Complexity (CC), Maintainability Index (MI), Raw metrics (SLOC, комментарии, пустые строки), и Halstead metrics. Radon помогает найти слишком сложные части кода, которые можно упростить, а также выдает отчеты для документирования и проверки кода. Пакет особенно полезен в больших проектах, когда код должен быть качественным, отлаженным и системным.
Устанавливаем:
Код, который автор статьи тестировал на сложность:
Для теста: random cc code.py
Чтобы эффективнее использовать Radon, можно создать файл конфигурации random.cfg — так будет проще управлять действиями пакета:
Эта конфигурация исключает определенные каталоги и устанавливает минимальные пороговые значения для Cyclomatic Complexity and Maintainability Index.
Конечно, это далеко не все фичи, которые будут действительно полезны питонистам. Если у вас есть другие крутые решения — приносите в комментарии.
15К открытий58К показов