MCPcopy
hub / github.com/fastapi/fastapi / _get_openapi_operation_parameters

Function _get_openapi_operation_parameters

fastapi/openapi/utils.py:107–177  ·  view source on GitHub ↗
(
    *,
    dependant: Dependant,
    model_name_map: ModelNameMap,
    field_mapping: dict[
        tuple[ModelField, Literal["validation", "serialization"]], dict[str, Any]
    ],
    separate_input_output_schemas: bool = True,
)

Source from the content-addressed store, hash-verified

105
106
107def _get_openapi_operation_parameters(
108 *,
109 dependant: Dependant,
110 model_name_map: ModelNameMap,
111 field_mapping: dict[
112 tuple[ModelField, Literal["validation", "serialization"]], dict[str, Any]
113 ],
114 separate_input_output_schemas: bool = True,
115) -> list[dict[str, Any]]:
116 parameters = []
117 flat_dependant = get_flat_dependant(dependant, skip_repeats=True)
118 path_params = _get_flat_fields_from_params(flat_dependant.path_params)
119 query_params = _get_flat_fields_from_params(flat_dependant.query_params)
120 header_params = _get_flat_fields_from_params(flat_dependant.header_params)
121 cookie_params = _get_flat_fields_from_params(flat_dependant.cookie_params)
122 parameter_groups = [
123 (ParamTypes.path, path_params),
124 (ParamTypes.query, query_params),
125 (ParamTypes.header, header_params),
126 (ParamTypes.cookie, cookie_params),
127 ]
128 default_convert_underscores = True
129 if len(flat_dependant.header_params) == 1:
130 first_field = flat_dependant.header_params[0]
131 if lenient_issubclass(first_field.field_info.annotation, BaseModel):
132 default_convert_underscores = getattr(
133 first_field.field_info, "convert_underscores", True
134 )
135 for param_type, param_group in parameter_groups:
136 for param in param_group:
137 field_info = param.field_info
138 # field_info = cast(Param, field_info)
139 if not getattr(field_info, "include_in_schema", True):
140 continue
141 param_schema = get_schema_from_model_field(
142 field=param,
143 model_name_map=model_name_map,
144 field_mapping=field_mapping,
145 separate_input_output_schemas=separate_input_output_schemas,
146 )
147 name = get_validation_alias(param)
148 convert_underscores = getattr(
149 param.field_info,
150 "convert_underscores",
151 default_convert_underscores,
152 )
153 if (
154 param_type == ParamTypes.header
155 and name == param.name
156 and convert_underscores
157 ):
158 name = param.name.replace("_", "-")
159
160 parameter = {
161 "name": name,
162 "in": param_type.value,
163 "required": param.field_info.is_required(),
164 "schema": param_schema,

Callers 1

get_openapi_pathFunction · 0.85

Calls 6

get_flat_dependantFunction · 0.90
lenient_issubclassFunction · 0.90
get_validation_aliasFunction · 0.90
jsonable_encoderFunction · 0.90

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…