From 9d20e1af409c22537f096206edd330f16ab8f1f3 Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Wed, 4 May 2022 17:06:50 +0300 Subject: gh-92107: Add tests that subscription works on arbitrary named tuple types (GH-92304) --- Lib/test/test_collections.py | 12 ++++++++++++ Lib/test/test_typing.py | 14 ++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/Lib/test/test_collections.py b/Lib/test/test_collections.py index 3a16045..fa1d0e0 100644 --- a/Lib/test/test_collections.py +++ b/Lib/test/test_collections.py @@ -698,6 +698,18 @@ class TestNamedTuple(unittest.TestCase): Point = namedtuple('Point', 'x y') self.assertEqual(Point.__match_args__, ('x', 'y')) + def test_non_generic_subscript(self): + # For backward compatibility, subscription works + # on arbitrary named tuple types. + Group = collections.namedtuple('Group', 'key group') + A = Group[int, list[int]] + self.assertEqual(A.__origin__, Group) + self.assertEqual(A.__parameters__, ()) + self.assertEqual(A.__args__, (int, list[int])) + a = A(1, [2]) + self.assertIs(type(a), Group) + self.assertEqual(a, (1, [2])) + ################################################################################ ### Abstract Base Classes diff --git a/Lib/test/test_typing.py b/Lib/test/test_typing.py index 55e18c0..8399465 100644 --- a/Lib/test/test_typing.py +++ b/Lib/test/test_typing.py @@ -5736,6 +5736,20 @@ class NamedTupleTests(BaseTestCase): with self.assertRaises(TypeError): G[int, str] + def test_non_generic_subscript(self): + # For backward compatibility, subscription works + # on arbitrary NamedTuple types. + class Group(NamedTuple): + key: T + group: list[T] + A = Group[int] + self.assertEqual(A.__origin__, Group) + self.assertEqual(A.__parameters__, ()) + self.assertEqual(A.__args__, (int,)) + a = A(1, [2]) + self.assertIs(type(a), Group) + self.assertEqual(a, (1, [2])) + def test_namedtuple_keyword_usage(self): LocalEmployee = NamedTuple("LocalEmployee", name=str, age=int) nick = LocalEmployee('Nick', 25) -- cgit v0.12