@@ -3526,9 +3526,22 @@ def _raise_attribute_error(self, name: str) -> Never:
35263526 def __repr__ (self ) -> str :
35273527 return self .__name__
35283528
3529+ def _is_subscriptable (self ):
3530+ if len (self .__parameters__ ) > 0 :
3531+ return True
3532+ if _should_collect_from_parameters (self .__value__ ):
3533+ if hasattr (typing , '_collect_type_vars' ):
3534+ more_parameters = _collect_type_vars ((self .__value__ ,),
3535+ (TypeVar , ParamSpec ))
3536+ else :
3537+ more_parameters = _collect_parameters ((self .__value__ ,))
3538+ if more_parameters :
3539+ return True
3540+ return False
3541+
35293542 if sys .version_info >= (3 , 11 ):
35303543 def __getitem__ (self , parameters ):
3531- if len (self .__type_params__ ) == 0 :
3544+ if len (self .__parameters__ ) == 0 and not self . _is_subscriptable () :
35323545 raise TypeError ("Only generic type aliases are subscriptable" )
35333546 if not isinstance (parameters , tuple ):
35343547 parameters = (parameters ,)
@@ -3562,7 +3575,7 @@ def _check_parameter(self, item, recursion=0):
35623575 )
35633576
35643577 def __getitem__ (self , parameters ):
3565- if len (self .__type_params__ ) == 0 :
3578+ if len (self .__parameters__ ) == 0 and not self . _is_subscriptable () :
35663579 raise TypeError ("Only generic type aliases are subscriptable" )
35673580 if not isinstance (parameters , tuple ):
35683581 parameters = (parameters ,)
0 commit comments