[ python-Bugs-998998 ] pickle bug - recursively memoizing class?
SourceForge.net
noreply at sourceforge.net
Thu May 19 13:00:03 CEST 2005
Bugs item #998998, was opened at 2004-07-27 22:55
Message generated for change (Comment added) made by grubert
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=998998&group_id=5470
Category: Python Library
Group: None
Status: Open
Resolution: None
Priority: 5
Submitted By: Skip Montanaro (montanaro)
Assigned to: Nobody/Anonymous (nobody)
Summary: pickle bug - recursively memoizing class?
Initial Comment:
The attached script (picklecycle.py) gives me an
assertion error
in Pickler.memoize(). Maybe I'm just doing something dumb.
I have very little experience with pickle and even less
experience
pickling new-style class instances. I'm just trying to
adapt an
existing messy object graph to allow it to be pickled.
I realize the
two instances refer to each other, but I thought pickle was
supposed to gracefully handle cyclic object graphs.
I can worm around the problem a couple ways. First,
getting
rid of new-style classes does the trick. Also
modifying B.__reduce__
to not return self.__dict__ seems to do the trick.
Output (cycle.out) and a modified version of
Pickler.memoize
(memoize.py) will be attached momentarily.
----------------------------------------------------------------------
Comment By: engelbert gruber (grubert)
Date: 2005-05-19 13:00
Message:
Logged In: YES
user_id=147070
it does memoize recursively,
but "asserts" not to get stuck in cycles.
that's how i understand the code if ::
assert id(obj) not in self.memo
is replaced by ::
if id(obj) in self.memo:
return
it works (better). and test_pickle.py still passes.
----------------------------------------------------------------------
Comment By: Skip Montanaro (montanaro)
Date: 2004-07-27 22:57
Message:
Logged In: YES
user_id=44345
Attaching the output I see when running picklecycle.py w/ the
modified memoize() method (cycle.out).
----------------------------------------------------------------------
Comment By: Skip Montanaro (montanaro)
Date: 2004-07-27 22:56
Message:
Logged In: YES
user_id=44345
Attaching chatty version of Pickler.memoize()
----------------------------------------------------------------------
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=998998&group_id=5470
More information about the Python-bugs-list
mailing list