So I'm just saying that pickle.py in wrong in just one place:
reduce = getattr(obj, "__reduce__", None) if reduce: rv = reduce()
reduce = getattr(type(obj), "__reduce__", None) if reduce: rv = reduce(obj)
Right. (That's what I was trying to say, too. :-)
An almost trivial change, although I also had to change copy.py, and overall I was unhappy since this extends my patch set to more than replacing python2x.dll, but I hope this will become an official patch and back-patch.
Give it to me baby. (On SF. :-)
So here the bad news: After changing the C code to use the new style, and also changing all occourances in Python code, I used this on Zope, and ExtensionClass did not play well, it cannot stand this protocol unchanged. Zope won't start.
Therefore, I reverted my changes and now I'm waiting for the day where ExtensionClass is no loger used. (or should I patch *that* complicated stuff as well?)
No, just wait until it dies. I think Jim wants it to die to; the latest Zope version requires Python 2.3.2 but it will take time to retire it, and old Zope versions are persistent.
--Guido van Rossum (home page: http://www.python.org/%7Eguido/)