import pickle from collections import namedtuple Point = namedtuple('Point', 'x y z') p_before = Point(10, 20, 30) before = pickle.dumps(p_before, 0) print '** Before fix' print '* Dump' print print before print print '* Load' print pickle.loads(before) print print # Prevent pickle protocol 0 from dumping OrderedDict. # Introduced in: # http://hg.python.org/cpython/diff/26d5f022eb1a/Lib/collections.py # Also relevant: # http://bugs.python.org/issue3065 # http://hg.python.org/cpython/rev/246a802637ad/ Point.__getstate__ = lambda _: None p_after = Point(10, 20, 30) after = pickle.dumps(p_after, 0) print '** After fix' print '* Dump' print print after print print '* Load' print pickle.loads(after) print print assert pickle.loads(before) == pickle.loads(after) print 'ok'