]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-113407: Fix import of unittest.mock when CPython is built without docstrings ...
authorSerhiy Storchaka <storchaka@gmail.com>
Sun, 24 Dec 2023 11:38:56 +0000 (13:38 +0200)
committerGitHub <noreply@github.com>
Sun, 24 Dec 2023 11:38:56 +0000 (13:38 +0200)
Lib/unittest/mock.py
Misc/NEWS.d/next/Library/2023-12-22-20-49-52.gh-issue-113407.C_O13_.rst [new file with mode: 0644]

index c6b46eea657a21b860bbac1bdc078f2cbc8bb948..2adb3d70662b1a10a88b5de54694c67837ff4dee 100644 (file)
@@ -2229,8 +2229,11 @@ class MagicProxy(Base):
         return self.create_mock()
 
 
-_CODE_ATTRS = dir(CodeType)
-_CODE_SIG = inspect.signature(partial(CodeType.__init__, None))
+try:
+    _CODE_SIG = inspect.signature(partial(CodeType.__init__, None))
+    _CODE_ATTRS = dir(CodeType)
+except ValueError:
+    _CODE_SIG = None
 
 
 class AsyncMockMixin(Base):
@@ -2250,9 +2253,12 @@ class AsyncMockMixin(Base):
         self.__dict__['_mock_await_count'] = 0
         self.__dict__['_mock_await_args'] = None
         self.__dict__['_mock_await_args_list'] = _CallList()
-        code_mock = NonCallableMock(spec_set=_CODE_ATTRS)
-        code_mock.__dict__["_spec_class"] = CodeType
-        code_mock.__dict__["_spec_signature"] = _CODE_SIG
+        if _CODE_SIG:
+            code_mock = NonCallableMock(spec_set=_CODE_ATTRS)
+            code_mock.__dict__["_spec_class"] = CodeType
+            code_mock.__dict__["_spec_signature"] = _CODE_SIG
+        else:
+            code_mock = NonCallableMock(spec_set=CodeType)
         code_mock.co_flags = (
             inspect.CO_COROUTINE
             + inspect.CO_VARARGS
diff --git a/Misc/NEWS.d/next/Library/2023-12-22-20-49-52.gh-issue-113407.C_O13_.rst b/Misc/NEWS.d/next/Library/2023-12-22-20-49-52.gh-issue-113407.C_O13_.rst
new file mode 100644 (file)
index 0000000..da00977
--- /dev/null
@@ -0,0 +1 @@
+Fix import of :mod:`unittest.mock` when CPython is built without docstrings.