@@ -7165,13 +7165,38 @@ def test_attributes(self):
71657165 self .assertEqual (ListOrSetT .__type_params__ , (T ,))
71667166 self .assertEqual (ListOrSetT .__parameters__ , (T ,))
71677167
7168+ subscripted = ListOrSetT [int ]
7169+ self .assertEqual (subscripted .__name__ , "ListOrSetT" )
7170+ self .assertEqual (subscripted .__value__ , Union [List [T ], Set [T ]],)
7171+ self .assertEqual (subscripted .__type_params__ , (T , ))
7172+ self .assertEqual (subscripted .__parameters__ , ())
7173+
7174+ T2 = TypeVar ("T2" )
7175+ subscriptedT = ListOrSetT [T2 ]
7176+ self .assertEqual (subscriptedT .__name__ , "ListOrSetT" )
7177+ self .assertEqual (subscriptedT .__value__ , Union [List [T ], Set [T ]],)
7178+ self .assertEqual (subscriptedT .__type_params__ , (T , ))
7179+ self .assertEqual (subscriptedT .__parameters__ , (T2 , ))
7180+
71687181 Ts = TypeVarTuple ("Ts" )
71697182 Variadic = TypeAliasType ("Variadic" , Tuple [int , Unpack [Ts ]], type_params = (Ts ,))
71707183 self .assertEqual (Variadic .__name__ , "Variadic" )
71717184 self .assertEqual (Variadic .__value__ , Tuple [int , Unpack [Ts ]])
71727185 self .assertEqual (Variadic .__type_params__ , (Ts ,))
71737186 self .assertEqual (Variadic .__parameters__ , tuple (iter (Ts )))
71747187
7188+ subscripted_tuple = Variadic [Unpack [Tuple [int , float ]]]
7189+ self .assertEqual (subscripted_tuple .__name__ , "Variadic" )
7190+ self .assertEqual (subscripted_tuple .__value__ , Tuple [int , Unpack [Ts ]])
7191+ self .assertEqual (subscripted_tuple .__type_params__ , (Ts ,))
7192+ self .assertEqual (subscripted_tuple .__parameters__ , ())
7193+
7194+ subscripted_tupleT = Variadic [Unpack [Tuple [int , T ]]]
7195+ self .assertEqual (subscripted_tupleT .__name__ , "Variadic" )
7196+ self .assertEqual (subscripted_tupleT .__value__ , Tuple [int , Unpack [Ts ]])
7197+ self .assertEqual (subscripted_tupleT .__type_params__ , (Ts ,))
7198+ self .assertEqual (subscripted_tupleT .__parameters__ , (T , ))
7199+
71757200 def test_cannot_set_attributes (self ):
71767201 Simple = TypeAliasType ("Simple" , int )
71777202 with self .assertRaisesRegex (AttributeError , "readonly attribute" ):
@@ -7282,6 +7307,24 @@ def test_getitem(self):
72827307 with self .assertRaises (TypeError ):
72837308 ListOrSetT [(Generic [T ], )]
72847309
7310+ def test_invalid_cases (self ):
7311+ # If these cases fail the specificiation might have changed
7312+ T = TypeVar ("T" )
7313+ T2 = TypeVar ("T2" )
7314+ ListOrSetT = TypeAliasType ("ListOrSetT" , Union [List [T ], Set [T ]], type_params = (T ,))
7315+ too_many = ListOrSetT [int , bool ]
7316+
7317+ self .assertEqual (get_args (too_many ), (int , bool ))
7318+ self .assertEqual (too_many .__parameters__ , ())
7319+
7320+ ListOrSet2T = TypeAliasType ("ListOrSetT" , Union [List [T ], Set [T2 ]], type_params = (T , T2 ))
7321+ not_enough = ListOrSet2T [int ]
7322+ self .assertEqual (get_args (not_enough ), (int ,))
7323+ self .assertEqual (not_enough .__parameters__ , ())
7324+
7325+ not_enough2 = ListOrSet2T [T ]
7326+ self .assertEqual (get_args (not_enough2 ), (T ,))
7327+ self .assertEqual (not_enough2 .__parameters__ , (T ,))
72857328
72867329 def test_pickle (self ):
72877330 global Alias
0 commit comments