Issue502085
This issue tracker has been migrated to GitHub,
and is currently read-only.
For more information,
see the GitHub FAQs in the Python's Developer Guide.
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 | |
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, Ralf |
|||
msg8703 - (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:52 | admin | set | github: 35903 |
2011-03-16 17:48:13 | brett.cannon | set | nosy:
mwh, gvanrossum, tim.peters, rwgk, brandon-rhodes messages: - msg131148 |
2011-03-16 17:46:26 | brandon-rhodes | set | files:
- test_copy2.patch nosy: mwh, gvanrossum, tim.peters, rwgk, brandon-rhodes |
2011-03-16 17:45:49 | brandon-rhodes | set | files:
+ test_copy2.patch nosy: + brandon-rhodes messages: + msg131148 keywords: + patch |
2002-01-10 22:49:22 | rwgk | create |