From: Sebastián Ramírez Date: Tue, 4 Feb 2020 04:31:01 +0000 (+0100) Subject: :mute: Log email-validator not installed only when used (#946) X-Git-Tag: 0.48.0~3 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=2e0a10256584bbdf727d552ccdef66f54e66332a;p=thirdparty%2Ffastapi%2Ffastapi.git :mute: Log email-validator not installed only when used (#946) --- diff --git a/fastapi/openapi/models.py b/fastapi/openapi/models.py index 4ca963dfc1..a7c4460fab 100644 --- a/fastapi/openapi/models.py +++ b/fastapi/openapi/models.py @@ -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):