(
route: _APIRouteLike,
path: str,
endpoint: Callable[..., Any],
*,
response_model: Any = Default(None),
status_code: int | None = None,
tags: list[str | Enum] | None = None,
dependencies: Sequence[params.Depends] | None = None,
summary: str | None = None,
description: str | None = None,
response_description: str = "Successful Response",
responses: dict[int | str, dict[str, Any]] | None = None,
deprecated: bool | None = None,
name: str | None = None,
methods: set[str] | list[str] | None = None,
operation_id: str | None = None,
response_model_include: IncEx | None = None,
response_model_exclude: IncEx | None = None,
response_model_by_alias: bool = True,
response_model_exclude_unset: bool = False,
response_model_exclude_defaults: bool = False,
response_model_exclude_none: bool = False,
include_in_schema: bool = True,
response_class: type[Response] | DefaultPlaceholder = Default(JSONResponse),
dependency_overrides_provider: Any | None = None,
callbacks: list[BaseRoute] | None = None,
openapi_extra: dict[str, Any] | None = None,
generate_unique_id_function: Callable[[Any], str] | DefaultPlaceholder = Default(
generate_unique_id
),
strict_content_type: bool | DefaultPlaceholder = Default(True),
)
| 944 | |
| 945 | |
| 946 | def _populate_api_route_state( |
| 947 | route: _APIRouteLike, |
| 948 | path: str, |
| 949 | endpoint: Callable[..., Any], |
| 950 | *, |
| 951 | response_model: Any = Default(None), |
| 952 | status_code: int | None = None, |
| 953 | tags: list[str | Enum] | None = None, |
| 954 | dependencies: Sequence[params.Depends] | None = None, |
| 955 | summary: str | None = None, |
| 956 | description: str | None = None, |
| 957 | response_description: str = "Successful Response", |
| 958 | responses: dict[int | str, dict[str, Any]] | None = None, |
| 959 | deprecated: bool | None = None, |
| 960 | name: str | None = None, |
| 961 | methods: set[str] | list[str] | None = None, |
| 962 | operation_id: str | None = None, |
| 963 | response_model_include: IncEx | None = None, |
| 964 | response_model_exclude: IncEx | None = None, |
| 965 | response_model_by_alias: bool = True, |
| 966 | response_model_exclude_unset: bool = False, |
| 967 | response_model_exclude_defaults: bool = False, |
| 968 | response_model_exclude_none: bool = False, |
| 969 | include_in_schema: bool = True, |
| 970 | response_class: type[Response] | DefaultPlaceholder = Default(JSONResponse), |
| 971 | dependency_overrides_provider: Any | None = None, |
| 972 | callbacks: list[BaseRoute] | None = None, |
| 973 | openapi_extra: dict[str, Any] | None = None, |
| 974 | generate_unique_id_function: Callable[[Any], str] | DefaultPlaceholder = Default( |
| 975 | generate_unique_id |
| 976 | ), |
| 977 | strict_content_type: bool | DefaultPlaceholder = Default(True), |
| 978 | ) -> None: |
| 979 | route.path = path |
| 980 | route.endpoint = endpoint |
| 981 | route.stream_item_type = None |
| 982 | if isinstance(response_model, DefaultPlaceholder): |
| 983 | return_annotation = get_typed_return_annotation(endpoint) |
| 984 | if lenient_issubclass(return_annotation, Response): |
| 985 | response_model = None |
| 986 | else: |
| 987 | stream_item = get_stream_item_type(return_annotation) |
| 988 | if stream_item is not None: |
| 989 | # Extract item type for JSONL or SSE streaming when |
| 990 | # response_class is DefaultPlaceholder (JSONL) or |
| 991 | # EventSourceResponse (SSE). |
| 992 | # ServerSentEvent is excluded: it's a transport |
| 993 | # wrapper, not a data model, so it shouldn't feed |
| 994 | # into validation or OpenAPI schema generation. |
| 995 | if ( |
| 996 | isinstance(response_class, DefaultPlaceholder) |
| 997 | or lenient_issubclass(response_class, EventSourceResponse) |
| 998 | ) and not lenient_issubclass(stream_item, ServerSentEvent): |
| 999 | route.stream_item_type = stream_item |
| 1000 | response_model = None |
| 1001 | else: |
| 1002 | response_model = return_annotation |
| 1003 | route.response_model = response_model |
no test coverage detected
searching dependent graphs…