diff --git a/fastapi/_compat.py b/fastapi/_compat.py index 90cec70b5..c260f33a6 100644 --- a/fastapi/_compat.py +++ b/fastapi/_compat.py @@ -10,6 +10,7 @@ from typing import ( FrozenSet, List, Mapping, + Optional, Sequence, Set, Tuple, @@ -143,7 +144,7 @@ if PYDANTIC_V2: exclude_unset: bool = False, exclude_defaults: bool = False, exclude_none: bool = False, - context: dict[str, Any] | None = None, + context: Optional[Dict[str, Any]]= None, ) -> Any: # What calls this code passes a value that already called # self._type_adapter.validate_python(value) diff --git a/fastapi/routing.py b/fastapi/routing.py index 165a3bf50..ad15b3b8e 100644 --- a/fastapi/routing.py +++ b/fastapi/routing.py @@ -130,7 +130,7 @@ async def serialize_response( exclude_defaults: bool = False, exclude_none: bool = False, is_coroutine: bool = True, - context: dict[str, Any] | None = None, + context: Optional[Dict[str, Any]]= None, ) -> Any: if field: errors = [] diff --git a/tests/test_serialize_response_model.py b/tests/test_serialize_response_model.py index b03a521c5..7ef7879f9 100644 --- a/tests/test_serialize_response_model.py +++ b/tests/test_serialize_response_model.py @@ -3,7 +3,7 @@ from typing import Dict, List, Optional import pytest from fastapi import FastAPI from fastapi._compat import PYDANTIC_VERSION -from pydantic import BaseModel, Field, SerializationInfo, model_serializer +from pydantic import BaseModel, Field, model_serializer from starlette.testclient import TestClient app = FastAPI() @@ -15,7 +15,7 @@ class Item(BaseModel): owner_ids: Optional[List[int]] = None @model_serializer(mode="wrap") - def _serialize(self, handler, info: SerializationInfo | None = None): + def _serialize(self, handler, info): data = handler(self) if info.context and info.context.get("mode") == "FASTAPI": if "price" in data: