Как настроить проверку типов mypy в CI/CD для Python-проекта

«Как настроить проверку типов mypy в CI/CD для Python-проекта» — вопрос из категории CI/CD, который задают на 10% собеседований Python Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Интеграция статической проверки типов с помощью mypy в CI/CD пайплайн позволяет автоматически выявлять ошибки типизации до слияния кода в основную ветку. Это повышает надежность и упрощает рефакторинг.

Процесс состоит из трех основных шагов:

  1. Установка mypy Добавьте mypy в зависимости для разработки (например, в requirements-dev.txt).

  2. Настройка CI-пайплайна Добавьте шаг для запуска mypy в конфигурационный файл вашего CI-сервиса. Ниже приведен пример для GitHub Actions:

    # .github/workflows/ci.yml
    name: Python CI
    
    on: [push, pull_request]
    
    jobs:
      lint-and-type-check:
        runs-on: ubuntu-latest
        steps:
          - uses: actions/checkout@v3
          - name: Set up Python
            uses: actions/setup-python@v4
            with:
              python-version: '3.10'
          - name: Install dependencies
            run: |
              pip install -r requirements.txt
              pip install mypy
          - name: Run mypy
            run: mypy .
  3. Конфигурация mypy (опционально) Для более строгого контроля создайте файл mypy.ini или pyproject.toml в корне проекта.

    # mypy.ini
    [mypy]
    python_version = 3.10
    warn_return_any = True
    disallow_untyped_defs = True # Запретить функции без аннотаций
    ignore_missing_imports = True # Игнорировать ошибки для библиотек без типов

Ключевые преимущества:

  • Раннее обнаружение ошибок: Ошибки типов блокируют сборку, не попадая в продакшн.
  • Автоматизация: Проверка выполняется автоматически при каждом коммите.
  • Настраиваемая строгость: Уровень проверок можно гибко настраивать под нужды проекта.