Skip to content

Commit 40708d6

Browse files
committed
Update: Add support for Literal types
1 parent 38e0ce3 commit 40708d6

File tree

4 files changed

+24
-0
lines changed

4 files changed

+24
-0
lines changed

src/fake_bpy_module/transformer/data_type_refiner.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@
8585
_REGEX_DATA_TYPE_OPTION_OPTIONAL = re.compile(r"(^|^An |\()[oO]ptional(\s|\))")
8686
_REGEX_DATA_TYPE_STARTS_WITH_COLLECTION = re.compile(r"^(list|tuple|dict)")
8787
_REGEX_DATA_TYPE_MODIFIER_TYPES = re.compile(r"^(Iterable|Sequence|Callable|list|dict|tuple|type)?\[(.+)\]$") # noqa: E501
88+
_REGEX_DATA_TYPE_LITERALS_TYPE = re.compile(r"^Literal\[(.+)\]$")
8889
_REGEX_DATA_TYPE_START_AND_END_WITH_PARENTHESES = re.compile(r"^\((.+)\)$")
8990

9091
REGEX_SPLIT_OR = re.compile(r" \| | or |,")
@@ -769,6 +770,11 @@ def parse_multiple_data_type_elements(
769770

770771
return parse_multiple_data_type_elements(m.group(2), modifier)
771772

773+
if m := _REGEX_DATA_TYPE_LITERALS_TYPE.match(dtype_str):
774+
new_dtype_node = DataTypeNode()
775+
append_child(new_dtype_node, nodes.Text(f"typing.Literal[{m.group(1)}]"))
776+
return [new_dtype_node]
777+
772778
# Ex. string, default "", -> string
773779
if m := REGEX_MATCH_DATA_TYPE_WITH_DEFAULT.match(dtype_str):
774780
dtype_str = m.group(1)

tests/python/fake_bpy_module_test/fake_bpy_module_test/transformer_test_data/data_type_refiner_test/expect/special_data_type.xml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,13 @@
5656
<data-type-list>
5757
<data-type>
5858
Callable[[float, int], tuple[float, int]]
59+
<data>
60+
<name>
61+
data_python_typing_syntax_7
62+
<description>
63+
<data-type-list>
64+
<data-type>
65+
Literal["OPTION_1", "OPTION_2", "OPTION_3"]
5966
<data>
6067
<name>
6168
data_multiple_lines

tests/python/fake_bpy_module_test/fake_bpy_module_test/transformer_test_data/data_type_refiner_test/expect/special_data_type_transformed.xml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,13 @@
8282
int
8383
]
8484
]
85+
<data>
86+
<name>
87+
data_python_typing_syntax_7
88+
<description>
89+
<data-type-list>
90+
<data-type option="never none">
91+
typing.Literal["OPTION_1", "OPTION_2", "OPTION_3"]
8592
<data>
8693
<name>
8794
data_multiple_lines

tests/python/fake_bpy_module_test/fake_bpy_module_test/transformer_test_data/data_type_refiner_test/input/special_data_type.rst

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,10 @@
2424

2525
:type: Callable[[float, int], tuple[float, int]]
2626

27+
.. data:: data_python_typing_syntax_7
28+
29+
:type: Literal["OPTION_1", "OPTION_2", "OPTION_3"]
30+
2731
.. data:: data_multiple_lines
2832

2933
:type: type[

0 commit comments

Comments
 (0)