Глава 24 · Что дальше? Roadmap Python-разработчика

Software Engineering

Git, review, тестирование, статический анализ, диагностика, упаковка и поставка входят в один рабочий процесс.

Как безопасно менять код

В учебном скрипте иногда достаточно получить верный результат один раз. В проекте нужно ещё и безопасно менять код дальше. Рабочий процесс связывает требования, реализацию, проверку и поставку. Инструменты могут меняться. Требования к процессу остаются: историю изменения можно проследить, отказ можно увидеть, а сборку повторить.

Issueконтекст, границы, критерииBranchизолированное изменениеLocal checkstests, lint, typesPull Requestdiff, review, обсуждениеCI and releaseповторяемая проверка и артефакт
Изменение проходит один и тот же проверяемый путь.

Git и review глубже базовых команд

Изучите чтение истории и diff, ветвление, merge, безопасный rebase локальной ветки, revert, теги и разрешение конфликтов. Цель не в коллекции команд. Вы должны понимать, какой граф коммитов получится и как восстановиться после ошибки. Review проверяет контракт, граничные случаи, тесты, читаемость и операционный риск; стиль кода лучше делегировать автоматическим проверкам.

Тестовая стратегия

Средство pytestЧто моделируетРиск неправильного применения
fixturesЯвную подготовку состояния и ресурсов.Скрытая сложная fixture делает тест непонятным.
parametrizeОдин контракт на наборе входов и границ.Большая таблица может скрыть разные причины отказа.
mock / monkeypatchКонтролируемую границу: время, сеть, процесс, API.Mock внутренних деталей связывает тест с реализацией.
coverageКакие строки или ветви выполнились.Высокий процент не доказывает качество утверждений.

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

Автоматические проверки и диагностика

Ruff может выполнять lint и форматирование, а mypy проверяет согласованность аннотаций. Выберите правила, зафиксируйте их в pyproject.toml и запускайте одинаково локально и в CI. Для дефекта соберите минимальное воспроизведение, прочитайте traceback, поставьте точку останова или добавьте структурированный лог. Профилировщик нужен после измерения проблемы, а не для преждевременной оптимизации.

Пакет, версия и поставка

Проекту нужны ясная структура, метаданные, зависимости, build backend и проверка установки собранного wheel в чистом окружении. Через PyPI публикуют Python-пакеты, но не каждому приложению нужна такая публикация. Semantic Versioning полезен, когда проект объявляет публичный API и может последовательно определить совместимые и несовместимые изменения.

Системный слой

Знания вокруг Python-кода
ПРОТОКОЛЫ
HTTP semantics
status codes
timeouts and retries
идемпотентность
ДАННЫЕ
SQL
схема
индексы
транзакции
миграции
СРЕДА
Linux
shell
processes
permissions
environment variables
БЕЗОПАСНОСТЬ
валидация входа
секреты вне репозитория
минимальные привилегии
обновление зависимостей
CI/CD
повторяемые команды
защищённые секреты
разделение build и deploy
rollback
CONTAINERS
image
runtime config
health check
logs
не путать контейнер и VM
В реальном проекте Python-код взаимодействует с протоколами, данными, ОС и средой эксплуатации.
Официальная документация
pytest documentation
Ruff documentation
mypy documentation
Git reference
GitHub pull requests documentation
logging: Logging facility for Python
The Python Profilers
Python Packaging User Guide
Semantic Versioning 2.0.0
RFC 9110: HTTP Semantics
PostgreSQL documentation
GitHub Actions documentation
Docker Get Started