[Python-Dev] Exception.__unicode__ and tp_unicode

Nick Coghlan ncoghlan at gmail.com
Wed Jun 11 11:34:35 CEST 2008


Simon Cross wrote:
> Originally Python exceptions had no __unicode__ method. In Python 2.5
> __unicode__ was added. This led to "unicode(Exception)" failing and so
> the addition of __unicode__ was reverted [1].
> 
> This leaves Python 2.6 in a position where calls to
> "unicode(Exception(u'\xe1'))" fail as they are equivalent to
> "uncode(str(Exception(u'\xe1'))" which cannot convert the non-ASCII
> character to ASCII (or other default encoding) [2].
> 
>>From here there are 3 options:
> 
>  1) Leave things as they are.
>  2) Add back __unicode__ and have "unicode(Exception)" fail.
>  3) Add a tp_unicode slot to Python objects and have everything work
> (at the cost of adding the slot).

4) Fix PyObject_Unicode to not retrieve __unicode__ from new-style 
instances, and instead only look for the method on their types (similar 
to the way PyObject_Format looks up the __format__ method).

Cheers,
Nick.

-- 
Nick Coghlan   |   ncoghlan at gmail.com   |   Brisbane, Australia
---------------------------------------------------------------
             http://www.boredomandlaziness.org


More information about the Python-Dev mailing list