Skip to content

Commit 12104fe

Browse files
committed
test: Follow the new behavior of typing.get_type_hints() since py311
Since python-3.11, `typing.get_type_hints()` will not add Optional[t] to type annotations even if a default value for function argument is None. refs: python/cpython#30304 (bpo-46195)
1 parent 73f9806 commit 12104fe

File tree

2 files changed

+24
-5
lines changed

2 files changed

+24
-5
lines changed

tests/test_ext_autodoc_configs.py

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -599,6 +599,11 @@ def test_mocked_module_imports(app, warning):
599599
@pytest.mark.sphinx('html', testroot='ext-autodoc',
600600
confoverrides={'autodoc_typehints': "signature"})
601601
def test_autodoc_typehints_signature(app):
602+
if sys.version_info < (3, 11):
603+
type_o = "typing.Optional[typing.Any]"
604+
else:
605+
type_o = "typing.Any"
606+
602607
options = {"members": None,
603608
"undoc-members": None}
604609
actual = do_autodoc(app, 'module', 'target.typehints', options)
@@ -612,7 +617,7 @@ def test_autodoc_typehints_signature(app):
612617
' :type: int',
613618
'',
614619
'',
615-
'.. py:class:: Math(s: str, o: typing.Optional[typing.Any] = None)',
620+
'.. py:class:: Math(s: str, o: %s = None)' % type_o,
616621
' :module: target.typehints',
617622
'',
618623
'',
@@ -1146,6 +1151,11 @@ def test_autodoc_typehints_description_and_type_aliases(app):
11461151
@pytest.mark.sphinx('html', testroot='ext-autodoc',
11471152
confoverrides={'autodoc_typehints_format': "short"})
11481153
def test_autodoc_typehints_format_short(app):
1154+
if sys.version_info < (3, 11):
1155+
type_o = "~typing.Optional[~typing.Any]"
1156+
else:
1157+
type_o = "~typing.Any"
1158+
11491159
options = {"members": None,
11501160
"undoc-members": None}
11511161
actual = do_autodoc(app, 'module', 'target.typehints', options)
@@ -1159,7 +1169,7 @@ def test_autodoc_typehints_format_short(app):
11591169
' :type: int',
11601170
'',
11611171
'',
1162-
'.. py:class:: Math(s: str, o: ~typing.Optional[~typing.Any] = None)',
1172+
'.. py:class:: Math(s: str, o: %s = None)' % type_o,
11631173
' :module: target.typehints',
11641174
'',
11651175
'',

tests/test_util_inspect.py

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -190,7 +190,10 @@ def test_signature_annotations():
190190

191191
# Space around '=' for defaults
192192
sig = inspect.signature(f7)
193-
assert stringify_signature(sig) == '(x: typing.Optional[int] = None, y: dict = {}) -> None'
193+
if sys.version_info < (3, 11):
194+
assert stringify_signature(sig) == '(x: typing.Optional[int] = None, y: dict = {}) -> None'
195+
else:
196+
assert stringify_signature(sig) == '(x: int = None, y: dict = {}) -> None'
194197

195198
# Callable types
196199
sig = inspect.signature(f8)
@@ -261,11 +264,17 @@ def test_signature_annotations():
261264

262265
# show_return_annotation is False
263266
sig = inspect.signature(f7)
264-
assert stringify_signature(sig, show_return_annotation=False) == '(x: typing.Optional[int] = None, y: dict = {})'
267+
if sys.version_info < (3, 11):
268+
assert stringify_signature(sig, show_return_annotation=False) == '(x: typing.Optional[int] = None, y: dict = {})'
269+
else:
270+
assert stringify_signature(sig, show_return_annotation=False) == '(x: int = None, y: dict = {})'
265271

266272
# unqualified_typehints is True
267273
sig = inspect.signature(f7)
268-
assert stringify_signature(sig, unqualified_typehints=True) == '(x: ~typing.Optional[int] = None, y: dict = {}) -> None'
274+
if sys.version_info < (3, 11):
275+
assert stringify_signature(sig, unqualified_typehints=True) == '(x: ~typing.Optional[int] = None, y: dict = {}) -> None'
276+
else:
277+
assert stringify_signature(sig, unqualified_typehints=True) == '(x: int = None, y: dict = {}) -> None'
269278

270279

271280
@pytest.mark.skipif(sys.version_info < (3, 8), reason='python 3.8+ is required.')

0 commit comments

Comments
 (0)