(original) (raw)
changeset: 101253:ef55fa8c4b82 parent: 101249:3ceb54a49387 parent: 101251:ee17a83feabc user: Serhiy Storchaka storchaka@gmail.com date: Sat May 07 15:43:59 2016 +0300 files: Misc/NEWS Objects/weakrefobject.c description: Issue #17765: weakref.ref() no longer silently ignores keyword arguments. Patch by Georg Brandl. diff -r 3ceb54a49387 -r ef55fa8c4b82 Lib/test/test_weakref.py --- a/Lib/test/test_weakref.py Sat May 07 10:49:58 2016 +0300 +++ b/Lib/test/test_weakref.py Sat May 07 15:43:59 2016 +0300 @@ -133,6 +133,10 @@ ref1 = weakref.ref(c, callback) del c + def test_constructor_kwargs(self): + c = C() + self.assertRaises(TypeError, weakref.ref, c, callback=None) + def test_proxy_ref(self): o = C() o.bar = 1 diff -r 3ceb54a49387 -r ef55fa8c4b82 Misc/NEWS --- a/Misc/NEWS Sat May 07 10:49:58 2016 +0300 +++ b/Misc/NEWS Sat May 07 15:43:59 2016 +0300 @@ -265,6 +265,9 @@ Library ------- +- Issue #17765: weakref.ref() no longer silently ignores keyword arguments. + Patch by Georg Brandl. + - Issue #26873: xmlrpc now raises ResponseError on unsupported type tags instead of silently return incorrect result. diff -r 3ceb54a49387 -r ef55fa8c4b82 Objects/weakrefobject.c --- a/Objects/weakrefobject.c Sat May 07 10:49:58 2016 +0300 +++ b/Objects/weakrefobject.c Sat May 07 15:43:59 2016 +0300 @@ -268,7 +268,6 @@ parse_weakref_init_args(const char *funcname, PyObject *args, PyObject *kwargs, PyObject **obp, PyObject **callbackp) { - /* XXX Should check that kwargs == NULL or is empty. */ return PyArg_UnpackTuple(args, funcname, 1, 2, obp, callbackp); } @@ -331,6 +330,9 @@ { PyObject *tmp; + if (!_PyArg_NoKeywords("ref()", kwargs)) + return -1; + if (parse_weakref_init_args("__init__", args, kwargs, &tmp, &tmp)) return 0; else /storchaka@gmail.com