Вопрос с собеседования · Python

Как подключить проверку типов mypy или pyright к проекту?

JuniorОкружение и инструменты
Ещё спрашивают так:
  • Что такое mypy?
  • Как читать ошибки mypy?
Коротко

mypy и pyright — статические анализаторы: читают код и аннотации без запуска и находят несоответствия типов (передали str вместо int, забыли проверить None, вызвали несуществующий метод). Ставят как зависимость разработки, настраивают в pyproject.toml и запускают в CI, чтобы ошибки не попадали в основную ветку. Строгость повышают постепенно: сначала новые модули, потом весь проект.

  • Код без аннотаций mypy по умолчанию почти не проверяет
  • Для библиотек без типов ставят пакеты stubs (types-requests)
  • # type: ignore[код] — точечное отключение с указанием причины

А ещё pyright встроен в редакторы (Pylance) и показывает ошибки прямо при наборе

Подробно

Настройка:

[tool.mypy]
python_version = "3.12"
strict = true
mypy src/

Пример ошибки:

app.py:12: error: Item "None" of "dict[str, str] | None" has no attribute "get"

Значит, функция может вернуть None, а код использует результат без проверки. Исправление — проверить на None или изменить контракт функции.

Внедрение в существующий проект: включить проверку в CI без strict, исправить ошибки, затем включать strict по модулям.

Что хотят услышать

  • Статическая проверка без запуска.
  • Настройка и запуск в CI.
  • Stubs и постепенное внедрение.

Проверьте себя

Один верный вариант. Подумайте, потом откройте ответ.

Показать варианты и ответ
  • ✗mypy проверяет типы при выполнении программы и одинаково строго разбирает даже код без всяких аннотаций
  • ✗mypy запускают только вручную на ноутбуке разработчика
  • ✗pyright работает только внутри VS Code
  • ✓Анализатор проверяет код без запуска; ставится как dev-зависимость, настраивается в pyproject.toml, идёт в CI

Разбор темы

Связанные вопросы

Партнёр платформы

Разбор собеседования с sotto

После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.

Разбор собеседования