← eval3_submission_v2

fastapi_14609

failed CONTEXT UNSUBMITTED agent_error · 19 tool calls · 277 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 (19)

#ToolArgumentsResult
1run_command
{
 "command": "ls -R fastapi/_compat"
}
{"status": "ok", "stdout": "fastapi/_compat:\n__init__.py\nmain.py\nmay_v1.py\nmodel_field.py\nshared.py\nv1.py\nv2.py\n", "exit_code": 0}
full
{"status": "ok", "stdout": "fastapi/_compat:\n__init__.py\nmain.py\nmay_v1.py\nmodel_field.py\nshared.py\nv1.py\nv2.py\n", "exit_code": 0}
2read_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
3read_file
{
 "filepath": "fastapi/_compat/main.py",
 "start_line": 151,
 "end_line": 264
}
{"status": "ok", "filepath": "fastapi/_compat/main.py", "content": "\ndef serialize_sequence_value(*, field: ModelField, value: Any) -> Sequence[Any]:\n if isin
full
{"status": "ok", "filepath": "fastapi/_compat/main.py", "content": "\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_name_map,\n            separate_input_output_schemas=separate_input_output_schemas,\n        )\n\n        v2_fields 
4run_command
{
 "command": "ls fastapi/_compat"
}
{"status": "ok", "stdout": "__init__.py\nmain.py\nmay_v1.py\nmodel_field.py\nshared.py\nv1.py\nv2.py\n", "exit_code": 0}
full
{"status": "ok", "stdout": "__init__.py\nmain.py\nmay_v1.py\nmodel_field.py\nshared.py\nv1.py\nv2.py\n", "exit_code": 0}
5read_file
{
 "filepath": "fastapi/_compat/may_v1.py"
}
{"status": "ok", "filepath": "fastapi/_compat/may_v1.py", "content": "import sys\nfrom collections.abc import Sequence\nfrom typing import Any, Literal, Union\n
full
{"status": "ok", "filepath": "fastapi/_compat/may_v1.py", "content": "import sys\nfrom collections.abc import Sequence\nfrom typing import Any, Literal, Union\n\nfrom fastapi.types import ModelNameMap\n\nif sys.version_info >= (3, 14):\n\n    class AnyUrl:\n        pass\n\n    class BaseConfig:\n        pass\n\n    class BaseModel:\n        pass\n\n    class Color:\n        pass\n\n    class CoreSchema:\n        pass\n\n    class ErrorWrapper:\n        pass\n\n    class FieldInfo:\n        pass\n\n    class GetJsonSchemaHandler:\n        pass\n\n    class JsonSchemaValue:\n        pass\n\n    class ModelField:\n        pass\n\n    class NameEmail:\n        pass\n\n    class RequiredParam:\n        pass\n\n    class SecretBytes:\n        pass\n\n    class SecretStr:\n        pass\n\n    class Undefined:\n        pass\n\n    class UndefinedType:\n        pass\n\n    class Url:\n        pass\n\n    from .v2 import ValidationError, create_model\n\n    def 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\"]], JsonSchemaValue\n        ],\n        dict[str, dict[str, Any]],\n    ]:\n        return {}, {}  # pragma: no cover\n\n\nelse:\n    from .v1 import AnyUrl as AnyUrl\n    from .v1 import BaseConfig as BaseConfig\n    from .v1 import BaseModel as BaseModel\n    from .v1 import Color as Color\n    from .v1 import CoreSchema as CoreSchema\n    from .v1 import ErrorWrapper as ErrorWrapper\n    from .v1 import FieldInfo as FieldInfo\n    from .v1 import GetJsonSchemaHandler as GetJsonSchemaHandler\n    from .v1 import JsonSchemaValue as JsonSchemaValue\n    from .v1 import ModelField as ModelField\n    from .v1 import NameEmail as NameEmail\n    from .v1 import RequiredParam as RequiredParam\n    from .v1 import SecretBytes as SecretBytes\n    from .v1 import SecretS
6run_command
{
 "command": "grep -rn \"pydantic.v1\" ."
}
{"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
7read_file
{
 "filepath": "fastapi/_compat/shared.py",
 "start_line": 182,
 "end_line": 200
}
{"status": "ok", "filepath": "fastapi/_compat/shared.py", "content": "def annotation_is_pydantic_v1(annotation: Any) -> bool:\n if lenient_issubclass(annotation
full
{"status": "ok", "filepath": "fastapi/_compat/shared.py", "content": "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", "start_line": 182, "end_line": 194, "total_lines": 194, "is_truncated": false}
8read_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
9read_file
{
 "end_line": 194,
 "filepath": "fastapi/_compat/shared.py",
 "start_line": 151
}
{"status": "ok", "filepath": "fastapi/_compat/shared.py", "content": "\ndef is_bytes_sequence_annotation(annotation: Any) -> bool:\n origin = get_origin(annotat
full
{"status": "ok", "filepath": "fastapi/_compat/shared.py", "content": "\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", "start_line": 151, "end_line": 194, "total_lines": 194, "is_truncated": false}
10run_command
{
 "command": "ls -R fastapi/_compat"
}
{"status": "ok", "stdout": "fastapi/_compat:\n__init__.py\nmain.py\nmay_v1.py\nmodel_field.py\nshared.py\nv1.py\nv2.py\n", "exit_code": 0}
full
{"status": "ok", "stdout": "fastapi/_compat:\n__init__.py\nmain.py\nmay_v1.py\nmodel_field.py\nshared.py\nv1.py\nv2.py\n", "exit_code": 0}
11read_file
{
 "filepath": "fastapi/_compat/__init__.py"
}
{"status": "ok", "filepath": "fastapi/_compat/__init__.py", "content": "from .main import BaseConfig as BaseConfig\nfrom .main import PydanticSchemaGenerationEr
full
{"status": "ok", "filepath": "fastapi/_compat/__init__.py", "content": "from .main import BaseConfig as BaseConfig\nfrom .main import PydanticSchemaGenerationError as PydanticSchemaGenerationError\nfrom .main import RequiredParam as RequiredParam\nfrom .main import Undefined as Undefined\nfrom .main import UndefinedType as UndefinedType\nfrom .main import Url as Url\nfrom .main import Validator as Validator\nfrom .main import _get_model_config as _get_model_config\nfrom .main import _is_error_wrapper as _is_error_wrapper\nfrom .main import _is_model_class as _is_model_class\nfrom .main import _is_model_field as _is_model_field\nfrom .main import _is_undefined as _is_undefined\nfrom .main import _model_dump as _model_dump\nfrom .main import copy_field_info as copy_field_info\nfrom .main import create_body_model as create_body_model\nfrom .main import evaluate_forwardref as evaluate_forwardref\nfrom .main import get_annotation_from_field_info as get_annotation_from_field_info\nfrom .main import get_cached_model_fields as get_cached_model_fields\nfrom .main import get_compat_model_name_map as get_compat_model_name_map\nfrom .main import get_definitions as get_definitions\nfrom .main import get_missing_field_error as get_missing_field_error\nfrom .main import get_schema_from_model_field as get_schema_from_model_field\nfrom .main import is_bytes_field as is_bytes_field\nfrom .main import is_bytes_sequence_field as is_bytes_sequence_field\nfrom .main import is_scalar_field as is_scalar_field\nfrom .main import is_scalar_sequence_field as is_scalar_sequence_field\nfrom .main import is_sequence_field as is_sequence_field\nfrom .main import serialize_sequence_value as serialize_sequence_value\nfrom .main import (\n    with_info_plain_validator_function as with_info_plain_validator_function,\n)\nfrom .may_v1 import CoreSchema as CoreSchema\nfrom .may_v1 import GetJsonSchemaHandler as GetJsonSchemaHandler\nfrom .may_v1 import JsonSchemaValue as JsonSchemaValue\nfrom .may_v1 im
12read_file
{
 "filepath": "fastapi/_compat/v1.py"
}
{"status": "ok", "filepath": "fastapi/_compat/v1.py", "content": "from collections.abc import Sequence\nfrom copy import copy\nfrom dataclasses import dataclass
full
{"status": "ok", "filepath": "fastapi/_compat/v1.py", "content": "from collections.abc import Sequence\nfrom copy import copy\nfrom dataclasses import dataclass, is_dataclass\nfrom enum import Enum\nfrom typing import (\n    Any,\n    Callable,\n    Union,\n)\n\nfrom fastapi._compat import shared\nfrom fastapi.openapi.constants import REF_PREFIX as REF_PREFIX\nfrom fastapi.types import ModelNameMap\nfrom pydantic.v1 import BaseConfig as BaseConfig\nfrom pydantic.v1 import BaseModel as BaseModel\nfrom pydantic.v1 import ValidationError as ValidationError\nfrom pydantic.v1 import create_model as create_model\nfrom pydantic.v1.class_validators import Validator as Validator\nfrom pydantic.v1.color import Color as Color\nfrom pydantic.v1.error_wrappers import ErrorWrapper as ErrorWrapper\nfrom pydantic.v1.fields import (\n    SHAPE_FROZENSET,\n    SHAPE_LIST,\n    SHAPE_SEQUENCE,\n    SHAPE_SET,\n    SHAPE_SINGLETON,\n    SHAPE_TUPLE,\n    SHAPE_TUPLE_ELLIPSIS,\n)\nfrom pydantic.v1.fields import FieldInfo as FieldInfo\nfrom pydantic.v1.fields import ModelField as ModelField\nfrom pydantic.v1.fields import Undefined as Undefined\nfrom pydantic.v1.fields import UndefinedType as UndefinedType\nfrom pydantic.v1.networks import AnyUrl as AnyUrl\nfrom pydantic.v1.networks import NameEmail as NameEmail\nfrom pydantic.v1.schema import TypeModelSet as TypeModelSet\nfrom pydantic.v1.schema import field_schema, model_process_schema\nfrom pydantic.v1.schema import (\n    get_annotation_from_field_info as get_annotation_from_field_info,\n)\nfrom pydantic.v1.schema import (\n    get_flat_models_from_field as get_flat_models_from_field,\n)\nfrom pydantic.v1.schema import (\n    get_flat_models_from_fields as get_flat_models_from_fields,\n)\nfrom pydantic.v1.schema import get_model_name_map as get_model_name_map\nfrom pydantic.v1.types import SecretBytes as SecretBytes\nfrom pydantic.v1.types import SecretStr as SecretStr\nfrom pydantic.v1.typing import evaluate_forwardref as evaluate_f
13run_command
{
 "command": "ls fastapi/temp_pydantic_v1_params.py"
}
{"status": "ok", "stdout": "fastapi/temp_pydantic_v1_params.py\n", "exit_code": 0}
full
{"status": "ok", "stdout": "fastapi/temp_pydantic_v1_params.py\n", "exit_code": 0}
14read_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          
15run_command
{
 "command": "grep -rn \"temp_pydantic_v1_params\" ."
}
{"status": "ok", "stdout": "./fastapi/dependencies/utils.py:75:from .. import temp_pydantic_v1_params\n./fastapi/dependencies/utils.py:334: param_details.field.
full
{"status": "ok", "stdout": "./fastapi/dependencies/utils.py:75:from .. import temp_pydantic_v1_params\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: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_info, (params.File, temp_pydantic_v1_params.File))\n./fastapi/dependencies/utils.py:1033:        isinstance(f.field_info, temp_pydantic_v1_params.File)\n./fastapi/dependencies/utils.py:1036:        BodyFieldInfo: type[temp_pydantic_v1_params.Body] = temp_pydantic_v1_params.File  # type: ignore[no-redef]\n./fastapi/depende
16run_command
{
 "command": "grep -rn \"may_v1\" fastapi/_compat/main.py"
}
{"status": "ok", "stdout": "8:from fastapi._compat import may_v1\n33: if lenient_issubclass(model, may_v1.BaseModel):\n44: if isinstance(value, may_v1.Undefined
full
{"status": "ok", "stdout": "8:from fastapi._compat import may_v1\n33:    if lenient_issubclass(model, may_v1.BaseModel):\n44:    if isinstance(value, may_v1.UndefinedType):\n51:    if isinstance(model, may_v1.BaseModel):\n62:    if isinstance(model, may_v1.BaseModel):\n71:    if isinstance(exc, may_v1.ErrorWrapper):\n78:    if isinstance(field_info, may_v1.FieldInfo):\n89:    if fields and isinstance(fields[0], may_v1.ModelField):\n100:    if isinstance(field_info, may_v1.FieldInfo):\n113:    if isinstance(field, may_v1.ModelField):\n122:    if isinstance(field, may_v1.ModelField):\n131:    if isinstance(field, may_v1.ModelField):\n144:    if isinstance(field, may_v1.ModelField):\n153:    if isinstance(field, may_v1.ModelField):\n163:        field for field in fields if isinstance(field, may_v1.ModelField)\n192:        may_v1.JsonSchemaValue,\n197:        v1_fields = [field for field in fields if isinstance(field, may_v1.ModelField)]\n198:        v1_field_maps, v1_definitions = may_v1.get_definitions(\n231:        may_v1.JsonSchemaValue,\n235:    if isinstance(field, may_v1.ModelField):\n254:    if isinstance(value, may_v1.ModelField):\n261:    if lenient_issubclass(value, may_v1.BaseModel):\n", "exit_code": 0}
17edit_file
{
 "filepath": "fastapi/_compat/main.py",
 "new_string": "from . 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    from . import v2\n\n    return v2.get_model_fields(model)  # type: ignore[return-value]\n\n\ndef _is_undefined(value: object) -> bool:\n    return isinstance(value, v2.UndefinedType)\n\n\ndef _get_model_config(model: BaseModel) -> Any:\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    return v2._model_dump(model, mode=mode, **kwargs)\n\n\ndef _is_error_wrapper(exc: Exception) -> bool:\n    return isinstance(exc, v2.ErrorWrapper)\n\n\ndef copy_field_info(*, field_info: FieldInfo, annotation: Any) -> FieldInfo:\n    return v2.copy_field_info(field_info=field_info, annotation=annotation)\n\n\ndef create_body_model(\n    *, fields: Sequence[ModelField], model_name: str\n) -> type[BaseModel]:\n    return v2.create_body_model(fields=fields, model_name=model_name)  # type: ignore[arg-type]\n\n\ndef get_annotation_from_field_info(\n    annotation: Any, field_info: FieldInfo, field_name: str\n) -> Any:\n    return v2.get_annotation_from_field_info(\n        annotation=annotation, field_info=field_info, field_name=field_name\n    )\n\n\ndef is_bytes_field(field: ModelField) -> bool:\n    return v2.is_bytes_field(field)  # type: ignore[arg-type]\n\n\ndef is_bytes_sequence_field(field: ModelField) -> bool:\n    return v2.is_bytes_sequence_field(field)  # type: ignore[arg-type]\n\n\ndef is_scalar_field(field: ModelField) -> bool:\n    return v2.is_scalar_field(field)  # type: ignore[arg-type]\n\n\ndef is_scalar_sequence_field(field: ModelField) -> bool:\n    return v2.is_scalar_sequence_field(field)  # type: ignore[arg-type]\n\n\ndef is_sequence_field(field: ModelField) -> bool:\n    return v2.is_sequence_field(field)  # type: ignore[arg-type]\n",
 "old_string": "from 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@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 
{"status": "ok", "filepath": "fastapi/_compat/main.py", "occurrences": 1, "strategy": "regex", "diff": "--- a/fastapi/_compat/main.py\n+++ b/fastapi/_compat/mai
full
{"status": "ok", "filepath": "fastapi/_compat/main.py", "occurrences": 1, "strategy": "regex", "diff": "--- a/fastapi/_compat/main.py\n+++ b/fastapi/_compat/main.py\n@@ -4,12 +4,6 @@\n from typing import (\n     Any,\n )\n-\n-from fastapi._compat import may_v1\n-from fastapi._compat.shared import lenient_issubclass\n-from fastapi.types import ModelNameMap\n-from pydantic import BaseModel\n-from typing_extensions import Literal\n \n from . import v2\n from .model_field import ModelField\n@@ -30,109 +24,56 @@\n \n @lru_cache\n def 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+    from . import v2\n+\n+    return v2.get_model_fields(model)  # type: ignore[return-value]\n \n \n def _is_undefined(value: object) -> bool:\n-    if isinstance(value, may_v1.UndefinedType):\n-        return True\n-\n     return isinstance(value, v2.UndefinedType)\n \n \n def _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 \n def _model_dump(\n     model: BaseModel, mode: Literal[\"json\", \"python\"] = \"json\", **kwargs: Any\n ) -> Any:\n-    if isinstance(model, may_v1.BaseModel):\n-        from fastapi._compat import v1\n-\n-        return v1._model_dump(model, mode=mode, **kwargs)\n-\n     return v2._model_dump(model, mode=mode, **kwargs)\n \n \n def _is_error_wrapper(exc: Exception) -> bool:\n-    if isinstance(exc, may_v1.ErrorWrapper):\n-        return True\n-\n     return isinstance(exc, v2.ErrorWrapper)\n \n \n def copy_field_info(*, field_info: FieldInfo, annotation: Any) -> FieldInfo:\n-  
18edit_file
{
 "filepath": "fastapi/_compat/main.py",
 "new_string": "from collections.abc import Sequence\nfrom functools import lru_cache\nfrom typing import (\n    Any,\n)\n\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",
 "old_string": "from . 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"
}
{"status": "ok", "filepath": "fastapi/_compat/main.py", "occurrences": 1, "strategy": "regex", "diff": "--- a/fastapi/_compat/main.py\n+++ b/fastapi/_compat/mai
full
{"status": "ok", "filepath": "fastapi/_compat/main.py", "occurrences": 1, "strategy": "regex", "diff": "--- a/fastapi/_compat/main.py\n+++ b/fastapi/_compat/main.py\n@@ -4,6 +4,17 @@\n from typing import (\n     Any,\n )\n+\n+from collections.abc import Sequence\n+from functools import lru_cache\n+from typing import (\n+    Any,\n+)\n+\n+from fastapi._compat.shared import lenient_issubclass\n+from fastapi.types import ModelNameMap\n+from pydantic import BaseModel\n+from typing_extensions import Literal\n \n from . import v2\n from .model_field import ModelField\n@@ -20,6 +31,7 @@\n from .v2 import (\n     with_info_plain_validator_function as with_info_plain_validator_function,\n )\n+\n \n \n @lru_cache\n", "is_truncated": false}
19edit_file
{
 "filepath": "fastapi/_compat/main.py",
 "new_string": "def serialize_sequence_value(*, field: ModelField, value: Any) -> Sequence[Any]:\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    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 = v2_flat_models\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    v2_fields = [field for field in fields if isinstance(field, v2.ModelField)]\n    v2_field_maps, v2_definitions = v2.get_definitions(\n        fields=v2_fields,\n        model_name_map=model_name_map,\n        separate_input_output_schemas=separate_input_output_schemas,\n    )\n    return v2_field_maps, v2_definitions\n\n\ndef get_schema_from_model_field(\n    *,\n    field: ModelField,\n    model_name_map: ModelNameMap,\n    field_mapping: dict[\n        tuple[ModelField, Literal[\"validation\", \"serialization\"]],\n        may_v1.JsonSchemaValue,\n    ],\n    separate_input_output_schemas: bool = True,\n) -> dict[str, Any]:\n    return v2.get_schema_from_model_field(\n        field=field,  # type: ignore[arg-type]\n        model_name_map=model_name_map,\n        field_mapping=field_mapping,  # type: ignore[arg-type]\n        separate_input_output_schemas=separate_input_output_schemas,\n    )\n\n\ndef _is_model_field(value: Any) -> bool:\n    return isinstance(value, v2.ModelField)\n\n\ndef _is_model_class(value: Any) -> bool:\n    return lenient_issubclass(value, v2.BaseModel)  # type: ignore[attr-defined]\n",
 "old_string": "def 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_name_map,\n            separate_input_output_schemas=separate_input_outpu
{"status": "ok", "filepath": "fastapi/_compat/main.py", "occurrences": 1, "strategy": "exact", "diff": "--- a/fastapi/_compat/main.py\n+++ b/fastapi/_compat/mai
full
{"status": "ok", "filepath": "fastapi/_compat/main.py", "occurrences": 1, "strategy": "exact", "diff": "--- a/fastapi/_compat/main.py\n+++ b/fastapi/_compat/main.py\n@@ -99,32 +99,13 @@\n \n \n def 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 \n def 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+    all_flat_models = v2_flat_models\n \n     model_name_map = v2.get_model_name_map(all_flat_models)  # type: ignore[arg-type]\n     return model_name_map\n@@ -142,33 +123,13 @@\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_name_map,\n-            separate_input_output_schemas=separate_input_output_schemas,\n-        )\n-\n-        v2_fields = [field for field in fields if isinstance(field, v

Patch

diff --git a/fastapi/_compat/main.py b/fastapi/_compat/main.py
index 95053a23..0e1b73b8 100644
--- a/fastapi/_compat/main.py
+++ b/fastapi/_compat/main.py
@@ -5,7 +5,12 @@ from typing import (
     Any,
 )
 
-from fastapi._compat import may_v1
+from collections.abc import Sequence
+from functools import lru_cache
+from typing import (
+    Any,
+)
+
 from fastapi._compat.shared import lenient_issubclass
 from fastapi.types import ModelNameMap
 from pydantic import BaseModel
@@ -28,111 +33,59 @@ from .v2 import (
 )
 
 
+
 @lru_cache
 def get_cached_model_fields(model: type[BaseModel]) -> list[ModelField]:
-    if lenient_issubclass(model, may_v1.BaseModel):
-        from fastapi._compat import v1
-
-        return v1.get_model_fields(model)  # type: ignore[arg-type,return-value]
-    else:
-        from . import v2
+    from . import v2
 
-        return v2.get_model_fields(model)  # type: ignore[return-value]
+    return v2.get_model_fields(model)  # type: ignore[return-value]
 
 
 def _is_undefined(value: object) -> bool:
-    if isinstance(value, may_v1.UndefinedType):
-        return True
-
     return isinstance(value, v2.UndefinedType)
 
 
 def _get_model_config(model: BaseModel) -> Any:
-    if isinstance(model, may_v1.BaseModel):
-        from fastapi._compat import v1
-
-        return v1._get_model_config(model)
-
     return v2._get_model_config(model)
 
 
 def _model_dump(
     model: BaseModel, mode: Literal["json", "python"] = "json", **kwargs: Any
 ) -> Any:
-    if isinstance(model, may_v1.BaseModel):
-        from fastapi._compat import v1
-
-        return v1._model_dump(model, mode=mode, **kwargs)
-
     return v2._model_dump(model, mode=mode, **kwargs)
 
 
 def _is_error_wrapper(exc: Exception) -> bool:
-    if isinstance(exc, may_v1.ErrorWrapper):
-        return True
-
     return isinstance(exc, v2.ErrorWrapper)
 
 
 def copy_field_info(*, field_info: FieldInfo, annotation: Any) -> FieldInfo:
-    if isinstance(field_info, may_v1.FieldInfo):
-        from fastapi._compat import v1
-
-        return v1.copy_field_info(field_info=field_info, annotation=annotation)
-
     return v2.copy_field_info(field_info=field_info, annotation=annotation)
 
 
 def create_body_model(
     *, fields: Sequence[ModelField], model_name: str
 ) -> type[BaseModel]:
-    if fields and isinstance(fields[0], may_v1.ModelField):
-        from fastapi._compat import v1
-
-        return v1.create_body_model(fields=fields, model_name=model_name)
-
     return v2.create_body_model(fields=fields, model_name=model_name)  # type: ignore[arg-type]
 
 
 def get_annotation_from_field_info(
     annotation: Any, field_info: FieldInfo, field_name: str
 ) -> Any:
-    if isinstance(field_info, may_v1.FieldInfo):
-        from fastapi._compat import v1
-
-        return v1.get_annotation_from_field_info(
-            annotation=annotation, field_info=field_info, field_name=field_name
-        )
-
     return v2.get_annotation_from_field_info(
         annotation=annotation, field_info=field_info, field_name=field_name
     )
 
 
 def is_bytes_field(field: ModelField) -> bool:
-    if isinstance(field, may_v1.ModelField):
-        from fastapi._compat import v1
-
-        return v1.is_bytes_field(field)
-
     return v2.is_bytes_field(field)  # type: ignore[arg-type]
 
 
 def is_bytes_sequence_field(field: ModelField) -> bool:
-    if isinstance(field, may_v1.ModelField):
-        from fastapi._compat import v1
-
-        return v1.is_bytes_sequence_field(field)
-
     return v2.is_bytes_sequence_field(field)  # type: ignore[arg-type]
 
 
 def is_scalar_field(field: ModelField) -> bool:
-    if isinstance(field, may_v1.ModelField):
-        from fastapi._compat import v1
-
-        return v1.is_scalar_field(field)
-
     return v2.is_scalar_field(field)  # type: ignore[arg-type]
 
 
@@ -141,41 +94,18 @@ def is_scalar_sequence_field(field: ModelField) -> bool:
 
 
 def is_sequence_field(field: ModelField) -> bool:
-    if isinstance(field, may_v1.ModelField):
-        from fastapi._compat import v1
-
-        return v1.is_sequence_field(field)
-
     return v2.is_sequence_field(field)  # type: ignore[arg-type]
 
 
-def serialize_sequence_value(*, field: ModelField, value: Any) -> Sequence[Any]:
-    if isinstance(field, may_v1.ModelField):
-        from fastapi._compat import v1
-
-        return v1.serialize_sequence_value(field=field, value=value)
 
+def serialize_sequence_value(*, field: ModelField, value: Any) -> Sequence[Any]:
     return v2.serialize_sequence_value(field=field, value=value)  # type: ignore[arg-type]
 
 
 def get_compat_model_name_map(fields: list[ModelField]) -> ModelNameMap:
-    v1_model_fields = [
-        field for field in fields if isinstance(field, may_v1.ModelField)
-    ]
-    if v1_model_fields:
-        from fastapi._compat import v1
-
-        v1_flat_models = v1.get_flat_models_from_fields(
-            v1_model_fields,  # type: ignore[arg-type]
-            known_models=set(),
-        )
-        all_flat_models = v1_flat_models
-    else:
-        all_flat_models = set()
-
     v2_model_fields = [field for field in fields if isinstance(field, v2.ModelField)]
     v2_flat_models = v2.get_flat_models_from_fields(v2_model_fields, known_models=set())
-    all_flat_models = all_flat_models.union(v2_flat_models)  # type: ignore[arg-type]
+    all_flat_models = v2_flat_models
 
     model_name_map = v2.get_model_name_map(all_flat_models)  # type: ignore[arg-type]
     return model_name_map
@@ -193,33 +123,13 @@ def get_definitions(
     ],
     dict[str, dict[str, Any]],
 ]:
-    if sys.version_info < (3, 14):
-        v1_fields = [field for field in fields if isinstance(field, may_v1.ModelField)]
-        v1_field_maps, v1_definitions = may_v1.get_definitions(
-            fields=v1_fields,  # type: ignore[arg-type]
-            model_name_map=model_name_map,
-            separate_input_output_schemas=separate_input_output_schemas,
-        )
-
-        v2_fields = [field for field in fields if isinstance(field, v2.ModelField)]
-        v2_field_maps, v2_definitions = v2.get_definitions(
-            fields=v2_fields,
-            model_name_map=model_name_map,
-            separate_input_output_schemas=separate_input_output_schemas,
-        )
-        all_definitions = {**v1_definitions, **v2_definitions}
-        all_field_maps = {**v1_field_maps, **v2_field_maps}  # type: ignore[misc]
-        return all_field_maps, all_definitions
-
-    # Pydantic v1 is not supported since Python 3.14
-    else:
-        v2_fields = [field for field in fields if isinstance(field, v2.ModelField)]
-        v2_field_maps, v2_definitions = v2.get_definitions(
-            fields=v2_fields,
-            model_name_map=model_name_map,
-            separate_input_output_schemas=separate_input_output_schemas,
-        )
-        return v2_field_maps, v2_definitions
+    v2_fields = [field for field in fields if isinstance(field, v2.ModelField)]
+    v2_field_maps, v2_definitions = v2.get_definitions(
+        fields=v2_fields,
+        model_name_map=model_name_map,
+        separate_input_output_schemas=separate_input_output_schemas,
+    )
+    return v2_field_maps, v2_definitions
 
 
 def get_schema_from_model_field(
@@ -232,16 +142,6 @@ def get_schema_from_model_field(
     ],
     separate_input_output_schemas: bool = True,
 ) -> dict[str, Any]:
-    if isinstance(field, may_v1.ModelField):
-        from fastapi._compat import v1
-
-        return v1.get_schema_from_model_field(
-            field=field,
-            model_name_map=model_name_map,
-            field_mapping=field_mapping,
-            separate_input_output_schemas=separate_input_output_schemas,
-        )
-
     return v2.get_schema_from_model_field(
         field=field,  # type: ignore[arg-type]
         model_name_map=model_name_map,
@@ -251,14 +151,8 @@ def get_schema_from_model_field(
 
 
 def _is_model_field(value: Any) -> bool:
-    if isinstance(value, may_v1.ModelField):
-        return True
-
     return isinstance(value, v2.ModelField)
 
 
 def _is_model_class(value: Any) -> bool:
-    if lenient_issubclass(value, may_v1.BaseModel):
-        return True
-
     return lenient_issubclass(value, v2.BaseModel)  # type: ignore[attr-defined]

Test output

show
==================================== ERRORS ====================================
____________________ ERROR collecting tests/test_compat.py _____________________
tests/test_compat.py:3: in <module>
    from fastapi import FastAPI, UploadFile
fastapi/__init__.py:7: in <module>
    from .applications import FastAPI as FastAPI
fastapi/applications.py:13: in <module>
    from fastapi import routing
fastapi/routing.py:25: in <module>
    from fastapi import params, temp_pydantic_v1_params
fastapi/params.py:8: in <module>
    from fastapi.openapi.models import Example
fastapi/openapi/models.py:5: in <module>
    from fastapi._compat import (
fastapi/_compat/__init__.py:1: in <module>
    from .main import BaseConfig as BaseConfig
fastapi/_compat/main.py:122: in <module>
    may_v1.JsonSchemaValue,
    ^^^^^^
E   NameError: name 'may_v1' is not defined
!!!!!!!!!!!!!!!!!!!!!!!!!! stopping after 1 failures !!!!!!!!!!!!!!!!!!!!!!!!!!!
1 error in 0.52s