diff --git a/src/griffe/agents/nodes.py b/src/griffe/agents/nodes.py index 90625ac8..9f0c0a16 100644 --- a/src/griffe/agents/nodes.py +++ b/src/griffe/agents/nodes.py @@ -675,7 +675,7 @@ def _get_name_annotation(node: NodeName, parent: Module | Class) -> Name: def _get_subscript_annotation(node: NodeSubscript, parent: Module | Class) -> Expression: left = _get_annotation(node.value, parent) - if left.full == "typing.Literal": # type: ignore[union-attr] + if left.full in {"typing.Literal", "typing_extensions.Literal"}: # type: ignore[union-attr] _node_annotation_map[NodeConstant] = _get_literal_annotation subscript = _get_annotation(node.slice, parent) _node_annotation_map[NodeConstant] = _get_constant_annotation diff --git a/tests/test_nodes.py b/tests/test_nodes.py index 5d675f3e..e3f0af7a 100644 --- a/tests/test_nodes.py +++ b/tests/test_nodes.py @@ -95,6 +95,8 @@ def _flat(expression: str | Name | Expression) -> list[str | Name]: [ ("import typing\nclass A: ...\na: typing.Literal['A']", False), ("from typing import Literal\nclass A: ...\na: Literal['A']", False), + ("import typing_extensions\nclass A: ...\na: typing.Literal['A']", False), + ("from typing_extensions import Literal\nclass A: ...\na: Literal['A']", False), ("from mod import A\na: 'A'", True), ("from mod import A\na: list['A']", True), ],