Close #14857: fix regression in references to PEP 3135 implicit __class__ closure variable. Reopens issue #12370, but also updates unittest.mock to workaround that issue
diff --git a/Lib/unittest/mock.py b/Lib/unittest/mock.py
index a94acd6..36be0fd 100644
--- a/Lib/unittest/mock.py
+++ b/Lib/unittest/mock.py
@@ -39,6 +39,9 @@
FILTER_DIR = True
+# Workaround for issue #12370
+# Without this, the __class__ properties wouldn't be set correctly
+_safe_super = super
def _is_instance_mock(obj):
# can't use isinstance on Mock objects because they override __class__
@@ -397,7 +400,7 @@
if kwargs:
self.configure_mock(**kwargs)
- super(NonCallableMock, self).__init__(
+ _safe_super(NonCallableMock, self).__init__(
spec, wraps, name, spec_set, parent,
_spec_state
)
@@ -820,7 +823,7 @@
_spec_state=None, _new_name='', _new_parent=None, **kwargs):
self.__dict__['_mock_return_value'] = return_value
- super(CallableMixin, self).__init__(
+ _safe_super(CallableMixin, self).__init__(
spec, wraps, name, spec_set, parent,
_spec_state, _new_name, _new_parent, **kwargs
)
@@ -1690,7 +1693,7 @@
class MagicMixin(object):
def __init__(self, *args, **kw):
- super(MagicMixin, self).__init__(*args, **kw)
+ _safe_super(MagicMixin, self).__init__(*args, **kw)
self._mock_set_magics()