summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGeorg Brandl <georg@python.org>2013-05-12 09:09:11 (GMT)
committerGeorg Brandl <georg@python.org>2013-05-12 09:09:11 (GMT)
commitce654f48aac8c060ee3188f597e4fb78b2839abb (patch)
treeac5d70691a8aea217dccd26f2072aa2a9353f99c
parenta6df938fefd5b51d85a45cf3f29f60ee7bb21edf (diff)
downloadcpython-ce654f48aac8c060ee3188f597e4fb78b2839abb.zip
cpython-ce654f48aac8c060ee3188f597e4fb78b2839abb.tar.gz
cpython-ce654f48aac8c060ee3188f597e4fb78b2839abb.tar.bz2
Issue #15535: Fix pickling of named tuples.
-rw-r--r--Lib/collections.py4
-rw-r--r--Lib/test/test_collections.py1
-rw-r--r--Misc/NEWS3
3 files changed, 8 insertions, 0 deletions
diff --git a/Lib/collections.py b/Lib/collections.py
index eb20243..33aedd9 100644
--- a/Lib/collections.py
+++ b/Lib/collections.py
@@ -281,6 +281,10 @@ class {typename}(tuple):
'Return self as a plain tuple. Used by copy and pickle.'
return tuple(self)
+ def __getstate__(self):
+ 'Exclude the OrderedDict from pickling'
+ return None
+
{field_defs}
'''
diff --git a/Lib/test/test_collections.py b/Lib/test/test_collections.py
index b2a5f05..c18256b 100644
--- a/Lib/test/test_collections.py
+++ b/Lib/test/test_collections.py
@@ -272,6 +272,7 @@ class TestNamedTuple(unittest.TestCase):
q = loads(dumps(p, protocol))
self.assertEqual(p, q)
self.assertEqual(p._fields, q._fields)
+ self.assertNotIn(b'OrderedDict', dumps(p, protocol))
def test_copy(self):
p = TestNT(x=10, y=20, z=30)
diff --git a/Misc/NEWS b/Misc/NEWS
index e3e203f..a062175 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -16,6 +16,9 @@ Library
- Issue #17666: Fix reading gzip files with an extra field.
+- Issue #15535: Fix namedtuple pickles which were picking up the OrderedDict
+ instead of just the underlying tuple.
+
What's New in Python 3.2.4?
===========================