MCPcopy
hub / github.com/fastapi/fastapi / _populate_api_route_state

Function _populate_api_route_state

fastapi/routing.py:946–1107  ·  view source on GitHub ↗
(
    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),
)

Source from the content-addressed store, hash-verified

944
945
946def _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

Callers 2

__init__Method · 0.85
from_api_routeMethod · 0.85

Calls 9

DefaultFunction · 0.90
lenient_issubclassFunction · 0.90
get_stream_item_typeFunction · 0.90
create_model_fieldFunction · 0.90
get_body_fieldFunction · 0.90
getMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…