add a __call__ stub to PyObject for mypy (#1849)

Co-authored-by: Brian Maissy <brian@medigate.io>
This commit is contained in:
Brian Maissy
2020-10-09 14:11:23 +03:00
committed by GitHub
parent dbb1ed0aaa
commit a89c97a3e3
3 changed files with 18 additions and 2 deletions
+1
View File
@@ -0,0 +1 @@
Add a `__call__` stub to `PyObject` so that mypy will know that it is callable
+5
View File
@@ -317,6 +317,11 @@ class PyObject:
except ImportError as e:
raise errors.PyObjectError(error_message=str(e))
if TYPE_CHECKING:
def __call__(self, *args: Any, **kwargs: Any) -> Any:
...
class ConstrainedNumberMeta(type):
def __new__(cls, name: str, bases: Any, dct: Dict[str, Any]) -> 'ConstrainedInt': # type: ignore
+12 -2
View File
@@ -5,10 +5,10 @@ Do a little skipping about with types to demonstrate its usage.
"""
import json
import sys
from datetime import datetime
from datetime import date, datetime
from typing import Any, Dict, Generic, List, Optional, TypeVar
from pydantic import BaseModel, NoneStr, StrictBool, root_validator, validate_arguments, validator
from pydantic import BaseModel, NoneStr, PyObject, StrictBool, root_validator, validate_arguments, validator
from pydantic.fields import Field
from pydantic.generics import GenericModel
@@ -127,3 +127,13 @@ def foo(a: int, *, c: str = 'x') -> str:
foo(1, c='thing')
foo(1)
class MyConf(BaseModel):
str_pyobject: PyObject = Field('datetime.date')
callable_pyobject: PyObject = Field(date)
conf = MyConf()
var1: date = conf.str_pyobject(2020, 12, 20)
var2: date = conf.callable_pyobject(2111, 1, 1)