Многие разработчики Python сталкиваются с необходимостью улучшения качества кода и повышения его устойчивости к ошибкам. Одним из эффективных способов достижения этих целей является статическая типизация. В данном контексте инструмент mypy становится незаменимым помощником. В этом разделе мы рассмотрим, как интегрировать mypy в ваш рабочий процесс, чтобы обеспечить надежность и понятность вашего кода.
Чтобы начать работу с mypy, первое, что нужно сделать, - это добавить его в ваш проект. Вы можете установить mypy с помощью пакетного менеджера pip:
pip install mypy
После установки рекомендуется создать файл конфигурации mypy. Хорошей практикой является создание файла под следующими названиями:
mypy.ini
.mypy.ini
pyproject.toml
setup.cfg
Вот пример файла конфигурации:
[mypy]
files = src/**/*.py # Путь к исходным файлам, которые будут проверяться mypy
ignore_missing_imports = True # Игнорировать ошибки отсутствия импортов
strict = True # Включить строгий режим проверки
disallow_untyped_defs=True # запрещает объявлять функции без аннотации типов
no_implicit_optional=True # без этой опции аргументы функции могут иметь тип None в качестве параметра по-умолчанию. С этой опцией такое неявное поведение запрещено, а гарантии типов сохранены
warn_return_any=True # С этой опцией mypy предупреждает, если в качестве возвращаемого типа было указано Any
check_untyped_defs=True # проверяет корректность типизации в функции без аннотаций. По-умолчанию mypy закрывает глаза на все, что происходит внутри таких функций. С этой опцией он проверяет корректность типизации всех операций и вызовов внутри;
warn_unreachable=True # сообщает, если какой-то кусок кода никогда не выполнается. Если так случилось, вероятно была допущена ошибка в проверке условий.
После настройки mypy вы можете запускать его через командную строку, просто введя команду:
mypy .
Эта команда начнет проверку типов во всех ваших файлах Python и выведет результаты на экран. Если mypy обнаружит несоответствия, он предоставит полезную информацию о том, где именно в коде произошла ошибка. Вы увидите сообщение об ошибке, а также строку и номер файла, где эта ошибка возникла.
Ошибки могут быть очень разнообразными: от несоответствия ожидаемого и фактического типов до отсутствия аннотаций для функций и классов. Разработчики должны внимательно рассмотреть каждую ошибку и внести соответствующие изменения в код. Например, как только вы добавите аннотации типов в свои функции, mypy начнет распознавать, что ожидалось, и указывать на те случаи, когда фактический тип не совпадает.
def add_numbers(a: int, b: str) -> int:
return a + b # Ошибка: попытка сложить int и str
Запустив mypy, вы получите указание на ошибку, что позволит вам быстро посмотреть на функцию и внести необходимые изменения, чтобы гарантировать корректность работы.