[Python-Dev] 2.5 status
M.-A. Lemburg
mal at egenix.com
Tue Sep 5 21:33:54 CEST 2006
Brett Cannon wrote:
> On 9/4/06, Neal Norwitz <nnorwitz at gmail.com> wrote:
>>
>> There are 3 bugs currently listed in PEP 356 as blocking:
>> http://python.org/sf/1551432 - __unicode__ breaks on exception
>> classes
>
>
> I replied on the bug report, but might as well comment here.
>
> The problem with this bug is that BaseException now defines a __unicode__()
> method in its PyMethodDef. That intercepts the unicode() call on the class
> and it complains it was not handed an instance. I guess the only way to
> fix this is to toss out the __unicode__() method and change the tp_str function
> to return Unicode as needed (unless someone else has a better idea). Or
> the bug can be closed as Won't Fix.
The proper fix would be to introduce a tp_unicode slot and let
this decide what to do, ie. call .__unicode__() methods on instances
and use the .__name__ on classes.
I think this would be the right way to go for Python 2.6. For
Python 2.5, just dropping this .__unicode__ method on exceptions
is probably the right thing to do.
The reason why the PyObject_Unicode() function tries to be smart
here is that we don't have a tp_unicode slot (to complement
tp_str). It's obvious that this is not perfect, but only a
work-around.
--
Marc-Andre Lemburg
eGenix.com
Professional Python Services directly from the Source (#1, Sep 05 2006)
>>> Python/Zope Consulting and Support ... http://www.egenix.com/
>>> mxODBC.Zope.Database.Adapter ... http://zope.egenix.com/
>>> mxODBC, mxDateTime, mxTextTools ... http://python.egenix.com/
________________________________________________________________________
::: Try mxODBC.Zope.DA for Windows,Linux,Solaris,FreeBSD for free ! ::::
More information about the Python-Dev
mailing list