@@ -7247,6 +7247,29 @@ def test_getitem(self):
72477247 self .assertEqual (get_args (fully_subscripted ), (Iterable [float ],))
72487248 self .assertIs (get_origin (fully_subscripted ), ListOrSetT )
72497249
7250+ def test_alias_attributes (self ):
7251+ T = TypeVar ('T' )
7252+ T2 = TypeVar ('T2' )
7253+ ListOrSetT = TypeAliasType ("ListOrSetT" , Union [List [T ], Set [T ]], type_params = (T ,))
7254+
7255+ subscripted = ListOrSetT [int ]
7256+ self .assertEqual (subscripted .__module__ , ListOrSetT .__module__ )
7257+ self .assertEqual (subscripted .__name__ , "ListOrSetT" )
7258+ self .assertEqual (subscripted .__value__ , Union [List [T ], Set [T ]])
7259+ self .assertEqual (subscripted .__type_params__ , (T ,))
7260+
7261+ still_generic = ListOrSetT [Iterable [T2 ]]
7262+ self .assertEqual (still_generic .__module__ , ListOrSetT .__module__ )
7263+ self .assertEqual (still_generic .__name__ , "ListOrSetT" )
7264+ self .assertEqual (still_generic .__value__ , Union [List [T ], Set [T ]])
7265+ self .assertEqual (still_generic .__type_params__ , (T ,))
7266+
7267+ fully_subscripted = still_generic [float ]
7268+ self .assertEqual (fully_subscripted .__module__ , ListOrSetT .__module__ )
7269+ self .assertEqual (fully_subscripted .__name__ , "ListOrSetT" )
7270+ self .assertEqual (fully_subscripted .__value__ , Union [List [T ], Set [T ]])
7271+ self .assertEqual (fully_subscripted .__type_params__ , (T ,))
7272+
72507273 def test_subscription_without_type_params (self ):
72517274 Simple = TypeAliasType ("Simple" , int )
72527275 with self .assertRaises (TypeError , msg = "Only generic type aliases are subscriptable" ):
@@ -7260,7 +7283,6 @@ def test_subscription_without_type_params(self):
72607283 with self .assertRaises (TypeError , msg = "Only generic type aliases are subscriptable" ):
72617284 MissingTypeParamsErr [int ]
72627285
7263-
72647286 def test_pickle (self ):
72657287 global Alias
72667288 Alias = TypeAliasType ("Alias" , int )
0 commit comments