@@ -3539,61 +3539,55 @@ def _is_subscriptable(self):
35393539 return True
35403540 return False
35413541
3542- if sys .version_info >= (3 , 11 ):
3543- def __getitem__ (self , parameters ):
3544- if len (self .__parameters__ ) == 0 and not self ._is_subscriptable ():
3545- raise TypeError ("Only generic type aliases are subscriptable" )
3546- if not isinstance (parameters , tuple ):
3547- parameters = (parameters ,)
3548- parameters = [
3549- typing ._type_check (
3550- item , f'Subscripting { self .__name__ } requires a type.'
3551- )
3552- for item in parameters
3553- ]
3554- alias = typing ._GenericAlias (self , tuple (parameters ))
3555- alias .__value__ = self .__value__
3556- alias .__type_params__ = self .__type_params__
3557- return alias
3558- else :
3559- def _check_parameter (self , item , recursion = 0 ):
3542+ if sys .version_info < (3 , 11 ):
3543+ def _check_single_param (self , param , recursion = 0 ):
35603544 # Allow [], [int], [int, str], [int, ...], [int, T]
3561- if isinstance (item , (_UnpackAlias , _ConcatenateGenericAlias )):
3545+ if isinstance (param , (_UnpackAlias , _ConcatenateGenericAlias )):
35623546 # Unpack
35633547 yield from [checked
3564- for arg in item .__args__
3565- for checked in self ._check_parameter (arg , recursion + 1 )]
3566- elif item is ...:
3548+ for arg in param .__args__
3549+ for checked in self ._check_single_param (arg , recursion + 1 )]
3550+ elif param is ...:
35673551 yield ...
3568- elif isinstance (item , list ) and recursion == 0 :
3552+ elif isinstance (param , list ) and recursion == 0 :
35693553 yield [checked
3570- for arg in item
3571- for checked in self ._check_parameter (arg , recursion + 1 )]
3554+ for arg in param
3555+ for checked in self ._check_single_param (arg , recursion + 1 )]
35723556 else :
35733557 yield typing ._type_check (
3574- item , f'Subscripting { self .__name__ } requires a type.'
3558+ param , f'Subscripting { self .__name__ } requires a type.'
35753559 )
35763560
3577- def __getitem__ (self , parameters ):
3578- if len (self .__parameters__ ) == 0 and not self ._is_subscriptable ():
3579- raise TypeError ("Only generic type aliases are subscriptable" )
3580- if not isinstance (parameters , tuple ):
3581- parameters = (parameters ,)
3582- parameters = [
3561+ def _check_parameters (self , parameters ):
3562+ if sys .version_info < (3 , 11 ):
3563+ return [
35833564 checked
35843565 for item in parameters
3585- for checked in self ._check_parameter (item )
3566+ for checked in self ._check_single_param (item )
35863567 ]
3587- if sys .version_info [:2 ] == (3 , 10 ):
3588- alias = typing ._GenericAlias (self , tuple (parameters ),
3589- _typevar_types = (TypeVar , ParamSpec )
3590- )
3591- else :
3592- alias = typing ._GenericAlias (self , tuple (parameters ))
3568+ return [typing ._type_check (
3569+ item , f'Subscripting { self .__name__ } requires a type.'
3570+ )
3571+ for item in parameters
3572+ ]
3573+
3574+ def __getitem__ (self , parameters ):
3575+ if len (self .__parameters__ ) == 0 and not self ._is_subscriptable ():
3576+ raise TypeError ("Only generic type aliases are subscriptable" )
3577+ if not isinstance (parameters , tuple ):
3578+ parameters = (parameters ,)
3579+ parameters = self ._check_parameters (parameters )
3580+ if sys .version_info [:2 ] == (3 , 10 ):
3581+ alias = typing ._GenericAlias (self , tuple (parameters ),
3582+ _typevar_types = (TypeVar , ParamSpec )
3583+ )
3584+ else :
3585+ alias = typing ._GenericAlias (self , tuple (parameters ))
3586+ alias .__value__ = self .__value__
3587+ alias .__type_params__ = self .__type_params__
3588+ if not hasattr (alias , '__name__' ): # < 3.11
35933589 alias .__name__ = self .__name__
3594- alias .__value__ = self .__value__
3595- alias .__type_params__ = self .__type_params__
3596- return alias
3590+ return alias
35973591
35983592 def __reduce__ (self ):
35993593 return self .__name__
0 commit comments