Change mock classes to Any values to avoid false positives (#2255)

The previous definitions in `mock` caused many false positives in
internal Dropbox repositories.

One source of problems was `List[Mock]` not being compatible with
`List[SomeClass]`, since `list` is invariant.
This commit is contained in:
Jukka Lehtosalo
2018-06-19 16:28:19 +01:00
committed by GitHub
parent a88d942f91
commit feeb4e71ef
2 changed files with 16 additions and 84 deletions

View File

@@ -30,44 +30,17 @@ class _MockIter:
class Base:
def __init__(self, *args: Any, **kwargs: Any) -> None: ...
# TODO: Get rid of the # type: ignore below.
# It is currently required to shut up mypy when run with `--strict`
# or `--disallow-subclassing-any`. The `Any` base class is currently
# the only way to allow passing an instance of `Mock` to functions
# expecting other classes (as is Mock's purpose)
class NonCallableMock(Any): # type: ignore
def __new__(cls, *args: Any, **kw: Any) -> Any: ...
def __init__(self, spec: Optional[Any] = ..., wraps: Optional[Any] = ..., name: Optional[Any] = ..., spec_set: Optional[Any] = ..., parent: Optional[Any] = ..., _spec_state: Optional[Any] = ..., _new_name: Any = ..., _new_parent: Optional[Any] = ..., _spec_as_instance: Any = ..., _eat_self: Optional[Any] = ..., unsafe: Any = ..., **kwargs: Any) -> None: ...
def attach_mock(self, mock: Any, attribute: Any) -> Any: ...
def mock_add_spec(self, spec: Any, spec_set: Any = ...) -> Any: ...
return_value = ... # type: Any
__class__ = ... # type: type
called = ... # type: Any
call_count = ... # type: Any
call_args = ... # type: Any
call_args_list = ... # type: Any
mock_calls = ... # type: Any
side_effect = ... # type: Any
method_calls = ... # type: Any
def reset_mock(self, visited: Optional[bool] = ...) -> None: ...
def configure_mock(self, **kwargs: Any) -> None: ...
def __getattr__(self, name: Any) -> Any: ...
def __dir__(self) -> Any: ...
def __setattr__(self, name: Any, value: Any) -> None: ...
def __delattr__(self, name: Any) -> None: ...
def assert_not_called(_mock_self) -> None: ...
def assert_called_with(_mock_self, *args: Any, **kwargs: Any) -> None: ...
def assert_called_once_with(_mock_self, *args: Any, **kwargs: Any) -> None: ...
def assert_has_calls(self, calls: Any, any_order: bool = ...) -> None: ...
def assert_any_call(self, *args: Any, **kwargs: Any) -> None: ...
# TODO: Defining this and other mock classes as classes in this stub causes
# many false positives with mypy and production code. See if we can
# improve mypy somehow and use a class with an "Any" base class.
NonCallableMock: Any
class CallableMixin(Base):
side_effect = ... # type: Any
def __init__(self, spec: Optional[Any] = ..., side_effect: Optional[Any] = ..., return_value: Any = ..., wraps: Optional[Any] = ..., name: Optional[Any] = ..., spec_set: Optional[Any] = ..., parent: Optional[Any] = ..., _spec_state: Optional[Any] = ..., _new_name: Any = ..., _new_parent: Optional[Any] = ..., **kwargs: Any) -> None: ...
def __call__(_mock_self, *args: Any, **kwargs: Any) -> Any: ...
class Mock(CallableMixin, NonCallableMock):
def __init__(self, spec: Any = ..., spec_set: Any = ..., side_effect: Any = ..., return_value: Any = ..., wraps: Any = ..., name: Any = ..., **kwargs: Any) -> None: ...
Mock: Any
class _patch:
attribute_name = ... # type: Any
@@ -121,13 +94,8 @@ patch = ... # type: _patcher
class MagicMixin:
def __init__(self, *args: Any, **kw: Any) -> None: ...
class NonCallableMagicMock(MagicMixin, NonCallableMock):
def __init__(self) -> None: ...
def mock_add_spec(self, spec: Any, spec_set: Any = ...) -> Any: ...
class MagicMock(MagicMixin, Mock):
def __init__(self, spec: Any = ..., spec_set: Any = ..., side_effect: Any = ..., return_value: Any = ..., wraps: Any = ..., name: Any = ..., **kwargs: Any) -> None: ...
def mock_add_spec(self, spec: Any, spec_set: Any = ...) -> Any: ...
NonCallableMagicMock: Any
MagicMock: Any
class MagicProxy:
name = ... # type: Any
@@ -172,9 +140,7 @@ class _SpecState:
def mock_open(mock: Optional[Any] = ..., read_data: Any = ...) -> Any: ...
class PropertyMock(Mock):
def __get__(self, obj: Any, obj_type: Any) -> Any: ...
def __set__(self, obj: Any, val: Any) -> Any: ...
PropertyMock: Any
if sys.version_info >= (3, 7):
def seal(mock: Any) -> None: ...