@@ -5790,20 +5790,24 @@ def test_nested_unpack(self):
57905790 T = TypeVar ('T' )
57915791 Ts = TypeVarTuple ("Ts" )
57925792 Variadic = TypeAliasType ("Variadic" , Tuple [int , Unpack [Ts ]], type_params = (Ts ,))
5793- Variadic [int , Tuple [str , int ]]
5794-
5795- TupleAliasTs = Variadic [Tuple [Unpack [Ts ], int ]]
5793+ # Tuple[int, Tuple[str, int]]
5794+ direct_subscription = Variadic [int , Tuple [str , int ]]
5795+ # Tuple[int, Tuple[*Ts, int]]
5796+ TupleAliasTs = Variadic [int , Tuple [Unpack [Ts ], int ]]
57965797
57975798 # if this fails all below are likely to fail too
57985799 # Tuple[int, Tuple[str, int]]
5799- TupleAliasTs [str ]
5800+ recursive_unpack = TupleAliasTs [str ]
5801+ self .assertEqual (direct_subscription , recursive_unpack )
5802+ self .assertEqual (get_args (recursive_unpack ), (int , Tuple [str , int ]))
58005803
58015804 TupleAliasTsT = Variadic [Tuple [Unpack [Ts ], T ]]
5802- with self .subTest ("Single parameter for tuple alias " ):
5803- # Tuple[int, Tuple[str, object]]
5804- nested_tuple_A = TupleAliasTsT [str , object ]
5805- nested_tuple_A_unpack = TupleAliasTsT [Unpack [Tuple [str ]], object ]
5805+ with self .subTest ("Two type vars " ):
5806+ # Tuple[int, Tuple[List[ str] , object]]
5807+ nested_tuple_A = TupleAliasTsT [List [ str ] , object ]
5808+ nested_tuple_A_unpack = TupleAliasTsT [Unpack [Tuple [List [ str ] ]], object ]
58065809 self .assertEqual (nested_tuple_A , nested_tuple_A_unpack )
5810+ self .assertEqual (get_args (nested_tuple_A ), (Tuple [List [str ], object ],))
58075811
58085812 with self .subTest ("With Callable and Unpack" ):
58095813 # Tuple[int, (str, int) -> object]
@@ -5814,11 +5818,10 @@ def test_nested_unpack(self):
58145818 # Equivalent Forms
58155819 with self .subTest ("Equivalence of variadic arguments" ):
58165820 nested_tuple_bare = TupleAliasTsT [str , int , object ]
5817- nested_tuple_B_1xUnpack = TupleAliasTsT [Unpack [Tuple [str , int ]], object ]
5818- nested_tuple_B_2xUnpack = TupleAliasTsT [Unpack [Tuple [str ]], Unpack [Tuple [int ]], object ]
5819- self .assertEqual (nested_tuple_B_1xUnpack , nested_tuple_bare )
5820- self .assertEqual (nested_tuple_B_1xUnpack , nested_tuple_B_2xUnpack )
5821- self .assertEqual (get_args (nested_tuple_B_2xUnpack ), (Tuple [str , int , object ], ))
5821+ self .assertEqual (nested_tuple_bare , TupleAliasTsT [Unpack [Tuple [str , int , object ]]])
5822+ self .assertEqual (nested_tuple_bare , TupleAliasTsT [Unpack [Tuple [str , int ]], object ])
5823+ self .assertEqual (nested_tuple_bare , TupleAliasTsT [Unpack [Tuple [str ]], Unpack [Tuple [int ]], object ])
5824+ self .assertEqual (get_args (nested_tuple_bare ), (Tuple [str , int , object ],))
58225825
58235826
58245827class TypeVarTupleTests (BaseTestCase ):
0 commit comments