This issue tracker has been migrated to GitHub ,
and is currently read-only.
For more information,
see the GitHub FAQs in the Python's Developer Guide.
Created on 2014年11月27日 16:13 by serhiy.storchaka, last changed 2022年04月11日 14:58 by admin. This issue is now closed.
| Files | ||||
|---|---|---|---|---|
| File name | Uploaded | Description | Edit | |
| WeakValueDictionary_pos_only_params.patch | serhiy.storchaka, 2014年12月09日 09:41 | review | ||
| Messages (4) | |||
|---|---|---|---|
| msg231767 - (view) | Author: Serhiy Storchaka (serhiy.storchaka) * (Python committer) | Date: 2014年11月27日 16:13 | |
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.
|
|||
| msg232358 - (view) | Author: Serhiy Storchaka (serhiy.storchaka) * (Python committer) | Date: 2014年12月09日 09:41 | |
Here is a patch similar to patch from issue22609 which makes WeakValueDictionary constructor and update accept keyword arguments "self" and "dict". |
|||
| msg238694 - (view) | Author: Benjamin Peterson (benjamin.peterson) * (Python committer) | Date: 2015年03月20日 15:45 | |
lgtm |
|||
| msg251885 - (view) | Author: Roundup Robot (python-dev) (Python triager) | Date: 2015年09月29日 20:54 | |
New changeset 8274fc521e69 by Serhiy Storchaka in branch '2.7': Issue #22958: Constructor and update method of weakref.WeakValueDictionary https://hg.python.org/cpython/rev/8274fc521e69 New changeset 01c79072d671 by Serhiy Storchaka in branch '3.4': Issue #22958: Constructor and update method of weakref.WeakValueDictionary https://hg.python.org/cpython/rev/01c79072d671 New changeset 73b6b88ac28a by Serhiy Storchaka in branch '3.5': Issue #22958: Constructor and update method of weakref.WeakValueDictionary https://hg.python.org/cpython/rev/73b6b88ac28a New changeset 815bb6a2d69e by Serhiy Storchaka in branch 'default': Issue #22958: Constructor and update method of weakref.WeakValueDictionary https://hg.python.org/cpython/rev/815bb6a2d69e |
|||
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2022年04月11日 14:58:10 | admin | set | github: 67147 |
| 2015年09月29日 21:00:08 | serhiy.storchaka | set | status: open -> closed resolution: fixed stage: patch review -> resolved |
| 2015年09月29日 20:54:28 | python-dev | set | nosy:
+ python-dev messages: + msg251885 |
| 2015年05月16日 16:11:09 | serhiy.storchaka | set | dependencies: + Constructors of some mapping classes don't accept `self` keyword argument |
| 2015年03月20日 15:45:45 | benjamin.peterson | set | nosy:
+ benjamin.peterson messages: + msg238694 |
| 2014年12月09日 09:41:08 | serhiy.storchaka | set | keywords:
+ needs review, patch files: + WeakValueDictionary_pos_only_params.patch messages: + msg232358 stage: patch review |
| 2014年11月27日 16:13:23 | serhiy.storchaka | create | |