@@ -7317,14 +7317,48 @@ def test_invalid_cases(self):
73177317 self .assertEqual (get_args (too_many ), (int , bool ))
73187318 self .assertEqual (too_many .__parameters__ , ())
73197319
7320- ListOrSet2T = TypeAliasType ("ListOrSetT " , Union [List [T ], Set [T2 ]], type_params = (T , T2 ))
7320+ ListOrSet2T = TypeAliasType ("ListOrSet2T " , Union [List [T ], Set [T2 ]], type_params = (T , T2 ))
73217321 not_enough = ListOrSet2T [int ]
73227322 self .assertEqual (get_args (not_enough ), (int ,))
73237323 self .assertEqual (not_enough .__parameters__ , ())
73247324
73257325 not_enough2 = ListOrSet2T [T ]
73267326 self .assertEqual (get_args (not_enough2 ), (T ,))
73277327 self .assertEqual (not_enough2 .__parameters__ , (T ,))
7328+ # ParamSpec
7329+ P = ParamSpec ('P' )
7330+ CallableP = TypeAliasType ("CallableP" , Callable [P , T ], type_params = (P ,))
7331+
7332+ callable_not_enough = CallableP [int ]
7333+ self .assertEqual (callable_not_enough .__parameters__ , ())
7334+ self .assertEqual (get_args (callable_not_enough ), (int , ))
7335+
7336+ callable_too_many = CallableP [str , float , T2 , int ]
7337+ self .assertEqual (callable_too_many .__parameters__ , (T2 , ))
7338+ self .assertEqual (get_args (callable_too_many ), (str , float , T2 , int , ))
7339+
7340+ # Test with Concatenate
7341+ callable_concat = CallableP [Concatenate [Any , T2 , P ], Any ]
7342+ reveal_type (callable_concat )
7343+ self .assertEqual (callable_concat .__parameters__ , (T2 , P ))
7344+ self .assertEqual (get_args (callable_concat ), (Concatenate [Any , T2 , P ], Any ))
7345+
7346+ # TypeVarTuple
7347+ Ts = TypeVarTuple ("Ts" )
7348+ Variadic = TypeAliasType ("Variadic" , Tuple [int , Unpack [Ts ]], type_params = (Ts ,))
7349+ # No Unpack
7350+ invalid_tuple_A = Variadic [Tuple [int , T ]]
7351+ self .assertEqual (invalid_tuple_A .__parameters__ , (T , ))
7352+ self .assertEqual (get_args (invalid_tuple_A ), (Tuple [int , T ], ))
7353+
7354+ # To type tuple
7355+ invalid_tuple_B = Variadic [int , T ]
7356+ self .assertEqual (invalid_tuple_B .__parameters__ , (T , ))
7357+
7358+ # No Tuple, but list
7359+ invalud_tuple_C = Variadic [[int , T ]]
7360+ self .assertEqual (invalud_tuple_C .__parameters__ , ())
7361+ self .assertEqual (get_args (invalud_tuple_C ), ([int , T ],))
73287362
73297363 def test_pickle (self ):
73307364 global Alias
0 commit comments