changeset 87684:bb71baa28f1b

Issue #19754: Make pickletools.optimize respect the frame size target.
author Alexandre Vassalotti <alexandre@peadrop.com>
date Sun, 01 Dec 2013 16:27:46 -0800
parents 2df5e1f537b0
children 9feada79a411
files Lib/pickletools.py Lib/test/pickletester.py Lib/test/test_pickletools.py
diffstat 3 files changed, 2 insertions(+), 14 deletions(-) [+]
line wrap: on
line diff
--- a/Lib/pickletools.py	Sun Dec 01 16:03:24 2013 -0800
+++ b/Lib/pickletools.py	Sun Dec 01 16:27:46 2013 -0800
@@ -2313,6 +2313,7 @@
         buf.start_framing()
     for start, stop, putid in opcodes:
         if putid in gets:
+            #buf.commit_frame()
             buf.write(p[start:stop])
     if proto >= 4:
         buf.end_framing()
--- a/Lib/test/pickletester.py	Sun Dec 01 16:03:24 2013 -0800
+++ b/Lib/test/pickletester.py	Sun Dec 01 16:27:46 2013 -0800
@@ -1343,12 +1343,6 @@
                 pickled = self.dumps(obj, proto)
                 unpickled = self.loads(pickled)
                 self.assertEqual(obj, unpickled)
-                # Test the framing heuristic is sane,
-                # assuming a given frame size target.
-                if self.optimized:
-                    # These assumptions are currently invalid for optimized
-                    # pickles (see e.g. issue19754).
-                    continue
                 bytes_per_frame = (len(pickled) /
                                    count_opcode(pickle.FRAME, pickled))
                 self.assertGreater(bytes_per_frame,
@@ -1365,12 +1359,7 @@
                 unpickled = self.loads(pickled)
                 self.assertEqual(obj, unpickled)
                 n_frames = count_opcode(pickle.FRAME, pickled)
-                if self.optimized:
-                    # At least one frame was emitted (see issue19754).
-                    self.assertGreaterEqual(n_frames, 1)
-                else:
-                    # At least one frame was emitted per large bytes object.
-                    self.assertGreaterEqual(n_frames, len(obj))
+                self.assertGreaterEqual(n_frames, len(obj))
 
     def test_optional_frames(self):
         if pickle.HIGHEST_PROTOCOL < 4:
--- a/Lib/test/test_pickletools.py	Sun Dec 01 16:03:24 2013 -0800
+++ b/Lib/test/test_pickletools.py	Sun Dec 01 16:27:46 2013 -0800
@@ -6,8 +6,6 @@
 
 class OptimizedPickleTests(AbstractPickleTests, AbstractPickleModuleTests):
 
-    optimized = True
-
     def dumps(self, arg, proto=None):
         return pickletools.optimize(pickle.dumps(arg, proto))