From 451811c40cd9918213a13591a6b8dcaab4287ed5 Mon Sep 17 00:00:00 2001 From: James Date: Sun, 18 Jul 2021 10:55:38 +0100 Subject: [PATCH] Respond to feedback --- sphinx/util/typing.py | 3 ++- tests/test_util_typing.py | 12 ++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/sphinx/util/typing.py b/sphinx/util/typing.py index 5c72d6f32d3..4450d4edb69 100644 --- a/sphinx/util/typing.py +++ b/sphinx/util/typing.py @@ -312,7 +312,8 @@ def stringify(annotation: Any) -> str: hasattr(annotation, '__qualname__')): if hasattr(annotation, '__args__'): # PEP 585 generic return repr(annotation) - return annotation.__qualname__ + else: + return annotation.__qualname__ elif annotation is Ellipsis: return '...' diff --git a/tests/test_util_typing.py b/tests/test_util_typing.py index 424715b39a2..afa5384f7af 100644 --- a/tests/test_util_typing.py +++ b/tests/test_util_typing.py @@ -175,6 +175,18 @@ def test_stringify_type_hints_containers(): assert stringify(Generator[None, None, None]) == "Generator[None, None, None]" +@pytest.mark.skipif(sys.version_info < (3, 9), reason='python 3.9+ is required.') +def test_stringify_type_hints_pep_585(): + assert stringify(list[int]) == "list[int]" + assert stringify(list[str]) == "list[str]" + assert stringify(dict[str, float]) == "dict[str, float]" + assert stringify(tuple[str, str, str]) == "tuple[str, str, str]" + assert stringify(tuple[str, ...]) == "tuple[str, ...]" + assert stringify(tuple[()]) == "tuple[()]" + assert stringify(list[dict[str, tuple]]) == "list[dict[str, tuple]]" + assert stringify(type[int]) == "type[int]" + + @pytest.mark.skipif(sys.version_info < (3, 9), reason='python 3.9+ is required.') def test_stringify_Annotated(): from typing import Annotated # type: ignore