@@ -3541,19 +3541,19 @@ def __getitem__(self, parameters):
35413541 alias .__type_params__ = self .__type_params__
35423542 return alias
35433543 else :
3544- def _check_parameter (self , item , typ = _marker ):
3544+ def _check_parameter (self , item , recursion = 0 ):
35453545 # Allow [], [int], [int, str], [int, ...], [int, T]
35463546 if isinstance (item , (_UnpackAlias , _ConcatenateGenericAlias )):
35473547 # Unpack
35483548 yield from [checked
35493549 for arg in item .__args__
3550- for checked in self ._check_parameter (arg )]
3550+ for checked in self ._check_parameter (arg , recursion + 1 )]
35513551 elif item is ...:
35523552 yield ...
3553- elif isinstance (item , list ) and typ is not _marker :
3553+ elif isinstance (item , list ) and recursion == 0 :
35543554 yield [checked
35553555 for arg in item
3556- for checked in self ._check_parameter (arg )]
3556+ for checked in self ._check_parameter (arg , recursion + 1 )]
35573557 else :
35583558 yield typing ._type_check (
35593559 item , f'Subscripting { self .__name__ } requires a type.'
@@ -3562,16 +3562,10 @@ def _check_parameter(self, item, typ=_marker):
35623562 def __getitem__ (self , parameters ):
35633563 if not isinstance (parameters , tuple ):
35643564 parameters = (parameters ,)
3565- param_difference = (len (parameters ) - len (self .__type_params__ ))
3566- if param_difference > 0 :
3567- # invalid case that does not raise an error, fill with dummys
3568- type_params = [* self .__type_params__ , * [Any ] * param_difference ]
3569- else :
3570- type_params = self .__type_params__
35713565 parameters = [
35723566 checked
3573- for item , typ in zip ( parameters , type_params )
3574- for checked in self ._check_parameter (item , typ )
3567+ for item in parameters
3568+ for checked in self ._check_parameter (item )
35753569 ]
35763570 if sys .version_info [:2 ] == (3 , 10 ):
35773571 alias = typing ._GenericAlias (self , tuple (parameters ),
0 commit comments