summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_typing.py
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>2016-11-15 17:48:09 (GMT)
committerGuido van Rossum <guido@python.org>2016-11-15 17:48:09 (GMT)
commit63859aea9b413a3b44ad3c19d750d4a55fae7864 (patch)
treea8673ac6b019692722e17391d190a039ec6304a4 /Lib/test/test_typing.py
parent43cf2efafcaa0de9b8656a8f52b8cfc1b5cff1e9 (diff)
parent2f841442354f41f2490cef76e9ba24bfef9dfbea (diff)
downloadcpython-63859aea9b413a3b44ad3c19d750d4a55fae7864.zip
cpython-63859aea9b413a3b44ad3c19d750d4a55fae7864.tar.gz
cpython-63859aea9b413a3b44ad3c19d750d4a55fae7864.tar.bz2
Issue #28556: Allow keyword syntax for NamedTuple (Ivan Levkivskyi) (upstream #321) (3.5->3.6)
Diffstat (limited to 'Lib/test/test_typing.py')
-rw-r--r--Lib/test/test_typing.py14
1 files changed, 14 insertions, 0 deletions
diff --git a/Lib/test/test_typing.py b/Lib/test/test_typing.py
index 0582845..12bbf16 100644
--- a/Lib/test/test_typing.py
+++ b/Lib/test/test_typing.py
@@ -1865,6 +1865,20 @@ class NamedTupleTests(BaseTestCase):
self.assertEqual(CoolEmployee._fields, ('name', 'cool'))
self.assertEqual(CoolEmployee._field_types, dict(name=str, cool=int))
+ @skipUnless(PY36, 'Python 3.6 required')
+ def test_namedtuple_keyword_usage(self):
+ LocalEmployee = NamedTuple("LocalEmployee", name=str, age=int)
+ nick = LocalEmployee('Nick', 25)
+ self.assertIsInstance(nick, tuple)
+ self.assertEqual(nick.name, 'Nick')
+ self.assertEqual(LocalEmployee.__name__, 'LocalEmployee')
+ self.assertEqual(LocalEmployee._fields, ('name', 'age'))
+ self.assertEqual(LocalEmployee._field_types, dict(name=str, age=int))
+ with self.assertRaises(TypeError):
+ NamedTuple('Name', [('x', int)], y=str)
+ with self.assertRaises(TypeError):
+ NamedTuple('Name', x=1, y='a')
+
def test_pickle(self):
global Emp # pickle wants to reference the class by name
Emp = NamedTuple('Emp', [('name', str), ('id', int)])