Современный Python-проект: что обязательно должно быть в конфигурации
Типизация работает лучше всего тогда, когда проект правильно настроен. И это как раз то, что складывается в основу чек-листа.
Первое, с чего начинается современный проект – это структурированная конфигурация.
🔹 1. pyproject.toml как главный файл настроек
Сегодня это стандарт де-факто. В нём описываются зависимости, линтеры, форматтеры и статические анализаторы.
Минимальный пример:
[project]
requires-python = ">=3.12"
[tool.mypy]
strict = true
python_version = "3.12"
Такая конфигурация включает строгий анализ и снижает вероятность появления “скрытых” ошибок типов.
🔹 2. Обязательные инструменты: mypy/pyright, ruff, black
Современный стек выглядит так:
• pyright → очень быстрый анализатор
• mypy → глубокий строгий анализ
• ruff → быстрый линтер, заменяющий flake8 + isort
• black → стабильное форматирование
Пример настройки ruff:
[tool.ruff]
line-length = 100
target-version = "py312"
🔹 3. CI — проверка типов как обязательный этап
Каждый Pull Request должен прогоняться через статический анализ:
mypy src/
pyright
ruff check .
pytest
Таким образом ошибки ловятся до того, как код попадёт в ветку разработки.
Эти базовые инструменты – фундамент типизированного проекта.
➡️ В следующем посте – как должны выглядеть сами аннотации и код с типами (следите за обновлениями и поддержите канал через boost)