mirror of https://github.com/tiangolo/fastapi.git
🔇 Log email-validator not installed only when used (#946)
This commit is contained in:
parent
636ce6b3f7
commit
2e0a102565
|
|
@ -1,5 +1,5 @@
|
||||||
from enum import Enum
|
from enum import Enum
|
||||||
from typing import Any, Dict, List, Optional, Union
|
from typing import Any, Callable, Dict, Iterable, List, Optional, Union
|
||||||
|
|
||||||
from fastapi.logger import logger
|
from fastapi.logger import logger
|
||||||
from pydantic import BaseModel
|
from pydantic import BaseModel
|
||||||
|
|
@ -21,13 +21,19 @@ try:
|
||||||
# TODO: remove when removing support for Pydantic < 1.0.0
|
# TODO: remove when removing support for Pydantic < 1.0.0
|
||||||
from pydantic.types import EmailStr # type: ignore
|
from pydantic.types import EmailStr # type: ignore
|
||||||
except ImportError: # pragma: no cover
|
except ImportError: # pragma: no cover
|
||||||
logger.info(
|
|
||||||
"email-validator not installed, email fields will be treated as str.\n"
|
|
||||||
"To install, run: pip install email-validator"
|
|
||||||
)
|
|
||||||
|
|
||||||
class EmailStr(str): # type: ignore
|
class EmailStr(str): # type: ignore
|
||||||
pass
|
@classmethod
|
||||||
|
def __get_validators__(cls) -> Iterable[Callable]:
|
||||||
|
yield cls.validate
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def validate(cls, v: Any) -> str:
|
||||||
|
logger.warning(
|
||||||
|
"email-validator not installed, email fields will be treated as str.\n"
|
||||||
|
"To install, run: pip install email-validator"
|
||||||
|
)
|
||||||
|
return str(v)
|
||||||
|
|
||||||
|
|
||||||
class Contact(BaseModel):
|
class Contact(BaseModel):
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue