Browse Source

Only use feature if it's available

pull/11634/head
Alex Couper 1 year ago
parent
commit
16e7a5cb8a
  1. 6
      fastapi/_compat.py
  2. 5
      tests/test_serialize_response_model.py

6
fastapi/_compat.py

@ -147,6 +147,10 @@ if PYDANTIC_V2:
) -> Any:
# What calls this code passes a value that already called
# self._type_adapter.validate_python(value)
#
# context argument was introduced in pydantic 2.7.3
kwargs = {"context": context} if PYDANTIC_VERSION > "2.7.2" else {}
return self._type_adapter.dump_python(
value,
mode=mode,
@ -156,7 +160,7 @@ if PYDANTIC_V2:
exclude_unset=exclude_unset,
exclude_defaults=exclude_defaults,
exclude_none=exclude_none,
context=context,
**kwargs,
)
def __hash__(self) -> int:

5
tests/test_serialize_response_model.py

@ -1,7 +1,9 @@
from typing import Dict, List, Optional
import pytest
from fastapi import FastAPI
from pydantic import BaseModel, Field
from fastapi._compat import PYDANTIC_VERSION
from pydantic import BaseModel, Field, SerializationInfo, model_serializer
from starlette.testclient import TestClient
app = FastAPI()
@ -176,6 +178,7 @@ def test_validdict_exclude_unset():
}
@pytest.mark.skipif(PYDANTIC_VERSION < "2.7.2", reason="requires Pydantic 2.7.3+")
def test_validdict_with_context():
response = client.get("/items/validdict-with-context")
response.raise_for_status()

Loading…
Cancel
Save