https://github.com/python/cpython/commit/d357a7dbf38868844415ec1d5df80379ea5a2326
commit: d357a7dbf38868844415ec1d5df80379ea5a2326
branch: main
author: Matthias Schoettle <[email protected]>
committer: JelleZijlstra <[email protected]>
date: 2026-03-19T19:39:41-07:00
summary:

gh-145754: Update signature retrieval in unittest.mock to use forwardref 
annotation format (#145756)

files:
A Misc/NEWS.d/next/Library/2026-03-10-14-57-15.gh-issue-145754.YBL5Ko.rst
M Lib/test/test_unittest/testmock/testmock.py
M Lib/unittest/mock.py

diff --git a/Lib/test/test_unittest/testmock/testmock.py 
b/Lib/test/test_unittest/testmock/testmock.py
index 386d53bf5a5c63..764585ec5d5468 100644
--- a/Lib/test/test_unittest/testmock/testmock.py
+++ b/Lib/test/test_unittest/testmock/testmock.py
@@ -1743,6 +1743,13 @@ def static_method(): pass
                 mock_method.assert_called_once_with()
                 self.assertRaises(TypeError, mock_method, 'extra_arg')
 
+    # gh-145754
+    def test_create_autospec_type_hints_typechecking(self):
+        def foo(x: Tuple[int, ...]) -> None:
+            pass
+
+        mock.create_autospec(foo)
+
     #Issue21238
     def test_mock_unsafe(self):
         m = Mock()
diff --git a/Lib/unittest/mock.py b/Lib/unittest/mock.py
index 64a01a0b713c61..1cee67fa5d7094 100644
--- a/Lib/unittest/mock.py
+++ b/Lib/unittest/mock.py
@@ -34,6 +34,7 @@
 import pkgutil
 from inspect import iscoroutinefunction
 import threading
+from annotationlib import Format
 from dataclasses import fields, is_dataclass
 from types import CodeType, ModuleType, MethodType
 from unittest.util import safe_repr
@@ -119,7 +120,7 @@ def _get_signature_object(func, as_instance, eat_self):
     else:
         sig_func = func
     try:
-        return func, inspect.signature(sig_func)
+        return func, inspect.signature(sig_func, 
annotation_format=Format.FORWARDREF)
     except ValueError:
         # Certain callable types are not supported by inspect.signature()
         return None
diff --git 
a/Misc/NEWS.d/next/Library/2026-03-10-14-57-15.gh-issue-145754.YBL5Ko.rst 
b/Misc/NEWS.d/next/Library/2026-03-10-14-57-15.gh-issue-145754.YBL5Ko.rst
new file mode 100644
index 00000000000000..7de81ac19c2efa
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2026-03-10-14-57-15.gh-issue-145754.YBL5Ko.rst
@@ -0,0 +1,2 @@
+Request signature during mock autospec with ``FORWARDREF`` annotation format.
+This prevents runtime errors when an annotation uses a name that is not 
defined at runtime.

_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3//lists/python-checkins.python.org
Member address: [email protected]

Reply via email to