mirror of https://github.com/tiangolo/fastapi.git
♻️ Update internal annotation usage for compatibilty with Pydantic 2.11 (#13314)
Co-authored-by: Sofie Van Landeghem <svlandeg@users.noreply.github.com> Co-authored-by: svlandeg <svlandeg@github.com>
This commit is contained in:
parent
45e018517b
commit
15dd2b67d3
|
|
@ -449,15 +449,15 @@ def analyze_param(
|
|||
# We might check here that `default_value is RequiredParam`, but the fact is that the same
|
||||
# parameter might sometimes be a path parameter and sometimes not. See
|
||||
# `tests/test_infer_param_optionality.py` for an example.
|
||||
field_info = params.Path(annotation=use_annotation)
|
||||
field_info = params.Path(annotation=type_annotation)
|
||||
elif is_uploadfile_or_nonable_uploadfile_annotation(
|
||||
type_annotation
|
||||
) or is_uploadfile_sequence_annotation(type_annotation):
|
||||
field_info = params.File(annotation=use_annotation, default=default_value)
|
||||
field_info = params.File(annotation=type_annotation, default=default_value)
|
||||
elif not field_annotation_is_scalar(annotation=type_annotation):
|
||||
field_info = params.Body(annotation=use_annotation, default=default_value)
|
||||
field_info = params.Body(annotation=type_annotation, default=default_value)
|
||||
else:
|
||||
field_info = params.Query(annotation=use_annotation, default=default_value)
|
||||
field_info = params.Query(annotation=type_annotation, default=default_value)
|
||||
|
||||
field = None
|
||||
# It's a field_info, not a dependency
|
||||
|
|
|
|||
|
|
@ -0,0 +1,22 @@
|
|||
from inspect import signature
|
||||
|
||||
from fastapi.dependencies.utils import ParamDetails, analyze_param
|
||||
from pydantic import Field
|
||||
from typing_extensions import Annotated
|
||||
|
||||
from .utils import needs_pydanticv2
|
||||
|
||||
|
||||
def func(user: Annotated[int, Field(strict=True)]): ...
|
||||
|
||||
|
||||
@needs_pydanticv2
|
||||
def test_analyze_param():
|
||||
result = analyze_param(
|
||||
param_name="user",
|
||||
annotation=signature(func).parameters["user"].annotation,
|
||||
value=object(),
|
||||
is_path_param=False,
|
||||
)
|
||||
assert isinstance(result, ParamDetails)
|
||||
assert result.field.field_info.annotation is int
|
||||
Loading…
Reference in New Issue