|
|
@ -22,7 +22,6 @@ from annotated_doc import Doc |
|
|
from fastapi.exceptions import PydanticV1NotSupportedError |
|
|
from fastapi.exceptions import PydanticV1NotSupportedError |
|
|
from fastapi.types import IncEx |
|
|
from fastapi.types import IncEx |
|
|
from pydantic import BaseModel |
|
|
from pydantic import BaseModel |
|
|
from pydantic.color import Color # ty: ignore[deprecated] |
|
|
|
|
|
from pydantic.networks import AnyUrl, NameEmail |
|
|
from pydantic.networks import AnyUrl, NameEmail |
|
|
from pydantic.types import SecretBytes, SecretStr |
|
|
from pydantic.types import SecretBytes, SecretStr |
|
|
from pydantic_core import PydanticUndefinedType |
|
|
from pydantic_core import PydanticUndefinedType |
|
|
@ -32,6 +31,23 @@ from ._compat import ( |
|
|
is_pydantic_v1_model_instance, |
|
|
is_pydantic_v1_model_instance, |
|
|
) |
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
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 |
|
|
|
|
|
|
|
|
|
|
|
class Color: # type: ignore[no-redef] # ty: ignore[unused-ignore-comment] |
|
|
|
|
|
pass |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
|
|
|
|
|
|
|
|
|
|
|
class PyExtraColor: # type: ignore[no-redef] # ty: ignore[unused-ignore-comment] |
|
|
|
|
|
pass |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Taken from Pydantic v1 as is |
|
|
# Taken from Pydantic v1 as is |
|
|
def isoformat(o: datetime.date | datetime.time) -> str: |
|
|
def isoformat(o: datetime.date | datetime.time) -> str: |
|
|
@ -67,7 +83,8 @@ def decimal_encoder(dec_value: Decimal) -> int | float: |
|
|
|
|
|
|
|
|
ENCODERS_BY_TYPE: dict[type[Any], Callable[[Any], Any]] = { |
|
|
ENCODERS_BY_TYPE: dict[type[Any], Callable[[Any], Any]] = { |
|
|
bytes: lambda o: o.decode(), |
|
|
bytes: lambda o: o.decode(), |
|
|
Color: str, # ty: ignore[deprecated] |
|
|
Color: str, |
|
|
|
|
|
PyExtraColor: str, |
|
|
datetime.date: isoformat, |
|
|
datetime.date: isoformat, |
|
|
datetime.datetime: isoformat, |
|
|
datetime.datetime: isoformat, |
|
|
datetime.time: isoformat, |
|
|
datetime.time: isoformat, |
|
|
|