Browse Source

♻️ Update getting model types from annotations

pull/14168/head
Sebastián Ramírez 10 months ago
parent
commit
09bba353ae
  1. 7
      fastapi/_compat/v2.py

7
fastapi/_compat/v2.py

@ -399,13 +399,14 @@ def get_flat_models_from_model(
def get_flat_models_from_annotation(
annotation: Any, known_models: Union[TypeModelSet, None] = None
annotation: Any, known_models: TypeModelSet
) -> TypeModelSet:
known_models = known_models or set()
origin = get_origin(annotation)
if origin is not None:
for arg in get_args(annotation):
if lenient_issubclass(arg, (BaseModel, Enum)) and arg not in known_models:
if arg in known_models:
continue
known_models.add(arg)
if lenient_issubclass(arg, BaseModel):
get_flat_models_from_model(arg, known_models=known_models)
@ -425,6 +426,8 @@ def get_flat_models_from_field(
get_flat_models_from_model(field_type, known_models=known_models)
elif lenient_issubclass(field_type, Enum):
known_models.add(field_type)
else:
get_flat_models_from_annotation(field_type, known_models=known_models)
return known_models

Loading…
Cancel
Save