Commit Graph

272 Commits

Author SHA1 Message Date
Guido van Rossum e467be6511 When instantiating a class with no arguments and where the class does
not define __getinitargs__, bypass the __init__ constructor
completely.  This uses the trick of instantiating an empty dummy class
and then changing inst.__class__ to the real class.  This is done in
two places: once for the INST and once for the OBJ format code.

Also replaced the much outdated long doc string with a short summary
of the module; the information of that doc string is already
incorporated in the library reference manual.
1997-12-05 19:42:42 +00:00
Guido van Rossum 4fb5b28dfc Three independent changes:
- Don't use "from copy_reg import *".

- Use cls.__module__ instead of calling whichobject(cls, cls.__name__);
  also try __module__ in whichmodule(), just in case.

- After calling save_reduce(), add the object to the memo.
1997-09-12 20:07:24 +00:00
Guido van Rossum d6ead328b3 *Semantic change*: when unpickling the instance variables of an
instance, use inst.__dict__.update(value) instead of a for loop with
setattr() over the value.keys().  This is more consistent (the
pickling doesn't use getattr() either but pickles inst.__dict__) and
avoids problems with instances that have a __setattr__ hook.

But it *is* a semantic change (because the setattr hook is no longer
used).  So beware!
1997-09-08 02:08:11 +00:00
Guido van Rossum 5ed5c4c364 Add the same _keep_alive patch (by Michael Scharff) that was added to
copy.deepcopy() a while ago.  Can't reproduce this but it doesn't
break anything and it looks like the code could have the same problem.
1997-09-03 00:23:54 +00:00
Guido van Rossum 8be9a11617 Restore two features of the original 1.4 pickle:
- which_module() search __main__ last;

- load_inst() no longer checks that the classname really refers to a class.
1997-04-25 19:52:29 +00:00
Guido van Rossum 5a56649e09 Remove Digital Creations copyright (Jim sez it's okay). 1997-04-11 22:31:56 +00:00
Guido van Rossum b72cf2d697 New version by Digital Creations, supports binary format compatible
with cPickle.
1997-04-09 17:32:51 +00:00
Guido van Rossum efd3a3a843 Implement find_class() without exec statement. 1997-03-14 04:21:10 +00:00
Guido van Rossum 36fc11e894 Compromise on test in find_class(): a user-defined function is okay,
but a built-in function is not.
1996-10-07 14:34:20 +00:00
Guido van Rossum abfd8064d8 This is the third time I check in this change :-(
Don't use assignments into inst.__dict__ to restore instance
variables; use setattr() instead.
1996-08-08 20:26:45 +00:00
Guido van Rossum 37a6f16d2e Slight update of doc string -- suggest default args for __init__, no
longer complain that __getinitargs__ is an ugly name.
1996-08-08 18:35:22 +00:00
Guido van Rossum c7c5e697c3 Optimizations and one intentional loophole by Jim Fulton.
The optimizations consist mostly of using local variables to cache
methods or instance variables used a lot (e.g. "self.write").

The loopholes allows marshalling extension types as long as they have
a __class__ attribute (in which case they may support the rest of the
class piclking protocol as well).  This allows pickling MESS extension
types.
1996-07-22 22:26:07 +00:00
Guido van Rossum 955c5d156d Set the base for atoi() and atol() to 0, since we're reading Python
numbers here, and so that atol() doesn't barf on the trailing 'L'.
Add a test case involving a long integer.
1996-05-15 22:49:57 +00:00
Guido van Rossum 7853647dd1 Don't atoi() the memo key.
Use atoi(), atol(), atof() instead of load_atomic for seed-up.
1996-04-12 13:36:27 +00:00
Guido van Rossum e0bfd50d76 correct typo (persis*ent) 1995-08-07 20:16:58 +00:00
Guido van Rossum f71c79bb85 test other name variable 1995-06-22 18:51:23 +00:00
Guido van Rossum 48aa82e2df correct typo in example 1995-04-10 11:34:46 +00:00
Guido van Rossum 0c891ce61a pickle classes; add format_version, load(s)/dump(s) shortcuts 1995-03-14 15:09:05 +00:00
Guido van Rossum 7849da8631 added PicklingError exception 1995-03-09 14:08:35 +00:00
Guido van Rossum 7b5430f2e8 raise EOFError when load() hits EOF, instead of KeyError 1995-03-04 22:25:21 +00:00
Guido van Rossum 256cbd7487 minute comment changes 1995-02-16 16:30:50 +00:00
Guido van Rossum a48061a580 shelve.py: database of persistent objects, on top of pickle.py and anydbm.py
pickle.py: new low-level persistency module (used to be called flatten)
dbmac.py: stupid dbm clone for the Mac
anydbm.py: generic dbm interface (should be extended to support gdbm)
1995-01-10 00:31:14 +00:00