classification
Title: TypeError: __name__ must be set to a string object
Type: behavior Stage: needs patch
Components: Library (Lib) Versions: Python 3.1, Python 3.2, Python 2.7
process
Status: closed Resolution: out of date
Dependencies: Superseder:
Assigned To: jnoller Nosy List: frankmillman, georg.brandl, jnoller
Priority: normal Keywords:

Created on 2010-01-13 07:46 by frankmillman, last changed 2010-08-02 20:42 by georg.brandl. This issue is now closed.

Messages (2)
msg97697 - (view) Author: Frank Millman (frankmillman) Date: 2010-01-13 07:46
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)

In multiprocessing.managers.py, the following lines are executed -

605 @classmethod
606 def register(cls, typeid, ...)
        [...]
632     def temp(...):
            [...]
642     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 it possible to allow __name__ to be a unicode object?

If not, may I suggest that line 642 of managers.py is changed to -
        temp.__name__ = str(typeid)

Frank Millman
msg112539 - (view) Author: Georg Brandl (georg.brandl) * (Python committer) Date: 2010-08-02 20:42
Out of date for Python 2.x, and strings are always unicode objects in 3.x.
History
Date User Action Args
2010-08-02 20:42:34georg.brandlsetstatus: open -> closed

nosy: + georg.brandl
messages: + msg112539

resolution: out of date
2010-07-11 11:52:48BreamoreBoysetversions: + Python 3.1, Python 3.2, - Python 2.6
2010-01-13 08:19:43pitrousetnosy: + jnoller
versions: + Python 2.7
priority: normal
assignee: jnoller
type: crash -> behavior
stage: needs patch
2010-01-13 07:46:58frankmillmancreate