Skip to content

Commit 0f6fcee

Browse files
Add tests for different order of bases,
1 parent 6c1fb73 commit 0f6fcee

File tree

1 file changed

+19
-11
lines changed

1 file changed

+19
-11
lines changed

Lib/test/test_typing.py

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5296,19 +5296,27 @@ class X(NamedTuple, Generic[T]):
52965296
self.assertEqual(X.__bases__, (tuple, Generic))
52975297
self.assertEqual(X.__orig_bases__, (NamedTuple, Generic[T]))
52985298
self.assertEqual(X.__mro__, (X, tuple, Generic, object))
5299-
self.assertEqual(X.__parameters__, (T,))
53005299

5301-
A = X[int]
5302-
self.assertIs(A.__origin__, X)
5303-
self.assertEqual(A.__args__, (int,))
5304-
self.assertEqual(A.__parameters__, ())
5305-
5306-
a = A(3)
5307-
self.assertIs(type(a), X)
5308-
self.assertEqual(a.x, 3)
5300+
class Y(Generic[T], NamedTuple):
5301+
x: T
5302+
self.assertEqual(Y.__bases__, (Generic, tuple))
5303+
self.assertEqual(Y.__orig_bases__, (Generic[T], NamedTuple))
5304+
self.assertEqual(Y.__mro__, (Y, Generic, tuple, object))
5305+
5306+
for G in X, Y:
5307+
with self.subTest(type=G):
5308+
self.assertEqual(G.__parameters__, (T,))
5309+
A = G[int]
5310+
self.assertIs(A.__origin__, G)
5311+
self.assertEqual(A.__args__, (int,))
5312+
self.assertEqual(A.__parameters__, ())
5313+
5314+
a = A(3)
5315+
self.assertIs(type(a), G)
5316+
self.assertEqual(a.x, 3)
53095317

5310-
with self.assertRaises(TypeError):
5311-
X[int, str]
5318+
with self.assertRaises(TypeError):
5319+
G[int, str]
53125320

53135321
def test_namedtuple_keyword_usage(self):
53145322
LocalEmployee = NamedTuple("LocalEmployee", name=str, age=int)

0 commit comments

Comments
 (0)