🔇 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
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 12 additions and 6 deletions

View File

@ -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):