@@ -2218,6 +2218,36 @@ def test_or_and_ror(self):
22182218 Union [typing_extensions .Generator , typing .Deque ]
22192219 )
22202220
2221+ def test_setattr (self ):
2222+ origin = collections .abc .Generator
2223+ alias = typing_extensions .Generator
2224+
2225+ # Attribute assignment on generic alias sets attribute on origin
2226+ alias .foo = 1
2227+ self .assertEqual (alias .foo , 1 )
2228+ self .assertEqual (origin .foo , 1 )
2229+ # cleanup
2230+ del origin .foo
2231+ self .assertRaises (AttributeError , lambda : alias .foo )
2232+ self .assertRaises (AttributeError , lambda : origin .foo )
2233+
2234+ # Except for dunders...
2235+ alias .__dunder__ = 2
2236+ self .assertEqual (alias .__dunder__ , 2 )
2237+ self .assertRaises (AttributeError , lambda : origin .__dunder__ )
2238+ # cleanup
2239+ del alias .__dunder__
2240+ self .assertRaises (AttributeError , lambda : alias .__dunder___ )
2241+
2242+ # ...and certain known attributes
2243+ old_name = alias ._name
2244+ alias ._name = "NewName"
2245+ self .assertEqual (alias ._name , "NewName" )
2246+ self .assertRaises (AttributeError , lambda : origin ._name )
2247+ # cleanup
2248+ alias ._name = old_name
2249+ self .assertEqual (alias ._name , old_name )
2250+
22212251
22222252class OtherABCTests (BaseTestCase ):
22232253
@@ -2262,31 +2292,6 @@ def test_asynccontextmanager_type_params(self):
22622292 cm2 = typing_extensions .AsyncContextManager [int , None ]
22632293 self .assertEqual (get_args (cm2 ), (int , NoneType ))
22642294
2265- def test_setattr (self ):
2266- if hasattr (typing_extensions , "_SpecialGenericAlias" ):
2267- mod = typing_extensions
2268- else :
2269- mod = typing
2270- class Foo :
2271- _name = "Foo"
2272- Alias = mod ._SpecialGenericAlias (Foo , 1 )
2273-
2274- # Attribute assignment on generic alias sets attribute on origin
2275- Alias .foo = 1
2276- self .assertEqual (Alias .foo , 1 )
2277- self .assertEqual (Foo .foo , 1 )
2278-
2279- # Except for dunders...
2280- Alias .__dunder__ = 2
2281- self .assertEqual (Alias .__dunder__ , 2 )
2282- with self .assertRaises (AttributeError ):
2283- Foo .__dunder__
2284-
2285- # ...and certain known attributes
2286- Alias ._name = "NewName"
2287- self .assertEqual (Alias ._name , "NewName" )
2288- self .assertEqual (Foo ._name , "Foo" )
2289-
22902295
22912296class TypeTests (BaseTestCase ):
22922297
0 commit comments