From: Matthias Schoettle Date: Fri, 20 Mar 2026 02:39:41 +0000 (-0400) Subject: gh-145754: Update signature retrieval in unittest.mock to use forwardref annotation... X-Git-Tag: v3.15.0a8~240 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d357a7dbf38868844415ec1d5df80379ea5a2326;p=thirdparty%2FPython%2Fcpython.git gh-145754: Update signature retrieval in unittest.mock to use forwardref annotation format (#145756) --- diff --git a/Lib/test/test_unittest/testmock/testmock.py b/Lib/test/test_unittest/testmock/testmock.py index 386d53bf5a5c..764585ec5d54 100644 --- a/Lib/test/test_unittest/testmock/testmock.py +++ b/Lib/test/test_unittest/testmock/testmock.py @@ -1743,6 +1743,13 @@ class MockTest(unittest.TestCase): 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 64a01a0b713c..1cee67fa5d70 100644 --- a/Lib/unittest/mock.py +++ b/Lib/unittest/mock.py @@ -34,6 +34,7 @@ import builtins 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 000000000000..7de81ac19c2e --- /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.