Implemented batching for dicts in cPickle. This is after two failed

attempts to merge the C list-batch and dict-batch code -- they worked, but
it was a godawful mess to read.
This commit is contained in:
Tim Peters 2003-02-11 22:43:24 +00:00
parent e7b33db22d
commit 42f08ac1e3
3 changed files with 138 additions and 48 deletions

View file

@ -694,23 +694,6 @@ class AbstractPickleTests(unittest.TestCase):
else:
self.failUnless(num_appends >= 2)
# XXX Temporary hack, so long as the C implementation of pickle protocol
# XXX 2 isn't ready. When it is, move the methods in TempAbstractPickleTests
# XXX into AbstractPickleTests above, and get rid of TempAbstractPickleTests
# XXX along with the references to it in test_pickle.py.
class TempAbstractPickleTests(unittest.TestCase):
def test_newobj_list_slots(self):
x = SlotList([1, 2, 3])
x.foo = 42
x.bar = "hello"
s = self.dumps(x, 2)
y = self.loads(s)
self.assertEqual(list(x), list(y))
self.assertEqual(x.__dict__, y.__dict__)
self.assertEqual(x.foo, y.foo)
self.assertEqual(x.bar, y.bar)
def test_dict_chunking(self):
n = 10 # too small to chunk
x = dict.fromkeys(range(n))
@ -733,6 +716,23 @@ class TempAbstractPickleTests(unittest.TestCase):
else:
self.failUnless(num_setitems >= 2)
# XXX Temporary hack, so long as the C implementation of pickle protocol
# XXX 2 isn't ready. When it is, move the methods in TempAbstractPickleTests
# XXX into AbstractPickleTests above, and get rid of TempAbstractPickleTests
# XXX along with the references to it in test_pickle.py.
class TempAbstractPickleTests(unittest.TestCase):
def test_newobj_list_slots(self):
x = SlotList([1, 2, 3])
x.foo = 42
x.bar = "hello"
s = self.dumps(x, 2)
y = self.loads(s)
self.assertEqual(list(x), list(y))
self.assertEqual(x.__dict__, y.__dict__)
self.assertEqual(x.foo, y.foo)
self.assertEqual(x.bar, y.bar)
class MyInt(int):
sample = 1