From 0e80f9e1f5d4be81d56ab673169bcdc793185bbf Mon Sep 17 00:00:00 2001 From: Yurii Motov Date: Wed, 5 Nov 2025 11:43:20 +0100 Subject: [PATCH] Fix `TypeError: issubclass() arg 1 must be a class` for optional list of bytes --- fastapi/_compat/v2.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/fastapi/_compat/v2.py b/fastapi/_compat/v2.py index 6a87b9ae9..59f021d35 100644 --- a/fastapi/_compat/v2.py +++ b/fastapi/_compat/v2.py @@ -371,6 +371,13 @@ def copy_field_info(*, field_info: FieldInfo, annotation: Any) -> FieldInfo: def serialize_sequence_value(*, field: ModelField, value: Any) -> Sequence[Any]: origin_type = get_origin(field.field_info.annotation) or field.field_info.annotation + if origin_type is Union: # Handle optional sequences + union_args = get_args(field.field_info.annotation) + for union_arg in union_args: + if union_arg is type(None): + continue + origin_type = get_origin(union_arg) or union_arg + break assert issubclass(origin_type, shared.sequence_types) # type: ignore[arg-type] return shared.sequence_annotation_to_type[origin_type](value) # type: ignore[no-any-return]