New submission from Steven Barker:

While investigating a Stack Overflow question 
(http://stackoverflow.com/questions/16484764/multiprocessing-value-clear-syntax)
 I came across a misleading error message from the multiprocessing.Value 
constructor:

>>> import multiprocessing
>>> my_char = "x"
>>> v = multiprocessing.Value("c", my_char)
Traceback (most recent call last):
  File "<pyshell#21>", line 1, in <module>
    v = multiprocessing.Value("c", my_char)
  File "S:\Python33\lib\multiprocessing\__init__.py", line 243, in Value
    return Value(typecode_or_type, *args, lock=lock)
  File "S:\Python33\lib\multiprocessing\sharedctypes.py", line 70, in Value
    obj = RawValue(typecode_or_type, *args)
  File "S:\Python33\lib\multiprocessing\sharedctypes.py", line 47, in RawValue
    obj.__init__(*args)
TypeError: one character string expected

The "one character string expected" message was rather unhelpful, since that 
seemed to be what I gave it. After being stumped by this for a bit, I realized 
that it might be having an issue with Unicode and giving an error message more 
appropriate to Python 2 than Python 3. Sure enough, passing a one-character 
bytes instance works just fine.

So, at a minimum I think the error message should be updated to say it wants a 
one-character bytes instance rather than a "string" (which to my mind means a 
"str" instance). A further enhancement might be to accept unicode strings that 
contain just a single ASCII character too, but I realize that may be more messy 
and error prone.

The error message comes from the ctypes module, and can be reproduced easily:

>>> ctypes.c_char("x")
Traceback (most recent call last):
  File "<pyshell#28>", line 1, in <module>
    ctypes.c_char("x")
TypeError: one character string expected

The exception text comes from Modules/_ctypes/cfield.c:1151

----------
components: Library (Lib)
messages: 189338
nosy: Steven.Barker
priority: normal
severity: normal
status: open
title: ctypes.c_char gives a misleading error when passed a one-character 
unicode string
type: enhancement
versions: Python 3.3

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue17991>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to