← eval6_submission

fastapi_14609

failed CONTEXT UNSUBMITTED agent_error · 34 tool calls · 191 s · fastapi/fastapi

Task input

➖ Drop support for `pydantic.v1`

➖ Drop support for `pydantic.v1`

When trying to use a `pydantic.v1` model with FastAPI, an error is raised.

Tool calls (34)

#ToolArgumentsResult
1run_command
{
 "command": "grep -rn \"pydantic.v1\" . | head -20"
}
{"status": "ok", "stdout": "./fastapi/dependencies/utils.py:47:from fastapi._compat.shared import annotation_is_pydantic_v1\n./fastapi/dependencies/utils.py:75:
full
{"status": "ok", "stdout": "./fastapi/dependencies/utils.py:47:from fastapi._compat.shared import annotation_is_pydantic_v1\n./fastapi/dependencies/utils.py:75:from .. import temp_pydantic_v1_params\n./fastapi/dependencies/utils.py:328:                \"pydantic.v1 is deprecated and will soon stop being supported by FastAPI.\"\n./fastapi/dependencies/utils.py:334:            param_details.field.field_info, (params.Body, temp_pydantic_v1_params.Body)\n./fastapi/dependencies/utils.py:403:                    temp_pydantic_v1_params.Param,\n./fastapi/dependencies/utils.py:405:                    temp_pydantic_v1_params.Body,\n./fastapi/dependencies/utils.py:494:            if annotation_is_pydantic_v1(use_annotation):\n./fastapi/dependencies/utils.py:495:                field_info = temp_pydantic_v1_params.Body(  # type: ignore[assignment]\n./fastapi/dependencies/utils.py:511:                field_info, (params.Path, temp_pydantic_v1_params.Path)\n./fastapi/dependencies/utils.py:517:            isinstance(field_info, (params.Param, temp_pydantic_v1_params.Param))\n./fastapi/dependencies/utils.py:526:        if isinstance(field_info, (params.Form, temp_pydantic_v1_params.Form)):\n./fastapi/dependencies/utils.py:546:        elif isinstance(field_info, (params.Query, temp_pydantic_v1_params.Query)):\n./fastapi/dependencies/utils.py:765:            isinstance(field.field_info, (params.Form, temp_pydantic_v1_params.Form))\n./fastapi/dependencies/utils.py:835:        assert isinstance(field_info, (params.Param, temp_pydantic_v1_params.Param)), (\n./fastapi/dependencies/utils.py:847:        assert isinstance(field_info, (params.Param, temp_pydantic_v1_params.Param)), (\n./fastapi/dependencies/utils.py:896:        isinstance(first_field.field_info, (params.Form, temp_pydantic_v1_params.Form))\n./fastapi/dependencies/utils.py:914:            isinstance(field_info, (params.File, temp_pydantic_v1_params.File))\n./fastapi/dependencies/utils.py:921:            and isinstance(field_i
2run_command
{
 "command": "grep -rn \"pydantic.v1\" fastapi | head -20"
}
{"status": "ok", "stdout": "fastapi/dependencies/utils.py:47:from fastapi._compat.shared import annotation_is_pydantic_v1\nfastapi/dependencies/utils.py:75:from
full
{"status": "ok", "stdout": "fastapi/dependencies/utils.py:47:from fastapi._compat.shared import annotation_is_pydantic_v1\nfastapi/dependencies/utils.py:75:from .. import temp_pydantic_v1_params\nfastapi/dependencies/utils.py:328:                \"pydantic.v1 is deprecated and will soon stop being supported by FastAPI.\"\nfastapi/dependencies/utils.py:334:            param_details.field.field_info, (params.Body, temp_pydantic_v1_params.Body)\nfastapi/dependencies/utils.py:403:                    temp_pydantic_v1_params.Param,\nfastapi/dependencies/utils.py:405:                    temp_pydantic_v1_params.Body,\nfastapi/dependencies/utils.py:494:            if annotation_is_pydantic_v1(use_annotation):\nfastapi/dependencies/utils.py:495:                field_info = temp_pydantic_v1_params.Body(  # type: ignore[assignment]\nfastapi/dependencies/utils.py:511:                field_info, (params.Path, temp_pydantic_v1_params.Path)\nfastapi/dependencies/utils.py:517:            isinstance(field_info, (params.Param, temp_pydantic_v1_params.Param))\nfastapi/dependencies/utils.py:526:        if isinstance(field_info, (params.Form, temp_pydantic_v1_params.Form)):\nfastapi/dependencies/utils.py:546:        elif isinstance(field_info, (params.Query, temp_pydantic_v1_params.Query)):\nfastapi/dependencies/utils.py:765:            isinstance(field.field_info, (params.Form, temp_pydantic_v1_params.Form))\nfastapi/dependencies/utils.py:835:        assert isinstance(field_info, (params.Param, temp_pydantic_v1_params.Param)), (\nfastapi/dependencies/utils.py:847:        assert isinstance(field_info, (params.Param, temp_pydantic_v1_params.Param)), (\nfastapi/dependencies/utils.py:896:        isinstance(first_field.field_info, (params.Form, temp_pydantic_v1_params.Form))\nfastapi/dependencies/utils.py:914:            isinstance(field_info, (params.File, temp_pydantic_v1_params.File))\nfastapi/dependencies/utils.py:921:            and isinstance(field_info, (params.File, temp_pydantic_v1_
3run_command
{
 "command": "grep -rn \"temp_pydantic_v1_params\" fastapi | head -20"
}
{"status": "ok", "stdout": "fastapi/dependencies/utils.py:75:from .. import temp_pydantic_v1_params\nfastapi/dependencies/utils.py:334: param_details.field.fiel
full
{"status": "ok", "stdout": "fastapi/dependencies/utils.py:75:from .. import temp_pydantic_v1_params\nfastapi/dependencies/utils.py:334:            param_details.field.field_info, (params.Body, temp_pydantic_v1_params.Body)\nfastapi/dependencies/utils.py:403:                    temp_pydantic_v1_params.Param,\nfastapi/dependencies/utils.py:405:                    temp_pydantic_v1_params.Body,\nfastapi/dependencies/utils.py:495:                field_info = temp_pydantic_v1_params.Body(  # type: ignore[assignment]\nfastapi/dependencies/utils.py:511:                field_info, (params.Path, temp_pydantic_v1_params.Path)\nfastapi/dependencies/utils.py:517:            isinstance(field_info, (params.Param, temp_pydantic_v1_params.Param))\nfastapi/dependencies/utils.py:526:        if isinstance(field_info, (params.Form, temp_pydantic_v1_params.Form)):\nfastapi/dependencies/utils.py:546:        elif isinstance(field_info, (params.Query, temp_pydantic_v1_params.Query)):\nfastapi/dependencies/utils.py:765:            isinstance(field.field_info, (params.Form, temp_pydantic_v1_params.Form))\nfastapi/dependencies/utils.py:835:        assert isinstance(field_info, (params.Param, temp_pydantic_v1_params.Param)), (\nfastapi/dependencies/utils.py:847:        assert isinstance(field_info, (params.Param, temp_pydantic_v1_params.Param)), (\nfastapi/dependencies/utils.py:896:        isinstance(first_field.field_info, (params.Form, temp_pydantic_v1_params.Form))\nfastapi/dependencies/utils.py:914:            isinstance(field_info, (params.File, temp_pydantic_v1_params.File))\nfastapi/dependencies/utils.py:921:            and isinstance(field_info, (params.File, temp_pydantic_v1_params.File))\nfastapi/dependencies/utils.py:1033:        isinstance(f.field_info, temp_pydantic_v1_params.File)\nfastapi/dependencies/utils.py:1036:        BodyFieldInfo: type[temp_pydantic_v1_params.Body] = temp_pydantic_v1_params.File  # type: ignore[no-redef]\nfastapi/dependencies/utils.py:1040:        isinstan
4run_command
{
 "command": "ls -R fastapi | grep temp_pydantic_v1_params"
}
{"status": "ok", "stdout": "temp_pydantic_v1_params.py\n", "stderr": "", "exit_code": 0}
full
{"status": "ok", "stdout": "temp_pydantic_v1_params.py\n", "stderr": "", "exit_code": 0}
5read_file
{
 "filepath": "fastapi/temp_pydantic_v1_params.py"
}
{"status": "ok", "filepath": "fastapi/temp_pydantic_v1_params.py", "content": "import warnings\nfrom typing import Annotated, Any, Callable, Optional, Union\n\n
full
{"status": "ok", "filepath": "fastapi/temp_pydantic_v1_params.py", "content": "import warnings\nfrom typing import Annotated, Any, Callable, Optional, Union\n\nfrom fastapi.exceptions import FastAPIDeprecationWarning\nfrom fastapi.openapi.models import Example\nfrom fastapi.params import ParamTypes\nfrom typing_extensions import deprecated\n\nfrom ._compat.may_v1 import FieldInfo, Undefined\n\n_Unset: Any = Undefined\n\n\nclass Param(FieldInfo):\n    in_: ParamTypes\n\n    def __init__(\n        self,\n        default: Any = Undefined,\n        *,\n        default_factory: Union[Callable[[], Any], None] = _Unset,\n        annotation: Optional[Any] = None,\n        alias: Optional[str] = None,\n        alias_priority: Union[int, None] = _Unset,\n        # TODO: update when deprecating Pydantic v1, import these types\n        # validation_alias: str | AliasPath | AliasChoices | None\n        validation_alias: Union[str, None] = None,\n        serialization_alias: Union[str, None] = None,\n        title: Optional[str] = None,\n        description: Optional[str] = None,\n        gt: Optional[float] = None,\n        ge: Optional[float] = None,\n        lt: Optional[float] = None,\n        le: Optional[float] = None,\n        min_length: Optional[int] = None,\n        max_length: Optional[int] = None,\n        pattern: Optional[str] = None,\n        regex: Annotated[\n            Optional[str],\n            deprecated(\n                \"Deprecated in FastAPI 0.100.0 and Pydantic v2, use `pattern` instead.\"\n            ),\n        ] = None,\n        discriminator: Union[str, None] = None,\n        strict: Union[bool, None] = _Unset,\n        multiple_of: Union[float, None] = _Unset,\n        allow_inf_nan: Union[bool, None] = _Unset,\n        max_digits: Union[int, None] = _Unset,\n        decimal_places: Union[int, None] = _Unset,\n        examples: Optional[list[Any]] = None,\n        example: Annotated[\n            Optional[Any],\n            deprecated(\n          
6run_command
{
 "command": "grep -rn \"annotation_is_pydantic_v1\" fastapi | head -20"
}
{"status": "ok", "stdout": "fastapi/dependencies/utils.py:47:from fastapi._compat.shared import annotation_is_pydantic_v1\nfastapi/dependencies/utils.py:494: if
full
{"status": "ok", "stdout": "fastapi/dependencies/utils.py:47:from fastapi._compat.shared import annotation_is_pydantic_v1\nfastapi/dependencies/utils.py:494:            if annotation_is_pydantic_v1(use_annotation):\nfastapi/dependencies/utils.py:1045:        if annotation_is_pydantic_v1(BodyModel):\nfastapi/_compat/__init__.py:39:from .shared import annotation_is_pydantic_v1 as annotation_is_pydantic_v1\nfastapi/_compat/shared.py:182:def annotation_is_pydantic_v1(annotation: Any) -> bool:\nfastapi/_compat/shared.py:192:            if annotation_is_pydantic_v1(sub_annotation):\nfastapi/routing.py:32:    annotation_is_pydantic_v1,\nfastapi/routing.py:640:            if annotation_is_pydantic_v1(self.response_model):\nfastapi/routing.py:680:                if annotation_is_pydantic_v1(model):\nfastapi/utils.py:21:    annotation_is_pydantic_v1,\nfastapi/utils.py:102:        annotation_is_pydantic_v1(type_)\n", "stderr": "", "exit_code": 0}
7read_file
{
 "filepath": "fastapi/_compat/shared.py",
 "start_line": "182",
 "end_line": "200"
}
{"status": "error", "error_type": "FileReadError", "error_message": "'>' not supported between instances of 'int' and 'str'"}
full
{"status": "error", "error_type": "FileReadError", "error_message": "'>' not supported between instances of 'int' and 'str'"}
8read_file
{
 "end_line": "200",
 "filepath": "fastapi/_compat/shared.py",
 "start_line": "180"
}
{"status": "error", "error_type": "FileReadError", "error_message": "'>' not supported between instances of 'int' and 'str'"}
full
{"status": "error", "error_type": "FileReadError", "error_message": "'>' not supported between instances of 'int' and 'str'"}
9read_file
{
 "filepath": "fastapi/_compat/shared.py"
}
{"status": "ok", "filepath": "fastapi/_compat/shared.py", "content": "import sys\nimport types\nimport typing\nfrom collections import deque\nfrom collections.a
full
{"status": "ok", "filepath": "fastapi/_compat/shared.py", "content": "import sys\nimport types\nimport typing\nfrom collections import deque\nfrom collections.abc import Mapping, Sequence\nfrom dataclasses import is_dataclass\nfrom typing import (\n    Annotated,\n    Any,\n    Union,\n)\n\nfrom fastapi._compat import may_v1\nfrom fastapi.types import UnionType\nfrom pydantic import BaseModel\nfrom pydantic.version import VERSION as PYDANTIC_VERSION\nfrom starlette.datastructures import UploadFile\nfrom typing_extensions import get_args, get_origin\n\n# Copy from Pydantic v2, compatible with v1\nif sys.version_info < (3, 10):\n    WithArgsTypes: tuple[Any, ...] = (typing._GenericAlias, types.GenericAlias)  # type: ignore[attr-defined]\nelse:\n    WithArgsTypes: tuple[Any, ...] = (\n        typing._GenericAlias,  # type: ignore[attr-defined]\n        types.GenericAlias,\n        types.UnionType,\n    )  # pyright: ignore[reportAttributeAccessIssue]\n\nPYDANTIC_VERSION_MINOR_TUPLE = tuple(int(x) for x in PYDANTIC_VERSION.split(\".\")[:2])\nPYDANTIC_V2 = PYDANTIC_VERSION_MINOR_TUPLE[0] == 2\n\n\nsequence_annotation_to_type = {\n    Sequence: list,\n    list: list,\n    tuple: tuple,\n    set: set,\n    frozenset: frozenset,\n    deque: deque,\n}\n\nsequence_types = tuple(sequence_annotation_to_type.keys())\n\nUrl: type[Any]\n\n\n# Copy of Pydantic v2, compatible with v1\ndef lenient_issubclass(\n    cls: Any, class_or_tuple: Union[type[Any], tuple[type[Any], ...], None]\n) -> bool:\n    try:\n        return isinstance(cls, type) and issubclass(cls, class_or_tuple)  # type: ignore[arg-type]\n    except TypeError:  # pragma: no cover\n        if isinstance(cls, WithArgsTypes):\n            return False\n        raise  # pragma: no cover\n\n\ndef _annotation_is_sequence(annotation: Union[type[Any], None]) -> bool:\n    if lenient_issubclass(annotation, (str, bytes)):\n        return False\n    return lenient_issubclass(annotation, sequence_types)\n\n\ndef field_annotation
10read_file
{
 "filepath": "fastapi/_compat/shared.py",
 "start_line": "151"
}
{"status": "error", "error_type": "FileReadError", "error_message": "'>' not supported between instances of 'int' and 'str'"}
full
{"status": "error", "error_type": "FileReadError", "error_message": "'>' not supported between instances of 'int' and 'str'"}
11run_command
{
 "command": "tail -n 50 fastapi/_compat/shared.py"
}
{"status": "ok", "stdout": " if origin is Union or origin is UnionType:\n for arg in get_args(annotation):\n if lenient_issubclass(arg, UploadFile):\n return Tr
full
{"status": "ok", "stdout": "    if origin is Union or origin is UnionType:\n        for arg in get_args(annotation):\n            if lenient_issubclass(arg, UploadFile):\n                return True\n    return False\n\n\ndef is_bytes_sequence_annotation(annotation: Any) -> bool:\n    origin = get_origin(annotation)\n    if origin is Union or origin is UnionType:\n        at_least_one = False\n        for arg in get_args(annotation):\n            if is_bytes_sequence_annotation(arg):\n                at_least_one = True\n                continue\n        return at_least_one\n    return field_annotation_is_sequence(annotation) and all(\n        is_bytes_or_nonable_bytes_annotation(sub_annotation)\n        for sub_annotation in get_args(annotation)\n    )\n\n\ndef is_uploadfile_sequence_annotation(annotation: Any) -> bool:\n    origin = get_origin(annotation)\n    if origin is Union or origin is UnionType:\n        at_least_one = False\n        for arg in get_args(annotation):\n            if is_uploadfile_sequence_annotation(arg):\n                at_least_one = True\n                continue\n        return at_least_one\n    return field_annotation_is_sequence(annotation) and all(\n        is_uploadfile_or_nonable_uploadfile_annotation(sub_annotation)\n        for sub_annotation in get_args(annotation)\n    )\n\n\ndef annotation_is_pydantic_v1(annotation: Any) -> bool:\n    if lenient_issubclass(annotation, may_v1.BaseModel):\n        return True\n    origin = get_origin(annotation)\n    if origin is Union or origin is UnionType:\n        for arg in get_args(annotation):\n            if lenient_issubclass(arg, may_v1.BaseModel):\n                return True\n    if field_annotation_is_sequence(annotation):\n        for sub_annotation in get_args(annotation):\n            if annotation_is_pydantic_v1(sub_annotation):\n                return True\n    return False\n", "stderr": "", "exit_code": 0}
12run_command
{
 "command": "grep -rn \"may_v1\" fastapi | head -20"
}
{"status": "ok", "stdout": "fastapi/dependencies/utils.py:42: may_v1,\nfastapi/dependencies/utils.py:326: if isinstance(param_details.field, may_v1.ModelField):
full
{"status": "ok", "stdout": "fastapi/dependencies/utils.py:42:    may_v1,\nfastapi/dependencies/utils.py:326:        if isinstance(param_details.field, may_v1.ModelField):\nfastapi/dependencies/utils.py:394:            if isinstance(arg, (FieldInfo, may_v1.FieldInfo, params.Depends))\nfastapi/dependencies/utils.py:412:                FieldInfo, may_v1.FieldInfo, params.Depends, None\nfastapi/dependencies/utils.py:417:        if isinstance(fastapi_annotation, (FieldInfo, may_v1.FieldInfo)):\nfastapi/dependencies/utils.py:425:                may_v1.Undefined,\nfastapi/dependencies/utils.py:426:            } or field_info.default in {RequiredParam, may_v1.RequiredParam}, (\nfastapi/dependencies/utils.py:450:    elif isinstance(value, (FieldInfo, may_v1.FieldInfo)):\nfastapi/dependencies/utils.py:539:            in (RequiredParam, may_v1.RequiredParam, Undefined),\nfastapi/dependencies/utils.py:748:        new_errors = may_v1._regenerate_error_with_loc(errors=errors_, loc_prefix=())\nfastapi/_compat/__init__.py:32:from .may_v1 import CoreSchema as CoreSchema\nfastapi/_compat/__init__.py:33:from .may_v1 import GetJsonSchemaHandler as GetJsonSchemaHandler\nfastapi/_compat/__init__.py:34:from .may_v1 import JsonSchemaValue as JsonSchemaValue\nfastapi/_compat/__init__.py:35:from .may_v1 import _normalize_errors as _normalize_errors\nfastapi/_compat/shared.py:13:from fastapi._compat import may_v1\nfastapi/_compat/shared.py:85:            annotation, (BaseModel, may_v1.BaseModel, Mapping, UploadFile)\nfastapi/_compat/shared.py:183:    if lenient_issubclass(annotation, may_v1.BaseModel):\nfastapi/_compat/shared.py:188:            if lenient_issubclass(arg, may_v1.BaseModel):\nfastapi/_compat/main.py:8:from fastapi._compat import may_v1\nfastapi/_compat/main.py:33:    if lenient_issubclass(model, may_v1.BaseModel):\n", "stderr": "", "exit_code": 0}
13read_file
{
 "filepath": "fastapi/_compat/main.py"
}
{"status": "ok", "filepath": "fastapi/_compat/main.py", "content": "import sys\nfrom collections.abc import Sequence\nfrom functools import lru_cache\nfrom typi
full
{"status": "ok", "filepath": "fastapi/_compat/main.py", "content": "import sys\nfrom collections.abc import Sequence\nfrom functools import lru_cache\nfrom typing import (\n    Any,\n)\n\nfrom fastapi._compat import may_v1\nfrom fastapi._compat.shared import lenient_issubclass\nfrom fastapi.types import ModelNameMap\nfrom pydantic import BaseModel\nfrom typing_extensions import Literal\n\nfrom . import v2\nfrom .model_field import ModelField\nfrom .v2 import BaseConfig as BaseConfig\nfrom .v2 import FieldInfo as FieldInfo\nfrom .v2 import PydanticSchemaGenerationError as PydanticSchemaGenerationError\nfrom .v2 import RequiredParam as RequiredParam\nfrom .v2 import Undefined as Undefined\nfrom .v2 import UndefinedType as UndefinedType\nfrom .v2 import Url as Url\nfrom .v2 import Validator as Validator\nfrom .v2 import evaluate_forwardref as evaluate_forwardref\nfrom .v2 import get_missing_field_error as get_missing_field_error\nfrom .v2 import (\n    with_info_plain_validator_function as with_info_plain_validator_function,\n)\n\n\n@lru_cache\ndef get_cached_model_fields(model: type[BaseModel]) -> list[ModelField]:\n    if lenient_issubclass(model, may_v1.BaseModel):\n        from fastapi._compat import v1\n\n        return v1.get_model_fields(model)  # type: ignore[arg-type,return-value]\n    else:\n        from . import v2\n\n        return v2.get_model_fields(model)  # type: ignore[return-value]\n\n\ndef _is_undefined(value: object) -> bool:\n    if isinstance(value, may_v1.UndefinedType):\n        return True\n\n    return isinstance(value, v2.UndefinedType)\n\n\ndef _get_model_config(model: BaseModel) -> Any:\n    if isinstance(model, may_v1.BaseModel):\n        from fastapi._compat import v1\n\n        return v1._get_model_config(model)\n\n    return v2._get_model_config(model)\n\n\ndef _model_dump(\n    model: BaseModel, mode: Literal[\"json\", \"python\"] = \"json\", **kwargs: Any\n) -> Any:\n    if isinstance(model, may_v1.BaseModel):\n        from fastapi._c
14read_file
{
 "filepath": "fastapi/_compat/main.py",
 "start_line": "151"
}
{"status": "error", "error_type": "FileReadError", "error_message": "'>' not supported between instances of 'int' and 'str'"}
full
{"status": "error", "error_type": "FileReadError", "error_message": "'>' not supported between instances of 'int' and 'str'"}
15run_command
{
 "command": "tail -n 120 fastapi/_compat/main.py"
}
{"status": "ok", "stdout": " from fastapi._compat import v1\n\n return v1.is_sequence_field(field)\n\n return v2.is_sequence_field(field) # type: ignore[arg-typ
full
{"status": "ok", "stdout": "        from fastapi._compat import v1\n\n        return v1.is_sequence_field(field)\n\n    return v2.is_sequence_field(field)  # type: ignore[arg-type]\n\n\ndef serialize_sequence_value(*, field: ModelField, value: Any) -> Sequence[Any]:\n    if isinstance(field, may_v1.ModelField):\n        from fastapi._compat import v1\n\n        return v1.serialize_sequence_value(field=field, value=value)\n\n    return v2.serialize_sequence_value(field=field, value=value)  # type: ignore[arg-type]\n\n\ndef get_compat_model_name_map(fields: list[ModelField]) -> ModelNameMap:\n    v1_model_fields = [\n        field for field in fields if isinstance(field, may_v1.ModelField)\n    ]\n    if v1_model_fields:\n        from fastapi._compat import v1\n\n        v1_flat_models = v1.get_flat_models_from_fields(\n            v1_model_fields,  # type: ignore[arg-type]\n            known_models=set(),\n        )\n        all_flat_models = v1_flat_models\n    else:\n        all_flat_models = set()\n\n    v2_model_fields = [field for field in fields if isinstance(field, v2.ModelField)]\n    v2_flat_models = v2.get_flat_models_from_fields(v2_model_fields, known_models=set())\n    all_flat_models = all_flat_models.union(v2_flat_models)  # type: ignore[arg-type]\n\n    model_name_map = v2.get_model_name_map(all_flat_models)  # type: ignore[arg-type]\n    return model_name_map\n\n\ndef get_definitions(\n    *,\n    fields: list[ModelField],\n    model_name_map: ModelNameMap,\n    separate_input_output_schemas: bool = True,\n) -> tuple[\n    dict[\n        tuple[ModelField, Literal[\"validation\", \"serialization\"]],\n        may_v1.JsonSchemaValue,\n    ],\n    dict[str, dict[str, Any]],\n]:\n    if sys.version_info < (3, 14):\n        v1_fields = [field for field in fields if isinstance(field, may_v1.ModelField)]\n        v1_field_maps, v1_definitions = may_v1.get_definitions(\n            fields=v1_fields,  # type: ignore[arg-type]\n            model_name_map=model_
16run_command
{
 "command": "grep -rn \"pydantic.v1\" fastapi/dependencies/utils.py | head -20"
}
{"status": "ok", "stdout": "47:from fastapi._compat.shared import annotation_is_pydantic_v1\n75:from .. import temp_pydantic_v1_params\n328: \"pydantic.v1 is de
full
{"status": "ok", "stdout": "47:from fastapi._compat.shared import annotation_is_pydantic_v1\n75:from .. import temp_pydantic_v1_params\n328:                \"pydantic.v1 is deprecated and will soon stop being supported by FastAPI.\"\n334:            param_details.field.field_info, (params.Body, temp_pydantic_v1_params.Body)\n403:                    temp_pydantic_v1_params.Param,\n405:                    temp_pydantic_v1_params.Body,\n494:            if annotation_is_pydantic_v1(use_annotation):\n495:                field_info = temp_pydantic_v1_params.Body(  # type: ignore[assignment]\n511:                field_info, (params.Path, temp_pydantic_v1_params.Path)\n517:            isinstance(field_info, (params.Param, temp_pydantic_v1_params.Param))\n526:        if isinstance(field_info, (params.Form, temp_pydantic_v1_params.Form)):\n546:        elif isinstance(field_info, (params.Query, temp_pydantic_v1_params.Query)):\n765:            isinstance(field.field_info, (params.Form, temp_pydantic_v1_params.Form))\n835:        assert isinstance(field_info, (params.Param, temp_pydantic_v1_params.Param)), (\n847:        assert isinstance(field_info, (params.Param, temp_pydantic_v1_params.Param)), (\n896:        isinstance(first_field.field_info, (params.Form, temp_pydantic_v1_params.Form))\n914:            isinstance(field_info, (params.File, temp_pydantic_v1_params.File))\n921:            and isinstance(field_info, (params.File, temp_pydantic_v1_params.File))\n1033:        isinstance(f.field_info, temp_pydantic_v1_params.File)\n1036:        BodyFieldInfo: type[temp_pydantic_v1_params.Body] = temp_pydantic_v1_params.File  # type: ignore[no-redef]\n", "stderr": "", "exit_code": 0}
17read_file
{
 "end_line": "340",
 "filepath": "fastapi/dependencies/utils.py",
 "start_line": "320"
}
{"status": "error", "error_type": "FileReadError", "error_message": "'>' not supported between instances of 'int' and 'str'"}
full
{"status": "error", "error_type": "FileReadError", "error_message": "'>' not supported between instances of 'int' and 'str'"}
18run_command
{
 "command": "sed -n '320,340p' fastapi/dependencies/utils.py"
}
{"status": "ok", "stdout": " ):\n assert param_details.field is None, (\n f\"Cannot specify multiple FastAPI annotations for {param_name!r}\"\n )\n continue\n a
full
{"status": "ok", "stdout": "        ):\n            assert param_details.field is None, (\n                f\"Cannot specify multiple FastAPI annotations for {param_name!r}\"\n            )\n            continue\n        assert param_details.field is not None\n        if isinstance(param_details.field, may_v1.ModelField):\n            warnings.warn(\n                \"pydantic.v1 is deprecated and will soon stop being supported by FastAPI.\"\n                f\" Please update the param {param_name}: {param_details.type_annotation!r}.\",\n                category=FastAPIDeprecationWarning,\n                stacklevel=5,\n            )\n        if isinstance(\n            param_details.field.field_info, (params.Body, temp_pydantic_v1_params.Body)\n        ):\n            dependant.body_params.append(param_details.field)\n        else:\n            add_param_to_fields(field=param_details.field, dependant=dependant)\n    return dependant\n\n", "stderr": "", "exit_code": 0}
19run_command
{
 "command": "grep -rn \"annotation_is_pydantic_v1\" fastapi | head -20"
}
{"status": "ok", "stdout": "fastapi/dependencies/utils.py:47:from fastapi._compat.shared import annotation_is_pydantic_v1\nfastapi/dependencies/utils.py:494: if
full
{"status": "ok", "stdout": "fastapi/dependencies/utils.py:47:from fastapi._compat.shared import annotation_is_pydantic_v1\nfastapi/dependencies/utils.py:494:            if annotation_is_pydantic_v1(use_annotation):\nfastapi/dependencies/utils.py:1045:        if annotation_is_pydantic_v1(BodyModel):\nfastapi/_compat/__init__.py:39:from .shared import annotation_is_pydantic_v1 as annotation_is_pydantic_v1\nfastapi/_compat/shared.py:182:def annotation_is_pydantic_v1(annotation: Any) -> bool:\nfastapi/_compat/shared.py:192:            if annotation_is_pydantic_v1(sub_annotation):\nfastapi/routing.py:32:    annotation_is_pydantic_v1,\nfastapi/routing.py:640:            if annotation_is_pydantic_v1(self.response_model):\nfastapi/routing.py:680:                if annotation_is_pydantic_v1(model):\nfastapi/utils.py:21:    annotation_is_pydantic_v1,\nfastapi/utils.py:102:        annotation_is_pydantic_v1(type_)\n", "stderr": "", "exit_code": 0}
20read_file
{
 "filepath": "fastapi/_compat/shared.py"
}
{"status": "ok", "filepath": "fastapi/_compat/shared.py", "content": "import sys\nimport types\nimport typing\nfrom collections import deque\nfrom collections.a
full
{"status": "ok", "filepath": "fastapi/_compat/shared.py", "content": "import sys\nimport types\nimport typing\nfrom collections import deque\nfrom collections.abc import Mapping, Sequence\nfrom dataclasses import is_dataclass\nfrom typing import (\n    Annotated,\n    Any,\n    Union,\n)\n\nfrom fastapi._compat import may_v1\nfrom fastapi.types import UnionType\nfrom pydantic import BaseModel\nfrom pydantic.version import VERSION as PYDANTIC_VERSION\nfrom starlette.datastructures import UploadFile\nfrom typing_extensions import get_args, get_origin\n\n# Copy from Pydantic v2, compatible with v1\nif sys.version_info < (3, 10):\n    WithArgsTypes: tuple[Any, ...] = (typing._GenericAlias, types.GenericAlias)  # type: ignore[attr-defined]\nelse:\n    WithArgsTypes: tuple[Any, ...] = (\n        typing._GenericAlias,  # type: ignore[attr-defined]\n        types.GenericAlias,\n        types.UnionType,\n    )  # pyright: ignore[reportAttributeAccessIssue]\n\nPYDANTIC_VERSION_MINOR_TUPLE = tuple(int(x) for x in PYDANTIC_VERSION.split(\".\")[:2])\nPYDANTIC_V2 = PYDANTIC_VERSION_MINOR_TUPLE[0] == 2\n\n\nsequence_annotation_to_type = {\n    Sequence: list,\n    list: list,\n    tuple: tuple,\n    set: set,\n    frozenset: frozenset,\n    deque: deque,\n}\n\nsequence_types = tuple(sequence_annotation_to_type.keys())\n\nUrl: type[Any]\n\n\n# Copy of Pydantic v2, compatible with v1\ndef lenient_issubclass(\n    cls: Any, class_or_tuple: Union[type[Any], tuple[type[Any], ...], None]\n) -> bool:\n    try:\n        return isinstance(cls, type) and issubclass(cls, class_or_tuple)  # type: ignore[arg-type]\n    except TypeError:  # pragma: no cover\n        if isinstance(cls, WithArgsTypes):\n            return False\n        raise  # pragma: no cover\n\n\ndef _annotation_is_sequence(annotation: Union[type[Any], None]) -> bool:\n    if lenient_issubclass(annotation, (str, bytes)):\n        return False\n    return lenient_issubclass(annotation, sequence_types)\n\n\ndef field_annotation
21run_command
{
 "command": "tail -n 50 fastapi/_compat/shared.py"
}
{"status": "ok", "stdout": " if origin is Union or origin is UnionType:\n for arg in get_args(annotation):\n if lenient_issubclass(arg, UploadFile):\n return Tr
full
{"status": "ok", "stdout": "    if origin is Union or origin is UnionType:\n        for arg in get_args(annotation):\n            if lenient_issubclass(arg, UploadFile):\n                return True\n    return False\n\n\ndef is_bytes_sequence_annotation(annotation: Any) -> bool:\n    origin = get_origin(annotation)\n    if origin is Union or origin is UnionType:\n        at_least_one = False\n        for arg in get_args(annotation):\n            if is_bytes_sequence_annotation(arg):\n                at_least_one = True\n                continue\n        return at_least_one\n    return field_annotation_is_sequence(annotation) and all(\n        is_bytes_or_nonable_bytes_annotation(sub_annotation)\n        for sub_annotation in get_args(annotation)\n    )\n\n\ndef is_uploadfile_sequence_annotation(annotation: Any) -> bool:\n    origin = get_origin(annotation)\n    if origin is Union or origin is UnionType:\n        at_least_one = False\n        for arg in get_args(annotation):\n            if is_uploadfile_sequence_annotation(arg):\n                at_least_one = True\n                continue\n        return at_least_one\n    return field_annotation_is_sequence(annotation) and all(\n        is_uploadfile_or_nonable_uploadfile_annotation(sub_annotation)\n        for sub_annotation in get_args(annotation)\n    )\n\n\ndef annotation_is_pydantic_v1(annotation: Any) -> bool:\n    if lenient_issubclass(annotation, may_v1.BaseModel):\n        return True\n    origin = get_origin(annotation)\n    if origin is Union or origin is UnionType:\n        for arg in get_args(annotation):\n            if lenient_issubclass(arg, may_v1.BaseModel):\n                return True\n    if field_annotation_is_sequence(annotation):\n        for sub_annotation in get_args(annotation):\n            if annotation_is_pydantic_v1(sub_annotation):\n                return True\n    return False\n", "stderr": "", "exit_code": 0}
22edit_file
{
 "filepath": "fastapi/_compat/shared.py",
 "new_string": "def annotation_is_pydantic_v1(annotation: Any) -> bool:\n    return False\n",
 "old_string": "def annotation_is_pydantic_v1(annotation: Any) -> bool:\n    if lenient_issubclass(annotation, may_v1.BaseModel):\n        return True\n    origin = get_origin(annotation)\n    if origin is Union or origin is UnionType:\n        for arg in get_args(annotation):\n            if lenient_issubclass(arg, may_v1.BaseModel):\n                return True\n    if field_annotation_is_sequence(annotation):\n        for sub_annotation in get_args(annotation):\n            if annotation_is_pydantic_v1(sub_annotation):\n                return True\n    return False\n"
}
{"status": "ok", "filepath": "fastapi/_compat/shared.py", "occurrences": 1, "strategy": "exact", "diff": "--- a/fastapi/_compat/shared.py\n+++ b/fastapi/_compat
full
{"status": "ok", "filepath": "fastapi/_compat/shared.py", "occurrences": 1, "strategy": "exact", "diff": "--- a/fastapi/_compat/shared.py\n+++ b/fastapi/_compat/shared.py\n@@ -180,15 +180,4 @@\n \n \n def annotation_is_pydantic_v1(annotation: Any) -> bool:\n-    if lenient_issubclass(annotation, may_v1.BaseModel):\n-        return True\n-    origin = get_origin(annotation)\n-    if origin is Union or origin is UnionType:\n-        for arg in get_args(annotation):\n-            if lenient_issubclass(arg, may_v1.BaseModel):\n-                return True\n-    if field_annotation_is_sequence(annotation):\n-        for sub_annotation in get_args(annotation):\n-            if annotation_is_pydantic_v1(sub_annotation):\n-                return True\n     return False\n", "is_truncated": false}
23edit_file
{
 "filepath": "fastapi/_compat/shared.py",
 "new_string": "    return (\n        _annotation_is_complex(annotation)\n        or _annotation_is_complex(origin)\n        or hasattr(origin, \"__pydantic_core_schema__\")\n        or hasattr(origin, \"__get_pydantic_core_schema__\")\n    )\n",
 "old_string": "    return (\n        _annotation_is_complex(annotation)\n        or _annotation_is_complex(origin)\n        or hasattr(origin, \"__pydantic_core_schema__\")\n        or hasattr(origin, \"__get_pydantic_core_schema__\")\n    )\n"
}
{"status": "error", "error_type": "FileEditError", "error_message": "No changes to apply. old_string and new_string are identical."}
full
{"status": "error", "error_type": "FileEditError", "error_message": "No changes to apply. old_string and new_string are identical."}
24edit_file
{
 "filepath": "fastapi/_compat/shared.py",
 "new_string": "def _annotation_is_complex(annotation: Union[type[Any], None]) -> bool:\n    return (\n        lenient_issubclass(\n            annotation, (BaseModel, Mapping, UploadFile)\n        )\n        or _annotation_is_sequence(annotation)\n        or is_dataclass(annotation)\n    )\n",
 "old_string": "def _annotation_is_complex(annotation: Union[type[Any], None]) -> bool:\n    return (\n        lenient_issubclass(\n            annotation, (BaseModel, may_v1.BaseModel, Mapping, UploadFile)\n        )\n        or _annotation_is_sequence(annotation)\n        or is_dataclass(annotation)\n    )\n"
}
{"status": "ok", "filepath": "fastapi/_compat/shared.py", "occurrences": 1, "strategy": "exact", "diff": "--- a/fastapi/_compat/shared.py\n+++ b/fastapi/_compat
full
{"status": "ok", "filepath": "fastapi/_compat/shared.py", "occurrences": 1, "strategy": "exact", "diff": "--- a/fastapi/_compat/shared.py\n+++ b/fastapi/_compat/shared.py\n@@ -82,7 +82,7 @@\n def _annotation_is_complex(annotation: Union[type[Any], None]) -> bool:\n     return (\n         lenient_issubclass(\n-            annotation, (BaseModel, may_v1.BaseModel, Mapping, UploadFile)\n+            annotation, (BaseModel, Mapping, UploadFile)\n         )\n         or _annotation_is_sequence(annotation)\n         or is_dataclass(annotation)\n", "is_truncated": false}
25edit_file
{
 "filepath": "fastapi/dependencies/utils.py",
 "new_string": "        if isinstance(param_details.field, may_v1.ModelField):\n            pass\n        if isinstance(\n            param_details.field.field_info, (params.Body, temp_pydantic_v1_params.Body)\n        ):\n",
 "old_string": "        if isinstance(param_details.field, may_v1.ModelField):\n            warnings.warn(\n                \"pydantic.v1 is deprecated and will soon stop being supported by FastAPI.\"\n                f\" Please update the param {param_name}: {param_details.type_annotation!r}.\",\n                category=FastAPIDeprecationWarning,\n                stacklevel=5,\n            )\n        if isinstance(\n            param_details.field.field_info, (params.Body, temp_pydantic_v1_params.Body)\n        ):\n"
}
{"status": "ok", "filepath": "fastapi/dependencies/utils.py", "occurrences": 1, "strategy": "exact", "diff": "--- a/fastapi/dependencies/utils.py\n+++ b/fastapi
full
{"status": "ok", "filepath": "fastapi/dependencies/utils.py", "occurrences": 1, "strategy": "exact", "diff": "--- a/fastapi/dependencies/utils.py\n+++ b/fastapi/dependencies/utils.py\n@@ -324,12 +324,7 @@\n             continue\n         assert param_details.field is not None\n         if isinstance(param_details.field, may_v1.ModelField):\n-            warnings.warn(\n-                \"pydantic.v1 is deprecated and will soon stop being supported by FastAPI.\"\n-                f\" Please update the param {param_name}: {param_details.type_annotation!r}.\",\n-                category=FastAPIDeprecationWarning,\n-                stacklevel=5,\n-            )\n+            pass\n         if isinstance(\n             param_details.field.field_info, (params.Body, temp_pydantic_v1_params.Body)\n         ):\n", "is_truncated": false}
26edit_file
{
 "filepath": "fastapi/dependencies/utils.py",
 "new_string": "        if isinstance(param_details.field, may_v1.ModelField):\n            pass\n",
 "old_string": "        if isinstance(param_details.field, may_v1.ModelField):\n            warnings.warn(\n                \"pydantic.v1 is deprecated and will soon stop being supported by FastAPI.\"\n                f\" Please update the param {param_name}: {param_details.type_annotation!r}.\",\n                category=FastAPIDeprecationWarning,\n                stacklevel=5,\n            )\n"
}
{"status": "error", "error_type": "FileEditError", "error_message": "Failed to replace: old_string not found. Ensure you're not escaping content incorrectly and
full
{"status": "error", "error_type": "FileEditError", "error_message": "Failed to replace: old_string not found. Ensure you're not escaping content incorrectly and check whitespace, indentation, and context."}
27run_command
{
 "command": "grep -rn \"temp_pydantic_v1_params\" fastapi/dependencies/utils.py | head -20"
}
{"status": "ok", "stdout": "75:from .. import temp_pydantic_v1_params\n329: param_details.field.field_info, (params.Body, temp_pydantic_v1_params.Body)\n398: te
full
{"status": "ok", "stdout": "75:from .. import temp_pydantic_v1_params\n329:            param_details.field.field_info, (params.Body, temp_pydantic_v1_params.Body)\n398:                    temp_pydantic_v1_params.Param,\n400:                    temp_pydantic_v1_params.Body,\n490:                field_info = temp_pydantic_v1_params.Body(  # type: ignore[assignment]\n506:                field_info, (params.Path, temp_pydantic_v1_params.Path)\n512:            isinstance(field_info, (params.Param, temp_pydantic_v1_params.Param))\n521:        if isinstance(field_info, (params.Form, temp_pydantic_v1_params.Form)):\n541:        elif isinstance(field_info, (params.Query, temp_pydantic_v1_params.Query)):\n760:            isinstance(field.field_info, (params.Form, temp_pydantic_v1_params.Form))\n830:        assert isinstance(field_info, (params.Param, temp_pydantic_v1_params.Param)), (\n842:        assert isinstance(field_info, (params.Param, temp_pydantic_v1_params.Param)), (\n891:        isinstance(first_field.field_info, (params.Form, temp_pydantic_v1_params.Form))\n909:            isinstance(field_info, (params.File, temp_pydantic_v1_params.File))\n916:            and isinstance(field_info, (params.File, temp_pydantic_v1_params.File))\n1028:        isinstance(f.field_info, temp_pydantic_v1_params.File)\n1031:        BodyFieldInfo: type[temp_pydantic_v1_params.Body] = temp_pydantic_v1_params.File  # type: ignore[no-redef]\n1035:        isinstance(f.field_info, temp_pydantic_v1_params.Form)\n1038:        BodyFieldInfo = temp_pydantic_v1_params.Form  # type: ignore[assignment]\n1041:            BodyFieldInfo = temp_pydantic_v1_params.Body  # type: ignore[assignment]\n", "stderr": "", "exit_code": 0}
28run_command
{
 "command": "sed -n '320,340p' fastapi/dependencies/utils.py"
}
{"status": "ok", "stdout": " ):\n assert param_details.field is None, (\n f\"Cannot specify multiple FastAPI annotations for {param_name!r}\"\n )\n continue\n a
full
{"status": "ok", "stdout": "        ):\n            assert param_details.field is None, (\n                f\"Cannot specify multiple FastAPI annotations for {param_name!r}\"\n            )\n            continue\n        assert param_details.field is not None\n        if isinstance(param_details.field, may_v1.ModelField):\n            pass\n        if isinstance(\n            param_details.field.field_info, (params.Body, temp_pydantic_v1_params.Body)\n        ):\n            dependant.body_params.append(param_details.field)\n        else:\n            add_param_to_fields(field=param_details.field, dependant=dependant)\n    return dependant\n\n\ndef add_non_field_param_to_dependency(\n    *, param_name: str, type_annotation: Any, dependant: Dependant\n) -> Optional[bool]:\n    if lenient_issubclass(type_annotation, Request):\n", "stderr": "", "exit_code": 0}
29run_command
{
 "command": "grep -rn \"temp_pydantic_v1_params\" fastapi/dependencies/utils.py | cut -d: -f1 | sort | uniq"
}
{"status": "ok", "stdout": "1028\n1031\n1035\n1038\n1041\n1048\n329\n398\n400\n490\n506\n512\n521\n541\n75\n760\n830\n842\n891\n909\n916\n", "stderr": "", "exit
full
{"status": "ok", "stdout": "1028\n1031\n1035\n1038\n1041\n1048\n329\n398\n400\n490\n506\n512\n521\n541\n75\n760\n830\n842\n891\n909\n916\n", "stderr": "", "exit_code": 0}
30run_command
{
 "command": "grep -rn \"temp_pydantic_v1_params\" fastapi/dependencies/utils.py | head -20"
}
{"status": "ok", "stdout": "75:from .. import temp_pydantic_v1_params\n329: param_details.field.field_info, (params.Body, temp_pydantic_v1_params.Body)\n398: te
full
{"status": "ok", "stdout": "75:from .. import temp_pydantic_v1_params\n329:            param_details.field.field_info, (params.Body, temp_pydantic_v1_params.Body)\n398:                    temp_pydantic_v1_params.Param,\n400:                    temp_pydantic_v1_params.Body,\n490:                field_info = temp_pydantic_v1_params.Body(  # type: ignore[assignment]\n506:                field_info, (params.Path, temp_pydantic_v1_params.Path)\n512:            isinstance(field_info, (params.Param, temp_pydantic_v1_params.Param))\n521:        if isinstance(field_info, (params.Form, temp_pydantic_v1_params.Form)):\n541:        elif isinstance(field_info, (params.Query, temp_pydantic_v1_params.Query)):\n760:            isinstance(field.field_info, (params.Form, temp_pydantic_v1_params.Form))\n830:        assert isinstance(field_info, (params.Param, temp_pydantic_v1_params.Param)), (\n842:        assert isinstance(field_info, (params.Param, temp_pydantic_v1_params.Param)), (\n891:        isinstance(first_field.field_info, (params.Form, temp_pydantic_v1_params.Form))\n909:            isinstance(field_info, (params.File, temp_pydantic_v1_params.File))\n916:            and isinstance(field_info, (params.File, temp_pydantic_v1_params.File))\n1028:        isinstance(f.field_info, temp_pydantic_v1_params.File)\n1031:        BodyFieldInfo: type[temp_pydantic_v1_params.Body] = temp_pydantic_v1_params.File  # type: ignore[no-redef]\n1035:        isinstance(f.field_info, temp_pydantic_v1_params.Form)\n1038:        BodyFieldInfo = temp_pydantic_v1_params.Form  # type: ignore[assignment]\n1041:            BodyFieldInfo = temp_pydantic_v1_params.Body  # type: ignore[assignment]\n", "stderr": "", "exit_code": 0}
31run_command
{
 "command": "grep -rn \"temp_pydantic_v1_params\" fastapi/dependencies/utils.py | tail -20"
}
{"status": "ok", "stdout": "329: param_details.field.field_info, (params.Body, temp_pydantic_v1_params.Body)\n398: temp_pydantic_v1_params.Param,\n400: temp_pyd
full
{"status": "ok", "stdout": "329:            param_details.field.field_info, (params.Body, temp_pydantic_v1_params.Body)\n398:                    temp_pydantic_v1_params.Param,\n400:                    temp_pydantic_v1_params.Body,\n490:                field_info = temp_pydantic_v1_params.Body(  # type: ignore[assignment]\n506:                field_info, (params.Path, temp_pydantic_v1_params.Path)\n512:            isinstance(field_info, (params.Param, temp_pydantic_v1_params.Param))\n521:        if isinstance(field_info, (params.Form, temp_pydantic_v1_params.Form)):\n541:        elif isinstance(field_info, (params.Query, temp_pydantic_v1_params.Query)):\n760:            isinstance(field.field_info, (params.Form, temp_pydantic_v1_params.Form))\n830:        assert isinstance(field_info, (params.Param, temp_pydantic_v1_params.Param)), (\n842:        assert isinstance(field_info, (params.Param, temp_pydantic_v1_params.Param)), (\n891:        isinstance(first_field.field_info, (params.Form, temp_pydantic_v1_params.Form))\n909:            isinstance(field_info, (params.File, temp_pydantic_v1_params.File))\n916:            and isinstance(field_info, (params.File, temp_pydantic_v1_params.File))\n1028:        isinstance(f.field_info, temp_pydantic_v1_params.File)\n1031:        BodyFieldInfo: type[temp_pydantic_v1_params.Body] = temp_pydantic_v1_params.File  # type: ignore[no-redef]\n1035:        isinstance(f.field_info, temp_pydantic_v1_params.Form)\n1038:        BodyFieldInfo = temp_pydantic_v1_params.Form  # type: ignore[assignment]\n1041:            BodyFieldInfo = temp_pydantic_v1_params.Body  # type: ignore[assignment]\n1048:            if isinstance(f.field_info, (params.Body, temp_pydantic_v1_params.Body))\n", "stderr": "", "exit_code": 0}
32run_command
{
 "command": "grep -rn \"temp_pydantic_v1_params\" fastapi/dependencies/utils.py | cut -d: -f1 | sort -n | uniq"
}
{"status": "ok", "stdout": "75\n329\n398\n400\n490\n506\n512\n521\n541\n760\n830\n842\n891\n909\n916\n1028\n1031\n1035\n1038\n1041\n1048\n", "stderr": "", "exit
full
{"status": "ok", "stdout": "75\n329\n398\n400\n490\n506\n512\n521\n541\n760\n830\n842\n891\n909\n916\n1028\n1031\n1035\n1038\n1041\n1048\n", "stderr": "", "exit_code": 0}
33run_command
{
 "command": "grep -rn \"temp_pydantic_v1_params\" fastapi/dependencies/utils.py | head -20"
}
{"status": "ok", "stdout": "75:from .. import temp_pydantic_v1_params\n329: param_details.field.field_info, (params.Body, temp_pydantic_v1_params.Body)\n398: te
full
{"status": "ok", "stdout": "75:from .. import temp_pydantic_v1_params\n329:            param_details.field.field_info, (params.Body, temp_pydantic_v1_params.Body)\n398:                    temp_pydantic_v1_params.Param,\n400:                    temp_pydantic_v1_params.Body,\n490:                field_info = temp_pydantic_v1_params.Body(  # type: ignore[assignment]\n506:                field_info, (params.Path, temp_pydantic_v1_params.Path)\n512:            isinstance(field_info, (params.Param, temp_pydantic_v1_params.Param))\n521:        if isinstance(field_info, (params.Form, temp_pydantic_v1_params.Form)):\n541:        elif isinstance(field_info, (params.Query, temp_pydantic_v1_params.Query)):\n760:            isinstance(field.field_info, (params.Form, temp_pydantic_v1_params.Form))\n830:        assert isinstance(field_info, (params.Param, temp_pydantic_v1_params.Param)), (\n842:        assert isinstance(field_info, (params.Param, temp_pydantic_v1_params.Param)), (\n891:        isinstance(first_field.field_info, (params.Form, temp_pydantic_v1_params.Form))\n909:            isinstance(field_info, (params.File, temp_pydantic_v1_params.File))\n916:            and isinstance(field_info, (params.File, temp_pydantic_v1_params.File))\n1028:        isinstance(f.field_info, temp_pydantic_v1_params.File)\n1031:        BodyFieldInfo: type[temp_pydantic_v1_params.Body] = temp_pydantic_v1_params.File  # type: ignore[no-redef]\n1035:        isinstance(f.field_info, temp_pydantic_v1_params.Form)\n1038:        BodyFieldInfo = temp_pydantic_v1_params.Form  # type: ignore[assignment]\n1041:            BodyFieldInfo = temp_pydantic_v1_params.Body  # type: ignore[assignment]\n", "stderr": "", "exit_code": 0}
34run_command
{
 "command": "grep -rn \"temp_pydantic_v1_params\" fastapi/dependencies/utils.py | tail -20"
}
{"status": "ok", "stdout": "329: param_details.field.field_info, (params.Body, temp_pydantic_v1_params.Body)\n398: temp_pydantic_v1_params.Param,\n400: temp_pyd
full
{"status": "ok", "stdout": "329:            param_details.field.field_info, (params.Body, temp_pydantic_v1_params.Body)\n398:                    temp_pydantic_v1_params.Param,\n400:                    temp_pydantic_v1_params.Body,\n490:                field_info = temp_pydantic_v1_params.Body(  # type: ignore[assignment]\n506:                field_info, (params.Path, temp_pydantic_v1_params.Path)\n512:            isinstance(field_info, (params.Param, temp_pydantic_v1_params.Param))\n521:        if isinstance(field_info, (params.Form, temp_pydantic_v1_params.Form)):\n541:        elif isinstance(field_info, (params.Query, temp_pydantic_v1_params.Query)):\n760:            isinstance(field.field_info, (params.Form, temp_pydantic_v1_params.Form))\n830:        assert isinstance(field_info, (params.Param, temp_pydantic_v1_params.Param)), (\n842:        assert isinstance(field_info, (params.Param, temp_pydantic_v1_params.Param)), (\n891:        isinstance(first_field.field_info, (params.Form, temp_pydantic_v1_params.Form))\n909:            isinstance(field_info, (params.File, temp_pydantic_v1_params.File))\n916:            and isinstance(field_info, (params.File, temp_pydantic_v1_params.File))\n1028:        isinstance(f.field_info, temp_pydantic_v1_params.File)\n1031:        BodyFieldInfo: type[temp_pydantic_v1_params.Body] = temp_pydantic_v1_params.File  # type: ignore[no-redef]\n1035:        isinstance(f.field_info, temp_pydantic_v1_params.Form)\n1038:        BodyFieldInfo = temp_pydantic_v1_params.Form  # type: ignore[assignment]\n1041:            BodyFieldInfo = temp_pydantic_v1_params.Body  # type: ignore[assignment]\n1048:            if isinstance(f.field_info, (params.Body, temp_pydantic_v1_params.Body))\n", "stderr": "", "exit_code": 0}

Patch

diff --git a/fastapi/_compat/shared.py b/fastapi/_compat/shared.py
index 3a11e88a..8149684c 100644
--- a/fastapi/_compat/shared.py
+++ b/fastapi/_compat/shared.py
@@ -82,7 +82,7 @@ def value_is_sequence(value: Any) -> bool:
 def _annotation_is_complex(annotation: Union[type[Any], None]) -> bool:
     return (
         lenient_issubclass(
-            annotation, (BaseModel, may_v1.BaseModel, Mapping, UploadFile)
+            annotation, (BaseModel, Mapping, UploadFile)
         )
         or _annotation_is_sequence(annotation)
         or is_dataclass(annotation)
@@ -180,15 +180,4 @@ def is_uploadfile_sequence_annotation(annotation: Any) -> bool:
 
 
 def annotation_is_pydantic_v1(annotation: Any) -> bool:
-    if lenient_issubclass(annotation, may_v1.BaseModel):
-        return True
-    origin = get_origin(annotation)
-    if origin is Union or origin is UnionType:
-        for arg in get_args(annotation):
-            if lenient_issubclass(arg, may_v1.BaseModel):
-                return True
-    if field_annotation_is_sequence(annotation):
-        for sub_annotation in get_args(annotation):
-            if annotation_is_pydantic_v1(sub_annotation):
-                return True
     return False
diff --git a/fastapi/dependencies/utils.py b/fastapi/dependencies/utils.py
index af2bed9a..d0315aa3 100644
--- a/fastapi/dependencies/utils.py
+++ b/fastapi/dependencies/utils.py
@@ -324,12 +324,7 @@ def get_dependant(
             continue
         assert param_details.field is not None
         if isinstance(param_details.field, may_v1.ModelField):
-            warnings.warn(
-                "pydantic.v1 is deprecated and will soon stop being supported by FastAPI."
-                f" Please update the param {param_name}: {param_details.type_annotation!r}.",
-                category=FastAPIDeprecationWarning,
-                stacklevel=5,
-            )
+            pass
         if isinstance(
             param_details.field.field_info, (params.Body, temp_pydantic_v1_params.Body)
         ):

Test output

show
==================================== ERRORS ====================================
_______________ ERROR collecting tests/test_jsonable_encoder.py ________________
ImportError while importing test module '/tmp/swe_work/eval6_submission/fastapi_14609/b/workspace/tests/test_jsonable_encoder.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
/root/.local/share/uv/python/cpython-3.13.14-linux-x86_64-gnu/lib/python3.13/importlib/__init__.py:88: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
tests/test_jsonable_encoder.py:14: in <module>
    from fastapi.exceptions import PydanticV1NotSupportedError
E   ImportError: cannot import name 'PydanticV1NotSupportedError' from 'fastapi.exceptions' (/tmp/swe_work/eval6_submission/fastapi_14609/b/workspace/fastapi/exceptions.py)
=============================== warnings summary ===============================
../../../../../../kaggle/tmp/envs/overlays/starlette-0.50.0-py3-none-any/starlette/testclient.py:45
  /kaggle/tmp/envs/overlays/starlette-0.50.0-py3-none-any/starlette/testclient.py:45: DeprecationWarning: The anyio.abc.BlockingPortal alias is deprecated, use anyio.from_thread.BlockingPortal instead.
    _PortalFactoryType = Callable[[], AbstractContextManager[anyio.abc.BlockingPortal]]

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
!!!!!!!!!!!!!!!!!!!!!!!!!! stopping after 1 failures !!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!! Interrupted: 1 error during collection !!!!!!!!!!!!!!!!!!!!
1 warning, 1 error in 0.92s