@@ -210,36 +210,52 @@ def compute_route_parameter_list(
210210 ), "Path params must be of one of the supported types"
211211 self ._add_to_model (field = param_field )
212212 else :
213- default_field_info = t .cast (
214- t .Type [params .ParamFieldInfo ],
215- param_default
216- if isinstance (param_default , FieldInfo )
217- else params .QueryFieldInfo ,
218- )
219- param_field = get_parameter_field (
213+ param_field = self ._process_parameter_file (
220214 param_default = param_default ,
221215 param_annotation = param_annotation ,
222- default_field_info = default_field_info ,
223216 param_name = param_name ,
224217 body_field_class = body_field_class ,
225218 )
226- if not isinstance (
227- param_field .field_info , (params .BodyFieldInfo , params .FileFieldInfo )
228- ) and not is_scalar_field (field = param_field ):
229- if not is_scalar_sequence_field (param_field ):
230- if not lenient_issubclass (param_field .type_ , BaseModel ):
231- raise ImproperConfiguration (
232- f"{ param_field .type_ } type can't be processed as a field"
233- )
234-
235- bulk_resolver_generator_class = self .get_resolver_generator (
236- param_default
237- )
238- bulk_resolver_generator_class (param_field ).generate_resolvers (
239- body_field_class = body_field_class
240- )
241219 self ._add_to_model (field = param_field )
242220
221+ def _process_parameter_file (
222+ self ,
223+ * ,
224+ param_default : t .Any ,
225+ param_name : str ,
226+ param_annotation : t .Type ,
227+ body_field_class : t .Type [FieldInfo ] = params .BodyFieldInfo ,
228+ ) -> ModelField :
229+ default_field_info = t .cast (
230+ t .Type [params .ParamFieldInfo ],
231+ param_default
232+ if isinstance (param_default , FieldInfo )
233+ else params .QueryFieldInfo ,
234+ )
235+ param_field = get_parameter_field (
236+ param_default = param_default ,
237+ param_annotation = param_annotation ,
238+ default_field_info = default_field_info ,
239+ param_name = param_name ,
240+ body_field_class = body_field_class ,
241+ )
242+ if not isinstance (
243+ param_field .field_info , (params .BodyFieldInfo , params .FileFieldInfo )
244+ ) and not is_scalar_field (field = param_field ):
245+ if not is_scalar_sequence_field (param_field ):
246+ if not lenient_issubclass (param_field .type_ , BaseModel ):
247+ raise ImproperConfiguration (
248+ f"{ param_field .type_ } type can't be processed as a field"
249+ )
250+
251+ bulk_resolver_generator_class = self .get_resolver_generator (
252+ param_default
253+ )
254+ bulk_resolver_generator_class (param_field ).generate_resolvers (
255+ body_field_class = body_field_class
256+ )
257+ return param_field
258+
243259 def _add_system_parameters_to_dependency (
244260 self ,
245261 * ,
@@ -351,17 +367,10 @@ def _add_extra_route_args(
351367 ):
352368 continue
353369
354- default_field_info = t .cast (
355- t .Type [params .ParamFieldInfo ],
356- param_default
357- if isinstance (param_default , FieldInfo )
358- else params .QueryFieldInfo ,
359- )
360- param_field = get_parameter_field (
370+ param_field = self ._process_parameter_file (
361371 param_default = param_default ,
362- param_annotation = param .annotation ,
363- default_field_info = default_field_info ,
364- param_name = param .name ,
372+ param_annotation = param_annotation ,
373+ param_name = param_name ,
365374 )
366375 self ._add_to_model (field = param_field , key = key )
367376
0 commit comments