mirror of
https://github.com/davidhalter/typeshed.git
synced 2025-12-09 21:46:42 +08:00
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:
@@ -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: ...
|
||||
|
||||
Reference in New Issue
Block a user