@@ -925,6 +925,35 @@ def test_or_type_operator_with_SpecialForm(self):
925
925
assert typing .Optional [int ] | str == typing .Union [int , str , None ]
926
926
assert typing .Union [int , bool ] | str == typing .Union [int , bool , str ]
927
927
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
+
928
957
def test_or_type_repr (self ):
929
958
assert repr (int | str ) == "int | str"
930
959
assert repr ((int | str ) | list ) == "int | str | list"
0 commit comments