Browse Source

fix: rewrite dict() as literal and add coverage for _accepts_kwarg fallback

pull/15546/head
theshyxin 3 weeks ago
parent
commit
ea5f21c51b
  1. 52
      fastapi/routing.py
  2. 2
      tests/test_custom_route_class.py

52
fastapi/routing.py

@ -1410,32 +1410,32 @@ class APIRouter(routing.Router):
current_generate_unique_id = get_value_or_default(
generate_unique_id_function, self.generate_unique_id_function
)
route_kwargs: dict[str, Any] = dict(
response_model=response_model,
status_code=status_code,
tags=current_tags,
dependencies=current_dependencies,
summary=summary,
description=description,
response_description=response_description,
responses=combined_responses,
deprecated=deprecated or self.deprecated,
methods=methods,
operation_id=operation_id,
response_model_include=response_model_include,
response_model_exclude=response_model_exclude,
response_model_by_alias=response_model_by_alias,
response_model_exclude_unset=response_model_exclude_unset,
response_model_exclude_defaults=response_model_exclude_defaults,
response_model_exclude_none=response_model_exclude_none,
include_in_schema=include_in_schema and self.include_in_schema,
response_class=current_response_class,
name=name,
dependency_overrides_provider=self.dependency_overrides_provider,
callbacks=current_callbacks,
openapi_extra=openapi_extra,
generate_unique_id_function=current_generate_unique_id,
)
route_kwargs: dict[str, Any] = {
"response_model": response_model,
"status_code": status_code,
"tags": current_tags,
"dependencies": current_dependencies,
"summary": summary,
"description": description,
"response_description": response_description,
"responses": combined_responses,
"deprecated": deprecated or self.deprecated,
"methods": methods,
"operation_id": operation_id,
"response_model_include": response_model_include,
"response_model_exclude": response_model_exclude,
"response_model_by_alias": response_model_by_alias,
"response_model_exclude_unset": response_model_exclude_unset,
"response_model_exclude_defaults": response_model_exclude_defaults,
"response_model_exclude_none": response_model_exclude_none,
"include_in_schema": include_in_schema and self.include_in_schema,
"response_class": current_response_class,
"name": name,
"dependency_overrides_provider": self.dependency_overrides_provider,
"callbacks": current_callbacks,
"openapi_extra": openapi_extra,
"generate_unique_id_function": current_generate_unique_id,
}
if _accepts_kwarg(route_class, "strict_content_type"):
route_kwargs["strict_content_type"] = get_value_or_default(
strict_content_type, self.strict_content_type

2
tests/test_custom_route_class.py

@ -241,7 +241,7 @@ def test_accepts_kwarg_signature_error():
"""Cover the fallback when inspect.signature raises (line 826-827)."""
from unittest.mock import patch
from fastapi.routing import _accepts_kwarg, _ACCEPTS_KWARG_CACHE
from fastapi.routing import _ACCEPTS_KWARG_CACHE, _accepts_kwarg
class SimpleRoute:
def __init__(self, x):

Loading…
Cancel
Save