🔇 Log email-validator not installed only when used (#946)

This commit is contained in:
Sebastián Ramírez
2020-02-04 05:31:01 +01:00
committed by GitHub
parent 636ce6b3f7
commit 2e0a102565

View File

@@ -1,5 +1,5 @@
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 pydantic import BaseModel
@@ -21,13 +21,19 @@ try:
# TODO: remove when removing support for Pydantic < 1.0.0
from pydantic.types import EmailStr # type: ignore
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
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):