New submission from Serhiy Storchaka: Dict-like types in the weakref module (WeakValueDictionary and WeakKeyDictionary) don't allow to specify key-value pair as keyword arguments if key is "self" or "dict".
>>> import weakref >>> class A: pass ... >>> a = A() >>> d = weakref.WeakValueDictionary(spam=a) >>> list(d.items()) [('spam', <__main__.A object at 0xb6f3f88c>)] >>> weakref.WeakValueDictionary(self=a) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: __init__() got multiple values for argument 'self' >>> weakref.WeakValueDictionary(dict=a) Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/home/serhiy/py/cpython/Lib/weakref.py", line 114, in __init__ self.update(*args, **kw) File "/home/serhiy/py/cpython/Lib/weakref.py", line 261, in update dict = type({})(dict) TypeError: 'A' object is not iterable >>> d = weakref.WeakValueDictionary() >>> d.update(spam=a) >>> list(d.items()) [('spam', <__main__.A object at 0xb6f3f88c>)] >>> d.update(self=a) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: update() got multiple values for argument 'self' >>> d.update(dict=a) Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/home/serhiy/py/cpython/Lib/weakref.py", line 261, in update dict = type({})(dict) TypeError: 'A' object is not iterable Related issue for the collections module is issue22609. I think weakref mapping classes should be fixed in the same manner. ---------- components: Library (Lib) messages: 231767 nosy: fdrake, pitrou, rhettinger, serhiy.storchaka priority: normal severity: normal status: open title: Constructors of weakref mapping classes don't accept "self" and "dict" keyword arguments type: behavior versions: Python 2.7, Python 3.4, Python 3.5 _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue22958> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com