[New-bugs-announce] [issue22958] Constructors of weakref mapping classes don't accept "self" and "dict" keyword arguments

Serhiy Storchaka report at bugs.python.org
Thu Nov 27 17:13:23 CET 2014


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 <report at bugs.python.org>
<http://bugs.python.org/issue22958>
_______________________________________


More information about the New-bugs-announce mailing list