История изменений¶
Здесь описаны все заметные изменения проекта.
Формат основан на Keep a Changelog, проект придерживается семантического версионирования.
0.5.0 — 2026-10-21¶
Добавлено¶
versionize(app, version)объявляет версию субприложения — заменаFastAPI(api_version=N), который FastAPI 0.145+ не принимает. Функция возвращает то же приложение, поэтому работаетapp.mount("/v1", versionize(FastAPI(), 1)); неверные типы аргументов даютTypeError, а объявление приложения другой версией —ValueError.
Изменено¶
- Ломающее. Снята верхняя граница
<0.145из 0.4.2 — FastAPI 0.145+ снова поддерживается. Свежая установка теперь может подтянуть FastAPI 0.145+, гдеFastAPI(api_version=N)падает сTypeError: переведите объявления наversionizeдо обновления или закрепитеfastapi<0.145. См. миграцию с 0.4.x.
Устарело¶
FastAPI(api_version=N)иAPI_VERSION_KEY. Ключевой аргумент продолжает работать на FastAPI < 0.145, если приложение не объявлено черезversionize; егоFutureWarningтеперь называет затронутые маунты и указывает наversionize. Оба будут удалены вместе с поддержкой FastAPI < 0.145.
0.4.2 — 2026-10-21¶
Изменено¶
- Для FastAPI добавлена верхняя граница
<0.145: в этом релизе удалёнFastAPI(**extra), а вместе с ним и объявлениеFastAPI(api_version=N), на котором держится библиотека. - Ограничение сборочного бэкенда расширено до
uv_build>=0.8.3,<0.14.0.
Устарело¶
- Объявление версии через
FastAPI(api_version=N)теперь выдаётFutureWarning. На FastAPI < 0.145 оно продолжает работать; в 0.5.0 его заменит новый интерфейс, который поддерживает и FastAPI 0.145+.
Исправлено¶
- На FastAPI 0.143.1+ версионированный WebSocket-эндпоинт из подключённого роутера падал с «Versioning is not initialized» в своей версии и наследовался без include-префикса и include-зависимостей.
- Роуты, унаследованные из подключённого роутера, сохраняют его
strict_content_type: раньшеAPIRouter(strict_content_type=False)в новых версиях снова становился строгим.
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-схемы каждой версии.