Files
ripe-cidr-collector/docs/plan-pin-dependencies.md
ayurishchevandClaude Sonnet 5 c99665542a Pin dependency versions and add constraints.txt
Exact versions for direct dependencies, full pip freeze of the tested
image as constraints, both Dockerfiles install with -c constraints.txt.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-21 07:47:02 +03:00

26 lines
2.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# План: закрепление версий зависимостей (п. 1.2 рекомендаций)
## Цель
Сборка образа и запуск тестов воспроизводимы: завтрашняя сборка использует те же версии библиотек, что и сегодняшняя (риск 2 анализа). Обновление библиотек становится осознанным действием.
## Дизайн
- **Версии берутся из образа, на котором сейчас проходят 18 тестов** (`pip freeze` в контейнере, Python 3.11), поэтому поведение не меняется.
- `requirements.txt` и `requirements-dev.txt`: только прямые зависимости с точной версией (`==`), файлы остаются читаемыми.
- прод: `requests`, `fastapi`, `uvicorn`, `APScheduler`;
- разработка: `pytest`, `httpx`.
- `constraints.txt` (новый): полный список всех установленных пакетов, включая транзитивные (`starlette`, `pydantic`, `urllib3` и др.). Оба Dockerfile ставят пакеты с `-c constraints.txt`, поэтому закреплены и косвенные зависимости.
- Базовый образ `python:3.11-slim` не закрепляется по дайджесту (патчи безопасности Python приходят автоматически); это осознанный компромисс, указан в README.
- Порядок обновления (в README): поднять версии в контейнере, прогнать тесты, обновить `constraints.txt` из `pip freeze`, коммит.
## Изменения
1. `requirements.txt`, `requirements-dev.txt`: точные версии.
2. `constraints.txt`: новый файл.
3. `Dockerfile`, `Dockerfile.test`: копирование `constraints.txt`, установка с `-c`.
4. `README.md`: ручная установка с `-c constraints.txt`, порядок обновления версий.
5. Тестов не добавляется (код не меняется).
## Проверка
- Сборка обоих образов, 18 тестов проходят.
- В прод-образе `pip freeze` совпадает с закреплёнными версиями (нет лишних пакетов вроде `pytest`).
- Импорт `api_server` и `collector_daemon` в прод-образе.