Fix deprecated=False override precedence for included routes by dipenpadhiyar · Pull Request #15183 · fastapi/fastapi
Summary
Fix deprecated precedence when including routers so an explicit deprecated=False
on a route is not overridden by a parent app or router with deprecated=True.
This aligns behavior with expected precedence: route-level configuration should
override parent settings.
Repro
from fastapi import FastAPI, APIRouter child = APIRouter() @child.get("/x", deprecated=False) def x(): return {"ok": True} app = FastAPI(deprecated=True) app.include_router(child) assert "deprecated" not in app.openapi()["paths"]["/x"]["get"]
Changes
Preserve explicit non-None deprecated values when merging route, router, and app settings
Add a regression test for deprecated=False overriding parent deprecated=True