Skip to content

Commit 72010bc

Browse files
shannonzhuJelleZijlstra
authored andcommitted
Update how mock classes alias to Any (#3182)
* Update how mock classes alias to Any > First, the z: Any situation looks like a bug or accidental feature to me. This is definitely meant (and works) as a variable declaration; that it also allows using z as a type seems wrong. I can't find any evidence in PEP 484 that this was intended; in mypy it's likely the accidental result of other design choices meant to shut up errors about Any. Ideally these classes could be declared as empty class stubs, but since the comments suggest this isn't possible yet, let's update these to be type aliases to Any rather than global variables of type Any. This would avoid invalid type errors when the implementation of type checkers respect the intention that `z: Any` does not make `z` a valid type. * Update mock.pyi
1 parent 1ab5145 commit 72010bc

2 files changed

Lines changed: 10 additions & 10 deletions

File tree

stdlib/3/unittest/mock.pyi

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,14 +33,14 @@ class Base:
3333
# TODO: Defining this and other mock classes as classes in this stub causes
3434
# many false positives with mypy and production code. See if we can
3535
# improve mypy somehow and use a class with an "Any" base class.
36-
NonCallableMock: Any
36+
NonCallableMock = Any
3737

3838
class CallableMixin(Base):
3939
side_effect: Any
4040
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: ...
4141
def __call__(_mock_self, *args: Any, **kwargs: Any) -> Any: ...
4242

43-
Mock: Any
43+
Mock = Any
4444

4545
class _patch:
4646
attribute_name: Any
@@ -94,8 +94,8 @@ patch: _patcher
9494
class MagicMixin:
9595
def __init__(self, *args: Any, **kw: Any) -> None: ...
9696

97-
NonCallableMagicMock: Any
98-
MagicMock: Any
97+
NonCallableMagicMock = Any
98+
MagicMock = Any
9999

100100
class MagicProxy:
101101
name: Any
@@ -140,7 +140,7 @@ class _SpecState:
140140

141141
def mock_open(mock: Optional[Any] = ..., read_data: Any = ...) -> Any: ...
142142

143-
PropertyMock: Any
143+
PropertyMock = Any
144144

145145
if sys.version_info >= (3, 7):
146146
def seal(mock: Any) -> None: ...

third_party/2and3/mock.pyi

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,14 +33,14 @@ class Base:
3333
# TODO: Defining this and other mock classes as classes in this stub causes
3434
# many false positives with mypy and production code. See if we can
3535
# improve mypy somehow and use a class with an "Any" base class.
36-
NonCallableMock: Any
36+
NonCallableMock = Any
3737

3838
class CallableMixin(Base):
3939
side_effect: Any
4040
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: ...
4141
def __call__(_mock_self, *args: Any, **kwargs: Any) -> Any: ...
4242

43-
Mock: Any
43+
Mock = Any
4444

4545
class _patch:
4646
attribute_name: Any
@@ -94,8 +94,8 @@ patch: _patcher
9494
class MagicMixin:
9595
def __init__(self, *args: Any, **kw: Any) -> None: ...
9696

97-
NonCallableMagicMock: Any
98-
MagicMock: Any
97+
NonCallableMagicMock = Any
98+
MagicMock = Any
9999

100100
class MagicProxy:
101101
name: Any
@@ -140,7 +140,7 @@ class _SpecState:
140140

141141
def mock_open(mock: Optional[Any] = ..., read_data: Any = ...) -> Any: ...
142142

143-
PropertyMock: Any
143+
PropertyMock = Any
144144

145145
if sys.version_info >= (3, 7):
146146
def seal(mock: Any) -> None: ...

0 commit comments

Comments
 (0)