[issue17991] ctypes.c_char gives a misleading error when passed a one-character unicode string

2015-07-29 Thread Steven Barker

Steven Barker added the comment:

I was looking over some of the bugs I've contributed to, and it looks like this 
one has been fixed. It should be marked as a dupe of issue 22161 and closed (I 
can close, but not set a superseder, it seems).

--
resolution:  - duplicate
status: open - closed

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue17991
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue17991] ctypes.c_char gives a misleading error when passed a one-character unicode string

2015-07-29 Thread STINNER Victor

Changes by STINNER Victor victor.stin...@gmail.com:


--
superseder:  - Remove unsupported code from ctypes

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue17991
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue17991] ctypes.c_char gives a misleading error when passed a one-character unicode string

2013-06-04 Thread STINNER Victor

Changes by STINNER Victor victor.stin...@gmail.com:


--
nosy: +haypo

___
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



[issue17991] ctypes.c_char gives a misleading error when passed a one-character unicode string

2013-06-02 Thread Shriramana Sharma

Shriramana Sharma added the comment:

I came upon this too. In Python 2 it used to expect a one character string. 
Apparently the same error message has been carried forward to Python 3 too, 
though now the actual expected input is either a one character bytes type and 
not a str type, or an int corresponding to the ord() value of that char.

Minimal demonstration:

$ python
Python 2.7.4 (default, Apr 19 2013, 18:28:01) 
[GCC 4.7.3] on linux2
Type help, copyright, credits or license for more information.
 from ctypes import *
 class test ( Structure ) :
... _fields_ = [ ( ch, c_char ) ]
... 
 a = test()
 a.ch = ord('a')
Traceback (most recent call last):
  File stdin, line 1, in module
TypeError: one character string expected
 a.ch = 'c'
 a.ch
'c'
 

$ python3
Python 3.3.1 (default, Apr 17 2013, 22:30:32) 
[GCC 4.7.3] on linux
Type help, copyright, credits or license for more information.
 from ctypes import *
 class test ( Structure ) :
... _fields_ = [ ( ch, c_char ) ]
... 
 a = test()
 a.ch = 'c'
Traceback (most recent call last):
  File stdin, line 1, in module
TypeError: one character string expected
 a.ch = b'c'
 a.ch
b'c'
 a.ch = ord('c')
 a.ch
b'c'


--
nosy: +jamadagni

___
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



[issue17991] ctypes.c_char gives a misleading error when passed a one-character unicode string

2013-05-17 Thread Terry J. Reedy

Changes by Terry J. Reedy tjre...@udel.edu:


--
nosy: +amaury.forgeotdarc, meador.inge

___
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



[issue17991] ctypes.c_char gives a misleading error when passed a one-character unicode string

2013-05-15 Thread Steven Barker

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



[issue17991] ctypes.c_char gives a misleading error when passed a one-character unicode string

2013-05-15 Thread Steven Barker

Changes by Steven Barker blckkn...@gmail.com:


--
components: +ctypes -Library (Lib)

___
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