Skip to content

Commit 50b55af

Browse files
committed
Use public API for testing _SpecialGenericAlias.__setattr__
1 parent 8cb7850 commit 50b55af

1 file changed

Lines changed: 30 additions & 25 deletions

File tree

src/test_typing_extensions.py

Lines changed: 30 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -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

22222252
class 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

22912296
class TypeTests(BaseTestCase):
22922297

0 commit comments

Comments
 (0)