summaryrefslogtreecommitdiffstats
path: root/Lib/test/pickletester.py
Commit message (Collapse)AuthorAgeFilesLines
* Issue 5794: fix cPickle's unpickling of recursive tuples.Collin Winter2009-05-261-0/+10
|
* Isue #5084: unpickling now interns the attribute names of pickled objects,Antoine Pitrou2009-05-021-0/+14
| | | | | saving memory and avoiding growth in size of subsequent pickles. Proposal and original patch by Jake McGuire.
* Issue 5665: add more pickling tests.Collin Winter2009-04-091-12/+182
| | | | | | | | | | | - Add tests for the module-level load() and dump() functions. - Add tests for cPickle's internal data structures, stressing workloads with many gets/puts. - Add tests for the Pickler and Unpickler classes, in particular the memo attribute. - test_xpickle is extended to test backwards compatibility with Python 2.4, 2.5 and 2.6 by round-tripping pickled objects through a worker process. This is guarded with a regrtest -u xpickle resource.
* Issue #1672332: Fix unpickling of subnormal floats, which was raisingMark Dickinson2009-01-241-0/+10
| | | | | ValueError on some platforms as a result of the platform strtod setting errno on underflow.
* Fix bogus unicode tests in pickletester.Alexandre Vassalotti2008-12-271-2/+2
|
* Fix issue #4730: cPickle corrupts high-unicode strings.Alexandre Vassalotti2008-12-271-2/+9
| | | | | Update outdated copy of PyUnicode_EncodeRawUnicodeEscape. Add a test case.
* Issue #4176: Pickle would crash the interpreter when a __reduce__ functionAmaury Forgeot d'Arc2008-10-301-0/+23
| | | | | | | | | does not return an iterator for the 4th and 5th items. (sequence-like and mapping-like state) A list is not an iterator... Will backport to 2.6 and 2.5.
* Revert copy_reg -> copyreg rename.Georg Brandl2008-05-201-9/+9
|
* Added module stub for copy_reg renaming in 3.0.Alexandre Vassalotti2008-05-111-9/+9
| | | | | | Renamed copy_reg to copyreg in the standard library, to avoid spurious warnings and ease later merging to py3k branch. Public documentation remains intact.
* Patch #1462488: prevent a segfault in object_reduce_ex() by splittingŽiga Seilnacht2007-03-151-0/+32
| | | | | the implementation for __reduce__ and __reduce_ex__ into two separate functions. Fixes bug #931877. Will backport.
* Bug #1473625: stop cPickle making float dumps locale dependent in protocol 0.Georg Brandl2006-04-301-1/+7
| | | | | On the way, add a decorator to test_support to facilitate running single test functions in different locales with automatic cleanup.
* Patch #995766: Keyword argument support in cPickle.Martin v. Löwis2004-07-271-0/+10
|
* Deleting cyclic object comparison.Armin Rigo2003-10-281-15/+10
| | | | | SF patch 825639 http://mail.python.org/pipermail/python-dev/2003-October/039445.html
* MyComplex now works.Guido van Rossum2003-03-021-1/+1
|
* test_load_from_canned_string(): Created a DATA2 string to test a cannedTim Peters2003-03-021-2/+66
| | | | proto 2 pickle too.
* Three test cases for __reduce_ex__. This fails for cPickle, until TimGuido van Rossum2003-02-181-0/+52
| | | | checks in his changes to support this in cPickle.c.
* cPickle.c, load_build(): Taught cPickle how to pick apartTim Peters2003-02-151-6/+1
| | | | | | | | | | | | | | | | | | the optional proto 2 slot state. pickle.py, load_build(): CAUTION: Noted that cPickle's load_build and pickle's load_build really don't do the same things with the state, and didn't before this patch either. cPickle never tries to do .update(), and has no backoff if instance.__dict__ can't be retrieved. There are no tests that can tell the difference, and part of what cPickle's load_build() did looked accidental to me, so I don't know what the true intent is here. pickletester.py, test_pickle.py: Got rid of the hack for exempting cPickle from running some of the proto 2 tests. dictobject.c, PyDict_Next(): documented intended use.
* cPickle produces NEWOBJ appropriately now. It still doesn't knowTim Peters2003-02-141-6/+6
| | | | how to unpickle the new slot-full state tuples.
* We didn't have any tests making pickles with one of {pickle, cPickle},Tim Peters2003-02-131-0/+5
| | | | | | | and loading them via the other, except for the special cases of this Guido added to test_datetime.py for datetime module objects. The new test_xpickle.py tries all of pickletester's AbstractPickleTests in both x-module ways.
* Added a simple NEWOBJ test. This is in the pickle-only part of theTim Peters2003-02-131-0/+15
| | | | test for now (cPickle can't yet produce NEWOBJ).
* Added a HIGHEST_PROTOCOL module attribute to pickle and cPickle.Tim Peters2003-02-131-2/+4
|
* Implemented batching for dicts in cPickle. This is after two failedTim Peters2003-02-111-17/+17
| | | | | attempts to merge the C list-batch and dict-batch code -- they worked, but it was a godawful mess to read.
* Implemented list batching in cPickle.Tim Peters2003-02-111-17/+17
|
* Added tests to ensure that list and dict "chunking" are actuallyTim Peters2003-02-111-1/+51
| | | | | | getting done. Since this isn't yet implemented in cPickle, the new tests are in TempAbstractPickleTests (which cPickle doesn't run).
* cPickle: exempt two_tuple from GC -- it's a speed hack, and doesn'tTim Peters2003-02-041-11/+53
| | | | | | | | | | | | guarantee to keep valid pointers in its slots. tests: Moved ExtensionSaver from test_copy_reg into pickletester, and use it both places. Once extension codes get assigned, it won't be safe to overwrite them willy nilly in test suites, and ExtensionSaver does a thorough job of undoing any possible damage. Beefed up the EXT[124] tests a bit, to check the smallest and largest codes in each opcode's range too.
* cPickle now generates proto 2 EXT[124] when appropriate.Tim Peters2003-02-041-18/+18
| | | | | Moved such EXT tests as currently exist from TempAbstractPickleTests to AbstractPickleTests, so that test_cpickle runs them too.
* test_newobj_tuple(), test_newobj_list(): These tests should work underTim Peters2003-02-031-8/+10
| | | | all protocols, so tried them under all.
* test_newobj_generic(): Use the global protocols vector instead of aTim Peters2003-02-031-1/+1
| | | | hardcoded list.
* Added a bit to the EXT[124] tests, and refactored them to squash codeTim Peters2003-02-031-51/+27
| | | | duplication. Note that these still don't get run under cPickle.
* Do a better job of testing that opcodes aren't generated under protocolsTim Peters2003-02-031-18/+32
| | | | earlier than the ones in which they were introduced.
* Proper testing of proto 2 in part requires checking that the new opcodesTim Peters2003-02-031-11/+10
| | | | | | are actually getting generated. Add helpered method ensure_opcode_in_pickle to do a correct job checking for that. Changed test_long1(), test_long4(), and test_short_tuples() to use it.
* cPickle support for TUPLE[123]. Incidentally plugged several undetectedTim Peters2003-02-021-0/+31
| | | | overflow holes in Pdata_grow().
* Implemented proto 2 NEWTRUE and NEWFALSE in cPickle.Tim Peters2003-02-021-0/+6
|
* Beefed up the tests by putting in more "for proto in protocols:" outerTim Peters2003-02-021-86/+231
| | | | | | | loops. Renamed DATA and BINDATA to DATA0 and DATA1. Included disassemblies, but noted why we can't test them. Added XXX comment to cPickle about a mysterious comment, where pickle and cPickle diverge in how they number PUT indices.
* Add cPickle support for PROTO. Duplicated PROTO/LONG1/LONG4 code inTim Peters2003-02-021-2/+23
| | | | | the hitherto unknown (to me) noload() cPickle function, which is (a) something we don't test at all, and (b) pickle.py doesn't have.
* long(string, base) now takes time linear in len(string) when base is aTim Peters2003-02-021-10/+1
| | | | | power of 2. Enabled the tail end of test_long() in pickletester.py because it no longer takes forever when run from test_pickle.py.
* cPickle.c: Full support for the new LONG1 and LONG4. Added comments.Tim Peters2003-02-021-11/+49
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Assorted code cleanups; e.g., sizeof(char) is 1 by definition, so there's no need to do things like multiply by sizeof(char) in hairy malloc arguments. Fixed an undetected-overflow bug in readline_file(). longobject.c: Fixed a really stupid bug in the new _PyLong_NumBits. pickle.py: Fixed stupid bug in save_long(): When proto is 2, it wrote LONG1 or LONG4, but forgot to return then -- it went on to append the proto 1 LONG opcode too. Fixed equally stupid cancelling bugs in load_long1() and load_long4(): they *returned* the unpickled long instead of pushing it on the stack. The return values were ignored. Tests passed before only because save_long() pickled the long twice. Fixed bugs in encode_long(). Noted that decode_long() is quadratic-time despite our hopes, because long(string, 16) is still quadratic-time in len(string). It's hex() that's linear-time. I don't know a way to make decode_long() linear-time in Python, short of maybe transforming the 256's-complement bytes into marshal's funky internal format, and letting marshal decode that. It would be more valuable to make long(string, 16) linear time. pickletester.py: Added a global "protocols" vector so tests can try all the protocols in a sane way. Changed test_ints() and test_unicode() to do so. Added a new test_long(), but the tail end of it is disabled because it "takes forever" under pickle.py (but runs very quickly under cPickle: cPickle proto 2 for longs is linear-time).
* Removed all uses of the out-of-favor __safe_for_unpickling__ magicTim Peters2003-02-011-2/+0
| | | | attr, and copy_reg.safe_constructors.
* Implement appropriate __getnewargs__ for all immutable subclassable builtinGuido van Rossum2003-01-291-2/+44
| | | | | | | | types. The special handling for these can now be removed from save_newobj(). Add some testing for this. Also add support for setting the 'fast' flag on the Python Pickler class, which suppresses use of the memo.
* Test all three EXT opcodes, and move these tests intoGuido van Rossum2003-01-291-0/+61
| | | | TempAbstractPickleTests, because they don't work with cPickle yet.
* Temporary hacks to arrange that the pickle tests relying on protocol 2Tim Peters2003-01-281-0/+6
| | | | | | only get run by test_pickle.py now (& not by test_cpickle.py). This should be undone when protocol 2 is implemented in cPickle too. test_cpickle should pass again.
* Add a test for a list subclass with a __dict__ as well as slots.Guido van Rossum2003-01-281-0/+17
|
* The default __reduce__ on the base object type obscured anyGuido van Rossum2003-01-281-23/+14
| | | | | | possibility of calling save_reduce(). Add a special hack for this. The tests for this are much simpler now (no __getstate__ or __getnewargs__ needed).
* Some experimental support for generating NEWOBJ with proto=2, andGuido van Rossum2003-01-281-0/+39
| | | | fixed a bug in load_newobj().
* OK, this is really the last one tonight!Guido van Rossum2003-01-281-0/+7
| | | | NEWFALSE and NEWTRUE.
* Shouldn't test short tuples with all items equal -- one potential bugGuido van Rossum2003-01-281-4/+4
| | | | | | | would be that the tuple is reversed on unpickling, and we should catch that. :-) Goodnight -- that's it for toniht!
* More protocol 2: TUPLE1, TUPLE2, TUPLE3.Guido van Rossum2003-01-281-0/+12
| | | | Also moved the special case for empty tuples from save() to save_tuple().
* First baby steps towards implementing protocol 2: PROTO, LONG1 and LONG4.Guido van Rossum2003-01-281-0/+14
|
* Add some simple tests of the persistence hooks.Jeremy Hylton2002-11-131-0/+35
|
* Check for trailing backslash. Fixes #593656.Martin v. Löwis2002-08-141-0/+1
|