Browse Source

add tests for both Color types

pull/15101/head
svlandeg 4 months ago
parent
commit
6646cb4939
  1. 3
      fastapi/encoders.py
  2. 35
      tests/test_jsonable_encoder.py

3
fastapi/encoders.py

@ -32,6 +32,7 @@ from ._compat import (
)
try:
# pydantic.color.Color is deprecated since v2.0b3, but supporting for bwd-compat
from pydantic.color import Color # ty: ignore[deprecated]
except ImportError: # pragma: no cover
@ -39,8 +40,8 @@ except ImportError: # pragma: no cover
pass
# pydantic.color.Color is deprecated since v2.0b3 -> supporting the new one as well
try:
# Supporting the new Color format for newer versions of Pydantic
from pydantic_extra_types.color import Color as PyExtraColor
except ImportError: # pragma: no cover

35
tests/test_jsonable_encoder.py

@ -311,3 +311,38 @@ def test_encode_deque_encodes_child_models():
def test_encode_pydantic_undefined():
data = {"value": Undefined}
assert jsonable_encoder(data) == {"value": None}
@pytest.mark.filterwarnings("ignore::pydantic.warnings.PydanticDeprecatedSince20")
def test_deprecated_color():
try:
from pydantic.color import Color
# from pydantic_extra_types.color import Color as ExtraColor
class ModelWithColors(BaseModel):
color: Color
model_config = {"arbitrary_types_allowed": True}
obj = ModelWithColors(color=Color("blue"))
encoded = jsonable_encoder(obj)
assert encoded == {"color": "blue"}
except ImportError:
pass
def test_new_color():
try:
from pydantic_extra_types.color import Color
class ModelWithColors(BaseModel):
color: Color
model_config = {"arbitrary_types_allowed": True}
obj = ModelWithColors(color=Color("blue"))
encoded = jsonable_encoder(obj)
assert encoded == {"color": "blue"}
except ImportError:
pass

Loading…
Cancel
Save