Commit Graph

187 Commits

Author SHA1 Message Date
Serhiy Storchaka beb652ccc1 Make catched exception more specific and correct a comment. 2015-12-30 21:00:08 +02:00
Serhiy Storchaka 3c49710e9f Issue #25761: Added more test cases for testing unpickling broken data.
Output raised exception at verbose level 2 (-vv).
2015-11-29 13:13:24 +02:00
Serhiy Storchaka 7279befccb Issue #25761: Added more test cases for testing unpickling broken data.
Output raised exception at verbose level 2 (-vv).
2015-11-29 13:12:10 +02:00
Serhiy Storchaka 4409c6cfae Issue #23914: Fixed SystemError raised by unpickler on broken pickle data. 2015-11-23 15:19:23 +02:00
Serhiy Storchaka e9b3074cf9 Issue #23914: Fixed SystemError raised by unpickler on broken pickle data. 2015-11-23 15:17:43 +02:00
Serhiy Storchaka 608c213530 Issue #892902: Added new tests for pickling recursive collections. 2015-11-07 11:16:10 +02:00
Serhiy Storchaka 838b7cc0e7 Issue #892902: Added new tests for pickling recursive collections. 2015-11-07 11:17:02 +02:00
Serhiy Storchaka 525faaeffc Issue #25262. Added support for BINBYTES8 opcode in Python implementation of
unpickler.  Highest 32 bits of 64-bit size for BINUNICODE8 and BINBYTES8
opcodes no longer silently ignored on 32-bit platforms in C implementation.
2015-09-29 22:12:29 +03:00
Serhiy Storchaka e060619d4b Issue #25262. Added support for BINBYTES8 opcode in Python implementation of
unpickler.  Highest 32 bits of 64-bit size for BINUNICODE8 and BINBYTES8
opcodes no longer silently ignored on 32-bit platforms in C implementation.
2015-09-29 22:10:07 +03:00
Serhiy Storchaka cb764960c9 Added additional unpickling tests. 2015-09-29 15:50:45 +03:00
Serhiy Storchaka b8b951f6ee Added additional unpickling tests. 2015-09-29 15:49:58 +03:00
Serhiy Storchaka 104de66b76 Moved unpickling tests with prepickled data to separate class. 2015-09-29 15:34:53 +03:00
Serhiy Storchaka c6b54b45ea Moved unpickling tests with prepickled data to separate class. 2015-09-29 15:33:24 +03:00
Benjamin Peterson b32b998bf7 merge 3.4 2015-07-02 16:58:31 -05:00
Benjamin Peterson d3a2a95125 use correct __new__ method (closes #24552) 2015-07-02 16:58:22 -05:00
Benjamin Peterson 42e913aa3a merge 3.4 (#24552) 2015-07-02 16:18:58 -05:00
Benjamin Peterson 80f78a3efc fix use after free (closes #24552) 2015-07-02 16:18:38 -05:00
Serhiy Storchaka 58e4134a1c Issue #23611: Serializing more "lookupable" objects (such as unbound methods
or nested classes) now are supported with pickle protocols < 4.
2015-03-31 14:07:24 +03:00
Serhiy Storchaka d5d818d40b Issue #18473: Fixed 2to3 and 3to2 compatible pickle mappings.
Fixed ambigious reverse mappings.  Added many new mappings.  Import mapping
is no longer applied to modules already mapped with full name mapping.

Added tests for compatible pickling and unpickling and for consistency of
_compat_pickle mappings.
2015-03-31 13:17:10 +03:00
Serhiy Storchaka bfe1824d08 Issue #18473: Fixed 2to3 and 3to2 compatible pickle mappings.
Fixed ambigious reverse mappings.  Added many new mappings.  Import mapping
is no longer applied to modules already mapped with full name mapping.

Added tests for compatible pickling and unpickling and for consistency of
_compat_pickle mappings.
2015-03-31 13:12:37 +03:00
Serhiy Storchaka d362c21264 Use pickled data compatible with Python 2 for testing protocols 0-2. 2015-02-15 14:10:24 +02:00
Serhiy Storchaka fa310ee3a9 Use pickled data compatible with Python 2 for testing protocols 0-2. 2015-02-15 14:10:03 +02:00
Serhiy Storchaka 230586739c Issue #23094: Fixed readline with frames in Python implementation of pickle. 2015-01-26 10:37:44 +02:00
Serhiy Storchaka 21d7533c4c Issue #23094: Fixed readline with frames in Python implementation of pickle. 2015-01-26 10:37:01 +02:00
Serhiy Storchaka 707b5ccde5 Issue #22783: Pickling now uses the NEWOBJ opcode instead of the NEWOBJ_EX
opcode if possible.
2014-12-16 19:43:46 +02:00
Antoine Pitrou 6cd5eda0dd Fix uninitialized variable after #22676. 2014-12-02 00:20:03 +01:00
Serhiy Storchaka 8cf7c1cff0 Issue #22775: Fixed unpickling of http.cookies.SimpleCookie with protocol 2
and above.  Patch by Tim Graham.
2014-11-02 22:18:25 +02:00
Serhiy Storchaka 786ac7b27d Issue #19886: Use better estimated memory requirements for bigmem tests.
Incorrect requirements can cause memory swapping.
2014-01-10 13:39:27 +02:00
Serhiy Storchaka 4847e4e1f4 Issue #19886: Use better estimated memory requirements for bigmem tests.
Incorrect requirements can cause memory swapping.
2014-01-10 13:37:54 +02:00
Antoine Pitrou c1764dd350 Issue #19648: implement empty tests in pickletester. Patch by Gennadiy Zlobin. 2013-12-28 16:57:37 +01:00
Alexandre Vassalotti d05c9ff845 Issue #6784: Strings from Python 2 can now be unpickled as bytes objects.
Initial patch by Merlijn van Deen.

I've added a few unrelated docstring fixes in the patch while I was at
it, which makes the documentation for pickle a bit more consistent.
2013-12-07 01:09:27 -08:00
Alexandre Vassalotti 6e73ff1a31 Issue #19881: Fix bad pickling of large bytes in cpickle. 2013-12-05 19:29:32 -08:00
Antoine Pitrou 6e8bc50317 Issue #19800: make the pickle framing tests more precise. 2013-12-03 09:51:40 +01:00
Walter Doerwald 69359f6207 Fix #19834: merge with 3.3. 2013-12-02 11:43:20 +01:00
Walter Doerwald 9d1dbca5e2 Fix issue #19834: Support unpickling of exceptions pickled by Python 2. 2013-12-02 11:41:01 +01:00
Alexandre Vassalotti 28d271ef6b Issue #19754: Make pickletools.optimize respect the frame size target. 2013-12-01 16:27:46 -08:00
Alexandre Vassalotti 3c23e7a5dc Issue #6477: Merge with 3.3. 2013-11-30 16:21:20 -08:00
Alexandre Vassalotti 19b6fa6ebb Issue #6477: Added support for pickling the types of built-in singletons. 2013-11-30 16:06:39 -08:00
Alexandre Vassalotti a1eedf9ff0 Merge with 3.3. 2013-11-30 13:55:39 -08:00
Alexandre Vassalotti 896414fedf Fixed _pickle.Unpickler to handle empty persistent IDs correctly. 2013-11-30 13:52:35 -08:00
Antoine Pitrou 3ab9cfc501 Selectively re-enable framing tests 2013-11-24 14:33:37 +01:00
Alexandre Vassalotti 5e411b7035 Disable annoying tests which doesn't work optimized pickles. 2013-11-23 20:58:24 -08:00
Alexandre Vassalotti b6a2f2a0d1 Make framing optional in pickle protocol 4.
This will allow us to control in the future whether to use framing or not.
For example, we may want to turn it off for tiny pickle where it doesn't
help.

The change also improves performance slightly:

### fastpickle ###
Min: 0.608517 -> 0.557358: 1.09x faster
Avg: 0.798892 -> 0.694738: 1.15x faster
Significant (t=3.45)
Stddev: 0.17145 -> 0.12704: 1.3496x smaller
Timeline: http://goo.gl/3xQE1J

### pickle_dict ###
Min: 0.669920 -> 0.615271: 1.09x faster
Avg: 0.733633 -> 0.645058: 1.14x faster
Significant (t=5.05)
Stddev: 0.12041 -> 0.02961: 4.0662x smaller
Timeline: http://goo.gl/LpLSXI

### pickle_list ###
Min: 0.397583 -> 0.368112: 1.08x faster
Avg: 0.412784 -> 0.397223: 1.04x faster
Significant (t=2.78)
Stddev: 0.01518 -> 0.03653: 2.4068x larger
Timeline: http://goo.gl/v39E59

### unpickle_list ###
Min: 0.692935 -> 0.594870: 1.16x faster
Avg: 0.730012 -> 0.628395: 1.16x faster
Significant (t=17.76)
Stddev: 0.02720 -> 0.02995: 1.1012x larger
Timeline: http://goo.gl/2P9AEt

The following not significant results are hidden, use -v to show them:
fastunpickle.
2013-11-23 20:30:03 -08:00
Antoine Pitrou d5df19461d test_pickle: speed up test_long 2013-11-23 21:20:49 +01:00
Antoine Pitrou c9dc4a2a8a Issue #17810: Implement PEP 3154, pickle protocol 4.
Most of the work is by Alexandre.
2013-11-23 18:59:12 +01:00
Serhiy Storchaka 48e6a8c88a Issue #18743: Fix references to non-existant "StringIO" module
in docstrings and comments.
2013-08-29 11:39:48 +03:00
Serhiy Storchaka 50254c57cd Issue #18743: Fix references to non-existant "StringIO" module
in docstrings and comments.
2013-08-29 11:35:43 +03:00
Alexandre Vassalotti f3bc946628 Merge 3.3 2013-04-20 13:25:55 -07:00
Alexandre Vassalotti 1f7492c28a Isuse #17720: Fix APPENDS handling in the Python implementation of Unpickler
to correctly process the opcode when it is used on non-list objects.
2013-04-20 13:19:46 -07:00
Alexandre Vassalotti 7c5e094cbf Make C and Python implementations of pickle load STRING opcodes the same way.
The C version tried to remove trailing whitespace between the last quote and
the newline character. I am not sure why it had this because pickle never
generated such pickles---for this to happen repr(some_string) would need to
return trailing whitespace. It was maybe there to make it easier for people
to write pickles in text editors. Anyhow, the Python version doesn't do this
so there is no point keeping this around anymore.

Also, I've changed the exception raised when a bad pickle is encountered.
Again this unlikely to make much difference to anyone though it does make
testing slightly nicer for us.
2013-04-15 23:14:55 -07:00