Browse Source

- Fix deprecated parameter handling in APIRouter methods

pull/15183/head
Dipen Padhiyar 4 months ago
parent
commit
be4860907b
  1. 8
      fastapi/routing.py
  2. 15
      tests/test_include_router_defaults_overrides.py

8
fastapi/routing.py

@ -1394,7 +1394,7 @@ class APIRouter(routing.Router):
description=description, description=description,
response_description=response_description, response_description=response_description,
responses=combined_responses, responses=combined_responses,
deprecated=deprecated or self.deprecated, deprecated=self.deprecated if deprecated is None else deprecated,
methods=methods, methods=methods,
operation_id=operation_id, operation_id=operation_id,
response_model_include=response_model_include, response_model_include=response_model_include,
@ -1770,7 +1770,11 @@ class APIRouter(routing.Router):
description=route.description, description=route.description,
response_description=route.response_description, response_description=route.response_description,
responses=combined_responses, responses=combined_responses,
deprecated=route.deprecated or deprecated or self.deprecated, deprecated=(
route.deprecated
if route.deprecated is not None
else self.deprecated if deprecated is None else deprecated
),
methods=route.methods, methods=route.methods,
operation_id=route.operation_id, operation_id=route.operation_id,
response_model_include=route.response_model_include, response_model_include=route.response_model_include,

15
tests/test_include_router_defaults_overrides.py

@ -7302,3 +7302,18 @@ def test_openapi():
}, },
} }
) )
def test_route_deprecated_false_overrides_parent_deprecated_true():
child_router = APIRouter()
@child_router.get("/child", deprecated=False)
async def read_child():
return {"ok": True}
override_app = FastAPI(deprecated=True)
override_app.include_router(child_router)
schema = override_app.openapi()
assert "deprecated" not in schema["paths"]["/child"]["get"]

Loading…
Cancel
Save