Skip to content

Commit

Permalink
Add tests for different order of bases,
Browse files Browse the repository at this point in the history
  • Loading branch information
serhiy-storchaka committed Apr 29, 2022
1 parent 6c1fb73 commit 0f6fcee
Showing 1 changed file with 19 additions and 11 deletions.
30 changes: 19 additions & 11 deletions Lib/test/test_typing.py
Expand Up @@ -5296,19 +5296,27 @@ class X(NamedTuple, Generic[T]):
self.assertEqual(X.__bases__, (tuple, Generic))
self.assertEqual(X.__orig_bases__, (NamedTuple, Generic[T]))
self.assertEqual(X.__mro__, (X, tuple, Generic, object))
self.assertEqual(X.__parameters__, (T,))

A = X[int]
self.assertIs(A.__origin__, X)
self.assertEqual(A.__args__, (int,))
self.assertEqual(A.__parameters__, ())

a = A(3)
self.assertIs(type(a), X)
self.assertEqual(a.x, 3)
class Y(Generic[T], NamedTuple):
x: T
self.assertEqual(Y.__bases__, (Generic, tuple))
self.assertEqual(Y.__orig_bases__, (Generic[T], NamedTuple))
self.assertEqual(Y.__mro__, (Y, Generic, tuple, object))

for G in X, Y:
with self.subTest(type=G):
self.assertEqual(G.__parameters__, (T,))
A = G[int]
self.assertIs(A.__origin__, G)
self.assertEqual(A.__args__, (int,))
self.assertEqual(A.__parameters__, ())

a = A(3)
self.assertIs(type(a), G)
self.assertEqual(a.x, 3)

with self.assertRaises(TypeError):
X[int, str]
with self.assertRaises(TypeError):
G[int, str]

def test_namedtuple_keyword_usage(self):
LocalEmployee = NamedTuple("LocalEmployee", name=str, age=int)
Expand Down

0 comments on commit 0f6fcee

Please sign in to comment.