TypeError: __name__ must be set to a string object

Frank Millman frank at chagford.com
Fri Jan 15 03:06:36 EST 2010


"Frank Millman" <frank at chagford.com> wrote in message 
news:hieoq6$4i8$1 at ger.gmane.org...
> Hi all
>
> This problem is similar to one I posted recently regarding the 
> multiprocessing module and unicode.
>
> However, although this one manifests itself while using the 
> multiprocessing module, is caused by Python itself (2.6.2).
>
> At the top of my program I have 'from __future__ import unicode_literals'.
>
> The relevant lines from my program read -
>    from multiprocessing.managers import BaseManager
>    class MyManager(BaseManager): pass
>    MyManager.register('my_function', my_function)
>
> Inside the multiprocessing module, the following lines are executed -
>    @classmethod
>    def register(cls, typeid, ...)
>        [...]
>        def temp(...):
>            [...]
>        temp.__name__ = typeid
>
> At this point, Python raises the exception 'TypeError: __name__ must be 
> set to a string object'.
>
> I can fix it by changing my last line to -
>    MyManager.register(str('my_function'), my_function)
>
> Is there any reason why __name__ cannot be a unicode object in Python 2.x? 
> If so, there is probably little chance of this being changed, so it is 
> probably not worth reporting.
>

For the record, I filed a report on January 13th - 
<http://bugs.python.org/issue7688>

Frank






More information about the Python-list mailing list