diff options
-rw-r--r-- | Lib/test/test_dict.py | 11 | ||||
-rw-r--r-- | Misc/NEWS | 5 | ||||
-rw-r--r-- | Objects/dictobject.c | 2 | ||||
-rw-r--r-- | Python/getargs.c | 2 |
4 files changed, 14 insertions, 6 deletions
diff --git a/Lib/test/test_dict.py b/Lib/test/test_dict.py index 818c99e..1507e42 100644 --- a/Lib/test/test_dict.py +++ b/Lib/test/test_dict.py @@ -8,10 +8,13 @@ import gc, weakref class DictTest(unittest.TestCase): def test_invalid_keyword_arguments(self): - with self.assertRaises(TypeError): - dict(**{1 : 2}) - with self.assertRaises(TypeError): - {}.update(**{1 : 2}) + class Custom(dict): + pass + for invalid in {1 : 2}, Custom({1 : 2}): + with self.assertRaises(TypeError): + dict(**invalid) + with self.assertRaises(TypeError): + {}.update(**invalid) def test_constructor(self): # calling built-in types without argument must return empty @@ -26,6 +26,11 @@ Library - Issue #10429: IMAP.starttls() stored the capabilities as bytes objects, rather than strings. +C-API +----- + +- Loosen PyArg_ValidateKeywordArguments to allow dict subclasses. + What's New in Python 3.2 Alpha 4? ================================= diff --git a/Objects/dictobject.c b/Objects/dictobject.c index 1015772..df8d77f 100644 --- a/Objects/dictobject.c +++ b/Objects/dictobject.c @@ -454,7 +454,7 @@ _PyDict_HasOnlyStringKeys(PyObject *dict) { Py_ssize_t pos = 0; PyObject *key, *value; - assert(PyDict_CheckExact(dict)); + assert(PyDict_Check(dict)); /* Shortcut */ if (((PyDictObject *)dict)->ma_lookup == lookdict_unicode) return 1; diff --git a/Python/getargs.c b/Python/getargs.c index abf55ce..cf98699 100644 --- a/Python/getargs.c +++ b/Python/getargs.c @@ -1394,7 +1394,7 @@ _PyArg_VaParseTupleAndKeywords_SizeT(PyObject *args, int PyArg_ValidateKeywordArguments(PyObject *kwargs) { - if (!PyDict_CheckExact(kwargs)) { + if (!PyDict_Check(kwargs)) { PyErr_BadInternalCall(); return 0; } |