[Python-checkins] r60004 - in python/trunk: Lib/ctypes/test/test_structures.py Misc/NEWS Modules/_ctypes/_ctypes.c
thomas.heller
python-checkins at python.org
Wed Jan 16 20:45:51 CET 2008
Author: thomas.heller
Date: Wed Jan 16 20:45:51 2008
New Revision: 60004
Modified:
python/trunk/Lib/ctypes/test/test_structures.py
python/trunk/Misc/NEWS
python/trunk/Modules/_ctypes/_ctypes.c
Log:
Raise a TypeError instead of a ValueError when too many initializers
are used in a Structure or Union constructor.
Modified: python/trunk/Lib/ctypes/test/test_structures.py
==============================================================================
--- python/trunk/Lib/ctypes/test/test_structures.py (original)
+++ python/trunk/Lib/ctypes/test/test_structures.py Wed Jan 16 20:45:51 2008
@@ -222,8 +222,8 @@
self.assertRaises(TypeError, POINT, 2, 3, x=4)
self.assertRaises(TypeError, POINT, 2, 3, y=4)
- # Should this raise TypeError instead?
- self.assertRaises(ValueError, POINT, 2, 3, 4)
+ # too many initializers
+ self.assertRaises(TypeError, POINT, 2, 3, 4)
def test_keyword_initializers(self):
class POINT(Structure):
@@ -320,9 +320,9 @@
self.failUnlessEqual(cls, RuntimeError)
if issubclass(Exception, object):
self.failUnlessEqual(msg,
- "(Phone) <type 'exceptions.ValueError'>: too many initializers")
+ "(Phone) <type 'exceptions.TypeError'>: too many initializers")
else:
- self.failUnlessEqual(msg, "(Phone) exceptions.ValueError: too many initializers")
+ self.failUnlessEqual(msg, "(Phone) exceptions.TypeError: too many initializers")
def get_except(self, func, *args):
Modified: python/trunk/Misc/NEWS
==============================================================================
--- python/trunk/Misc/NEWS (original)
+++ python/trunk/Misc/NEWS Wed Jan 16 20:45:51 2008
@@ -366,6 +366,8 @@
- Issue #1831: ctypes now raises a TypeError if conflicting positional
and named arguments are passed to a Structure or Union initializer.
+ When too many positional arguments are passed, also a TypeError is
+ raised instead of a ValueError.
- Convert the internal ctypes array type cache to a WeakValueDict so
that array types do not live longer than needed.
Modified: python/trunk/Modules/_ctypes/_ctypes.c
==============================================================================
--- python/trunk/Modules/_ctypes/_ctypes.c (original)
+++ python/trunk/Modules/_ctypes/_ctypes.c Wed Jan 16 20:45:51 2008
@@ -3557,7 +3557,7 @@
if (PyTuple_GET_SIZE(args) > PySequence_Length(fields)) {
Py_DECREF(fields);
- PyErr_SetString(PyExc_ValueError,
+ PyErr_SetString(PyExc_TypeError,
"too many initializers");
return -1;
}
More information about the Python-checkins
mailing list