Перейти к содержанию

История изменений

Здесь описаны все заметные изменения проекта.

Формат основан на Keep a Changelog, проект придерживается семантического версионирования.

0.4.1 — 2026-07-29

Функциональных изменений нет: библиотека ведёт себя ровно так же, как в 0.4.0.

Изменено

  • Docstrings публичного API существенно расширены — теперь в них описаны правила разрешения until, однократность сборки и диагностика ошибок; именно их показывает IDE при наведении. На них же построен новый авто-генерируемый справочник API.
  • Метаданные пакета: заполнены keywords, Homepage переведён с репозитория на сайт документации, добавлены ссылки Issues и Changelog.
  • Ограничение сборочного бэкенда расширено до uv_build>=0.8.3,<0.12.0.

0.4.0 — 2026-07-07

Добавлено

  • WebSocket-роуты версионируются наравне с HTTP: APIWebSocketRoute наследуется между версиями с той же семантикой until, а затенение стало видозависимым — HTTP-роут и WebSocket на одном пути больше не конфликтуют.
  • Валидация api_version и until. Значение api_version не типа int (или bool) и until меньше версии объявления теперь приводят к UserWarning, а не отрабатывают молча.
  • API_VERSION_KEY экспортируется из корня пакета.

Изменено

  • Ломающее. Middleware переписан как чистый ASGI-middleware (без BaseHTTPMiddleware) и строит наследование ровно один раз — при первом ASGI-событии. Роуты и версии, добавленные позже, требуют явного вызова rebuild_versioning(app), ставшего публичным.
  • Ломающее. Каждая наследующая версия получает собственную копию роута с dependency_overrides, привязанными к целевому приложению, вместо общего объекта роута на все версии.
  • Ломающее. Метаданные версии хранятся по роутам в реестре на версионном субприложении, а не через мутацию общего экземпляра зависимости. Роутер, включённый в несколько версий, теперь разрешается корректно.
  • Прекращена поддержка Python 3.9; поддерживаемый диапазон — 3.10–3.14.

Исправлено

  • Поддержан FastAPI 0.137+: обход роутов идёт через публичный итератор iter_route_contexts нового дерева роутинга, поэтому эндпоинты, добавленные через include_router, версионируются вместе с include-префиксами и зависимостями. Версии 0.137.0 и 0.137.1 исключены на уровне зависимости — дерево там уже появилось, а публичный итератор только в 0.137.2.
  • Версия 0 считается допустимой (явные проверки на None вместо проверки на истинность).
  • Приложение, не монтирующее ни одного версионного субприложения, корректно ничего не делает вместо ошибки.

0.3.0 — 2026-07-07

Добавлено

  • Поддержка Python 3.14.

0.2.0 — 2025-10-16

Добавлено

  • Флаг rebuild_openapi у VersioningMiddleware. Со значением False эндпоинты по-прежнему наследуются и обслуживаются, но унаследованные не попадают в OpenAPI-схему и /docs версии.

0.1.0 — 2025-07-27

Добавлено

  • Первый релиз: VersioningMiddleware и зависимость versioning() — одно FastAPI-субприложение на версию, наследование помеченных эндпоинтов из старых версий в новые и перестройка OpenAPI-схемы каждой версии.