Issue 502085: pickle problems (with Boost.Python)
Created on 2002-01-10 22:49 by rwgk, last changed 2022-04-10 16:04 by admin. This issue is now closed.
Messages (8)
msg8702 - (view)
Author: Ralf W. Grosse-Kunstleve (rwgk)
Date: 2002-01-10 22:49
Date: 2002-01-11 05:07
Date: 2002-01-11 18:39
Date: 2002-03-25 23:19
Date: 2002-03-26 00:54
Date: 2002-03-26 12:59
Boost.Python (http://www.boost.org/libs/python/doc/index.html) is a popular package for integrating Python and C++. Boost.Python pickle support is broken when using Python 2.2 final, but works with Python 2.2c1. I noticed this difference: diff /usr/local_cci/Python- 2.2/lib/python2.2/pickle.py /usr/local_cci/Python- 2.2c1/lib/python2.2/pickle.py 26c26 < __version__ = "$Revision: 1.56 $" # Code version --- > __version__ = "$Revision: 1.55 $" # Code version 166,169d165 < if issubclass(t, TypeType): < self.save_global(object) < return I inserted one line in pickle.py: % diff /usr/local_cci/Python- 2.2/lib/python2.2/pickle.py . 165a166 > print "t", t Result: t <extension class pickle1.world at 1400c9c08> t <boost::python::meta_class<boost::python::detail::exten sion_instance> object at 0x3ffffe41ae0> Traceback (most recent call last): File "zi", line 9, in ? pstr = pickle.dumps(wd) File "pickle.py", line 974, in dumps Pickler(file, bin).dump(object) File "pickle.py", line 115, in dump self.save(object) File "pickle.py", line 216, in save self.save_reduce(callable, arg_tup, state) File "pickle.py", line 241, in save_reduce save(callable) File "pickle.py", line 167, in save if issubclass(t, TypeType): TypeError: issubclass() arg 1 must be a class The following patch restores backward-compatibility: % diff /usr/local_cci/Python- 2.2/lib/python2.2/pickle.py . 166,168c166,173 < if issubclass(t, TypeType): < self.save_global(object) < return --- > try: > issc = issubclass(t, TypeType) > except TypeError: > pass > else: > if issc: > self.save_global(object) > return Remark: I also noticed that 2.2 cPickle still works for us (double-checked) even though the CVS logs indicate that it was also modified between 2.2c1 and 2.2. Thanks, Ralfmsg8703 - (view) Author: Guido van Rossum (gvanrossum) *
Date: 2002-01-11 05:07
Logged In: YES user_id=6380 Hm, I'm surprised that t (which was returned by type(object)) is not considered a type. Can you explain the Boost metaclass hierarchy a bit so that I can understand how this can work? It was found in the ob_type slot of the object (because that's what type() returns) so it should look a lot like a type! Then why isn't it one? IOW I think that the correct solution would be a change to Boost. But I'm open to persuasion.msg8704 - (view) Author: Ralf W. Grosse-Kunstleve (rwgk) Date: 2002-01-11 17:17
Logged In: YES
user_id=71407
> IOW I think that the correct solution would be a change to
> Boost. But I'm open to persuasion.
In principle I agree with you, but here are a few arguments
to
justify the easy fix:
- The old Boost.Python metaclass system is a dead branch.
We would prefer to concentrate our time on the ongoing
rewrite of Boost.Python which will be fully based on
the new Python 2.2 type system.
- A significant number of people are using released versions
of Boost(.Python). If the easy fix is integrated in
Python 2.2.1,
they could continue to use what they have.
- Other people might be affected by your change. The
suggested solution
will restore backward-compatibility with more people's
existing code.
- This is more a question: can you envision that the
suggested
fix has negative side-effects?
Thanks,
Ralf
msg8705 - (view)
Author: Guido van Rossum (gvanrossum) *
Date: 2002-01-11 18:39
Logged In: YES user_id=6380 Ah, I didn't realize this was the old Boost. I should have (the new one only runs on Python 2.2). I'll think about it.msg8706 - (view) Author: Ralf W. Grosse-Kunstleve (rwgk) Date: 2002-03-25 23:08
Logged In: YES
user_id=71407
python 2.2.1c1 still exhibits the problem described
in the original posting. Is this expected? Is there
still hope that the suggested fix/work-around is
considered for 2.2.1?
Thanks,
Ralf
msg8707 - (view)
Author: Tim Peters (tim.peters) *
Date: 2002-03-25 23:19
Logged In: YES user_id=31435 Boosted priority and assigned to Guido. Guido, if you want to do something here for 2.2.1, now's the time.msg8708 - (view) Author: Guido van Rossum (gvanrossum) *
Date: 2002-03-26 00:54
Logged In: YES user_id=6380 I checked in a fix on the trunk. There's nothing I can do to get this into 2.2.1c2, but Michael might be willing to put it in 2.2.1final. Otherwise it should go into 2.2.2, if we ever release one. (Sorry -- I forgot about this, and you were just a tad too late to make the 2.2.1c2 release.)msg8709 - (view) Author: Michael Hudson (mwh)
Date: 2002-03-26 12:59
Logged In: YES user_id=6656 It's in 221c2
History
Date
User
Action
Args
2022-04-10 16:04:52adminsetgithub: 35903
2011-03-16 17:48:13brett.cannonsetnosy:
mwh, gvanrossum, tim.peters, rwgk, brandon-rhodes
messages: - msg131148 2011-03-16 17:46:26brandon-rhodessetfiles: - test_copy2.patch
nosy: mwh, gvanrossum, tim.peters, rwgk, brandon-rhodes 2011-03-16 17:45:49brandon-rhodessetfiles: + test_copy2.patch
messages: - msg131148 2011-03-16 17:46:26brandon-rhodessetfiles: - test_copy2.patch
nosy: mwh, gvanrossum, tim.peters, rwgk, brandon-rhodes 2011-03-16 17:45:49brandon-rhodessetfiles: + test_copy2.patch
nosy:
+ brandon-rhodes
messages:
+ msg131148
keywords: + patch
2002-01-10 22:49:22rwgkcreate