[Python-checkins] cpython (merge 3.5 -> default): Issue #27343: Fixed error message for conflicting initializers of

serhiy.storchaka python-checkins at python.org
Sat Jun 18 02:59:16 EDT 2016


https://hg.python.org/cpython/rev/40e3790c2a00
changeset: 102082:40e3790c2a00
parent: 102080:4fbcd58df1a0
parent: 102081:ed81fc7e285b
user: Serhiy Storchaka <storchaka at gmail.com>
date: Sat Jun 18 09:58:55 2016 +0300
summary:
 Issue #27343: Fixed error message for conflicting initializers of ctypes.Structure.
files:
 Lib/ctypes/test/test_structures.py | 6 +++---
 Modules/_ctypes/_ctypes.c | 9 ++-------
 2 files changed, 5 insertions(+), 10 deletions(-)
diff --git a/Lib/ctypes/test/test_structures.py b/Lib/ctypes/test/test_structures.py
--- a/Lib/ctypes/test/test_structures.py
+++ b/Lib/ctypes/test/test_structures.py
@@ -227,10 +227,10 @@
 
 def test_conflicting_initializers(self):
 class POINT(Structure):
- _fields_ = [("x", c_int), ("y", c_int)]
+ _fields_ = [("phi", c_float), ("rho", c_float)]
 # conflicting positional and keyword args
- self.assertRaises(TypeError, POINT, 2, 3, x=4)
- self.assertRaises(TypeError, POINT, 2, 3, y=4)
+ self.assertRaisesRegex(TypeError, "phi", POINT, 2, 3, phi=4)
+ self.assertRaisesRegex(TypeError, "rho", POINT, 2, 3, rho=4)
 
 # too many initializers
 self.assertRaises(TypeError, POINT, 2, 3, 4)
diff --git a/Modules/_ctypes/_ctypes.c b/Modules/_ctypes/_ctypes.c
--- a/Modules/_ctypes/_ctypes.c
+++ b/Modules/_ctypes/_ctypes.c
@@ -4065,14 +4065,9 @@
 }
 val = PyTuple_GET_ITEM(args, i + index);
 if (kwds && PyDict_GetItem(kwds, name)) {
- char *field = PyBytes_AsString(name);
- if (field == NULL) {
- PyErr_Clear();
- field = "???";
- }
 PyErr_Format(PyExc_TypeError,
- "duplicate values for field '%s'",
- field);
+ "duplicate values for field %R",
+ name);
 Py_DECREF(pair);
 Py_DECREF(name);
 return -1;
-- 
Repository URL: https://hg.python.org/cpython


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /