2525 create_body_model ,
2626 evaluate_forwardref ,
2727 field_annotation_is_scalar ,
28+ field_annotation_is_scalar_sequence ,
29+ field_annotation_is_sequence ,
2830 get_cached_model_fields ,
2931 get_missing_field_error ,
30- is_bytes_field ,
31- is_bytes_sequence_field ,
32+ is_bytes_or_nonable_bytes_annotation ,
33+ is_bytes_sequence_annotation ,
3234 is_scalar_field ,
33- is_scalar_sequence_field ,
34- is_sequence_field ,
3535 is_uploadfile_or_nonable_uploadfile_annotation ,
3636 is_uploadfile_sequence_annotation ,
3737 lenient_issubclass ,
@@ -523,7 +523,7 @@ def analyze_param(
523523 elif isinstance (field_info , params .Query ):
524524 assert (
525525 is_scalar_field (field )
526- or is_scalar_sequence_field (field )
526+ or field_annotation_is_scalar_sequence (field . field_info . annotation )
527527 or lenient_issubclass (field .field_info .annotation , BaseModel )
528528 ), f"Query parameter { param_name !r} must be one of the supported types"
529529
@@ -727,7 +727,7 @@ def _get_multidict_value(
727727 alias = alias or get_validation_alias (field )
728728 if (
729729 (not _is_json_field (field ))
730- and is_sequence_field (field )
730+ and field_annotation_is_sequence (field . field_info . annotation )
731731 and isinstance (values , (ImmutableMultiDict , Headers ))
732732 ):
733733 value = values .getlist (alias )
@@ -740,7 +740,10 @@ def _get_multidict_value(
740740 and isinstance (value , str ) # For type checks
741741 and value == ""
742742 )
743- or (is_sequence_field (field ) and len (value ) == 0 )
743+ or (
744+ field_annotation_is_sequence (field .field_info .annotation )
745+ and len (value ) == 0
746+ )
744747 ):
745748 if field .field_info .is_required ():
746749 return
@@ -888,12 +891,12 @@ async def _extract_form_body(
888891 field_info = field .field_info
889892 if (
890893 isinstance (field_info , params .File )
891- and is_bytes_field (field )
894+ and is_bytes_or_nonable_bytes_annotation (field . field_info . annotation )
892895 and isinstance (value , UploadFile )
893896 ):
894897 value = await value .read ()
895898 elif (
896- is_bytes_sequence_field (field )
899+ is_bytes_sequence_annotation (field . field_info . annotation )
897900 and isinstance (field_info , params .File )
898901 and value_is_sequence (value )
899902 ):
0 commit comments