Skip to content

Commit 3d29eda

Browse files
authored
gh-103746: Test types.UnionType and Literal types together (#103747)
1 parent d2745fe commit 3d29eda

File tree

2 files changed

+34
-0
lines changed

2 files changed

+34
-0
lines changed

Lib/test/test_types.py

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -925,6 +925,35 @@ def test_or_type_operator_with_SpecialForm(self):
925925
assert typing.Optional[int] | str == typing.Union[int, str, None]
926926
assert typing.Union[int, bool] | str == typing.Union[int, bool, str]
927927

928+
def test_or_type_operator_with_Literal(self):
929+
Literal = typing.Literal
930+
self.assertEqual((Literal[1] | Literal[2]).__args__,
931+
(Literal[1], Literal[2]))
932+
933+
self.assertEqual((Literal[0] | Literal[False]).__args__,
934+
(Literal[0], Literal[False]))
935+
self.assertEqual((Literal[1] | Literal[True]).__args__,
936+
(Literal[1], Literal[True]))
937+
938+
self.assertEqual(Literal[1] | Literal[1], Literal[1])
939+
self.assertEqual(Literal['a'] | Literal['a'], Literal['a'])
940+
941+
import enum
942+
class Ints(enum.IntEnum):
943+
A = 0
944+
B = 1
945+
946+
self.assertEqual(Literal[Ints.A] | Literal[Ints.A], Literal[Ints.A])
947+
self.assertEqual(Literal[Ints.B] | Literal[Ints.B], Literal[Ints.B])
948+
949+
self.assertEqual((Literal[Ints.B] | Literal[Ints.A]).__args__,
950+
(Literal[Ints.B], Literal[Ints.A]))
951+
952+
self.assertEqual((Literal[0] | Literal[Ints.A]).__args__,
953+
(Literal[0], Literal[Ints.A]))
954+
self.assertEqual((Literal[1] | Literal[Ints.B]).__args__,
955+
(Literal[1], Literal[Ints.B]))
956+
928957
def test_or_type_repr(self):
929958
assert repr(int | str) == "int | str"
930959
assert repr((int | str) | list) == "int | str | list"

Lib/test/test_typing.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1805,6 +1805,11 @@ class Ints(enum.IntEnum):
18051805
A = 0
18061806
B = 1
18071807

1808+
self.assertEqual(Union[Literal[Ints.A], Literal[Ints.A]],
1809+
Literal[Ints.A])
1810+
self.assertEqual(Union[Literal[Ints.B], Literal[Ints.B]],
1811+
Literal[Ints.B])
1812+
18081813
self.assertEqual(Union[Literal[Ints.A], Literal[Ints.B]].__args__,
18091814
(Literal[Ints.A], Literal[Ints.B]))
18101815

0 commit comments

Comments
 (0)