mirror of
https://github.com/python/cpython.git
synced 2025-11-20 10:57:44 +00:00
Revert r73401 per Raymond Hettinger's request.
The rational is the change might cause imcompatiblity problems with PyYAML. In addition, Raymond wants to kept the different versions of collections synchronized across Python versions.
This commit is contained in:
parent
450ae573bc
commit
cb73bdac95
2 changed files with 6 additions and 8 deletions
|
|
@ -99,16 +99,14 @@ class OrderedDict(dict, MutableMapping):
|
|||
|
||||
def __reduce__(self):
|
||||
'Return state information for pickling'
|
||||
dictitems = self.iteritems()
|
||||
items = [[k, self[k]] for k in self]
|
||||
tmp = self.__map, self.__root
|
||||
del self.__map, self.__root
|
||||
inst_dict = vars(self).copy()
|
||||
self.__map, self.__root = tmp
|
||||
# Set the state item to None when the dictionary is empty. This saves
|
||||
# about 2 opcodes when the object is pickled.
|
||||
if not inst_dict:
|
||||
inst_dict = None
|
||||
return (self.__class__, (), inst_dict, None, dictitems)
|
||||
if inst_dict:
|
||||
return (self.__class__, (items,), inst_dict)
|
||||
return self.__class__, (items,)
|
||||
|
||||
setdefault = MutableMapping.setdefault
|
||||
update = MutableMapping.update
|
||||
|
|
|
|||
|
|
@ -795,9 +795,9 @@ class TestOrderedDict(unittest.TestCase):
|
|||
# do not save instance dictionary if not needed
|
||||
pairs = [('c', 1), ('b', 2), ('a', 3), ('d', 4), ('e', 5), ('f', 6)]
|
||||
od = OrderedDict(pairs)
|
||||
self.assertEqual(len(od.__reduce__()), 2)
|
||||
od.x = 10
|
||||
self.assertGreaterEqual(len(od.__reduce__()), 2)
|
||||
self.assertLessEqual(len(od.__reduce__()), 5)
|
||||
self.assertEqual(len(od.__reduce__()), 3)
|
||||
|
||||
def test_repr(self):
|
||||
od = OrderedDict([('c', 1), ('b', 2), ('a', 3), ('d', 4), ('e', 5), ('f', 6)])
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue