summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Lib/collections.py10
-rw-r--r--Lib/test/test_collections.py34
-rw-r--r--Misc/NEWS2
3 files changed, 24 insertions, 22 deletions
diff --git a/Lib/collections.py b/Lib/collections.py
index 0feda0a..e0782d0 100644
--- a/Lib/collections.py
+++ b/Lib/collections.py
@@ -1,14 +1,14 @@
-__all__ = ['deque', 'defaultdict', 'named_tuple']
+__all__ = ['deque', 'defaultdict', 'namedtuple']
from _collections import deque, defaultdict
from operator import itemgetter as _itemgetter
from keyword import iskeyword as _iskeyword
import sys as _sys
-def named_tuple(typename, field_names, verbose=False):
+def namedtuple(typename, field_names, verbose=False):
"""Returns a new subclass of tuple with named fields.
- >>> Point = named_tuple('Point', 'x y')
+ >>> Point = namedtuple('Point', 'x y')
>>> Point.__doc__ # docstring for the new class
'Point(x, y)'
>>> p = Point(11, y=22) # instantiate with positional args or keywords
@@ -94,10 +94,10 @@ def named_tuple(typename, field_names, verbose=False):
if __name__ == '__main__':
# verify that instances can be pickled
from cPickle import loads, dumps
- Point = named_tuple('Point', 'x, y', True)
+ Point = namedtuple('Point', 'x, y', True)
p = Point(x=10, y=20)
assert p == loads(dumps(p))
import doctest
- TestResults = named_tuple('TestResults', 'failed attempted')
+ TestResults = namedtuple('TestResults', 'failed attempted')
print TestResults(*doctest.testmod())
diff --git a/Lib/test/test_collections.py b/Lib/test/test_collections.py
index b1f3add..348919f 100644
--- a/Lib/test/test_collections.py
+++ b/Lib/test/test_collections.py
@@ -1,31 +1,31 @@
import unittest
from test import test_support
-from collections import named_tuple
+from collections import namedtuple
class TestNamedTuple(unittest.TestCase):
def test_factory(self):
- Point = named_tuple('Point', 'x y')
+ Point = namedtuple('Point', 'x y')
self.assertEqual(Point.__name__, 'Point')
self.assertEqual(Point.__doc__, 'Point(x, y)')
self.assertEqual(Point.__slots__, ())
self.assertEqual(Point.__module__, __name__)
self.assertEqual(Point.__getitem__, tuple.__getitem__)
- self.assertRaises(ValueError, named_tuple, 'abc%', 'efg ghi') # type has non-alpha char
- self.assertRaises(ValueError, named_tuple, 'class', 'efg ghi') # type has keyword
- self.assertRaises(ValueError, named_tuple, '9abc', 'efg ghi') # type starts with digit
+ self.assertRaises(ValueError, namedtuple, 'abc%', 'efg ghi') # type has non-alpha char
+ self.assertRaises(ValueError, namedtuple, 'class', 'efg ghi') # type has keyword
+ self.assertRaises(ValueError, namedtuple, '9abc', 'efg ghi') # type starts with digit
- self.assertRaises(ValueError, named_tuple, 'abc', 'efg g%hi') # field with non-alpha char
- self.assertRaises(ValueError, named_tuple, 'abc', 'abc class') # field has keyword
- self.assertRaises(ValueError, named_tuple, 'abc', '8efg 9ghi') # field starts with digit
- self.assertRaises(ValueError, named_tuple, 'abc', '__efg__ ghi') # field with double underscores
- self.assertRaises(ValueError, named_tuple, 'abc', 'efg efg ghi') # duplicate field
+ self.assertRaises(ValueError, namedtuple, 'abc', 'efg g%hi') # field with non-alpha char
+ self.assertRaises(ValueError, namedtuple, 'abc', 'abc class') # field has keyword
+ self.assertRaises(ValueError, namedtuple, 'abc', '8efg 9ghi') # field starts with digit
+ self.assertRaises(ValueError, namedtuple, 'abc', '__efg__ ghi') # field with double underscores
+ self.assertRaises(ValueError, namedtuple, 'abc', 'efg efg ghi') # duplicate field
- named_tuple('Point0', 'x1 y2') # Verify that numbers are allowed in names
+ namedtuple('Point0', 'x1 y2') # Verify that numbers are allowed in names
def test_instance(self):
- Point = named_tuple('Point', 'x y')
+ Point = namedtuple('Point', 'x y')
p = Point(11, 22)
self.assertEqual(p, Point(x=11, y=22))
self.assertEqual(p, Point(11, y=22))
@@ -44,17 +44,17 @@ class TestNamedTuple(unittest.TestCase):
self.assertEqual(p.__asdict__(), dict(x=11, y=22)) # test __dict__ method
# verify that field string can have commas
- Point = named_tuple('Point', 'x, y')
+ Point = namedtuple('Point', 'x, y')
p = Point(x=11, y=22)
self.assertEqual(repr(p), 'Point(x=11, y=22)')
# verify that fieldspec can be a non-string sequence
- Point = named_tuple('Point', ('x', 'y'))
+ Point = namedtuple('Point', ('x', 'y'))
p = Point(x=11, y=22)
self.assertEqual(repr(p), 'Point(x=11, y=22)')
def test_tupleness(self):
- Point = named_tuple('Point', 'x y')
+ Point = namedtuple('Point', 'x y')
p = Point(11, 22)
self.assert_(isinstance(p, tuple))
@@ -73,9 +73,9 @@ class TestNamedTuple(unittest.TestCase):
self.assertRaises(AttributeError, eval, 'p.z', locals())
def test_odd_sizes(self):
- Zero = named_tuple('Zero', '')
+ Zero = namedtuple('Zero', '')
self.assertEqual(Zero(), ())
- Dot = named_tuple('Dot', 'd')
+ Dot = namedtuple('Dot', 'd')
self.assertEqual(Dot(1), (1,))
def test_main(verbose=None):
diff --git a/Misc/NEWS b/Misc/NEWS
index b51c7fd..836ad1c 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -798,6 +798,8 @@ Library
Extension Modules
-----------------
+- collections.defaultdict now has a repr() function that can be run through eval()
+
- Patch #1388440: Add set_completion_display_matches_hook and
get_completion_type to readline.