summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAntoine Pitrou <solipsis@pitrou.net>2009-05-30 21:04:26 (GMT)
committerAntoine Pitrou <solipsis@pitrou.net>2009-05-30 21:04:26 (GMT)
commitc06de477a35669cac037b0bc92a28f9492d76015 (patch)
tree904ed4860201b9f345b8f2697c720fc4f5223064
parent3b1b8072f5f6b30616ac495c288537dcaac92cab (diff)
downloadcpython-c06de477a35669cac037b0bc92a28f9492d76015.zip
cpython-c06de477a35669cac037b0bc92a28f9492d76015.tar.gz
cpython-c06de477a35669cac037b0bc92a28f9492d76015.tar.bz2
Issue #6149: Fix initialization of WeakValueDictionary objects from non-empty parameters.
-rw-r--r--Lib/test/test_weakref.py11
-rw-r--r--Lib/weakref.py2
-rw-r--r--Misc/NEWS3
3 files changed, 15 insertions, 1 deletions
diff --git a/Lib/test/test_weakref.py b/Lib/test/test_weakref.py
index 9821e1b..049dba2 100644
--- a/Lib/test/test_weakref.py
+++ b/Lib/test/test_weakref.py
@@ -942,6 +942,17 @@ class MappingTestCase(TestBase):
dict[o] = o.arg
return dict, objects
+ def test_make_weak_valued_dict_from_dict(self):
+ o = Object(3)
+ dict = weakref.WeakValueDictionary({364:o})
+ self.assertEqual(dict[364], o)
+
+ def test_make_weak_valued_dict_from_weak_valued_dict(self):
+ o = Object(3)
+ dict = weakref.WeakValueDictionary({364:o})
+ dict2 = weakref.WeakValueDictionary(dict)
+ self.assertEqual(dict[364], o)
+
def make_weak_valued_dict(self):
dict = weakref.WeakValueDictionary()
objects = list(map(Object, range(self.COUNT)))
diff --git a/Lib/weakref.py b/Lib/weakref.py
index 0276dfd..5e6cc8b 100644
--- a/Lib/weakref.py
+++ b/Lib/weakref.py
@@ -49,7 +49,7 @@ class WeakValueDictionary(collections.MutableMapping):
del self.data[wr.key]
self._remove = remove
self.data = d = {}
- d.update(*args, **kw)
+ self.update(*args, **kw)
def __getitem__(self, key):
o = self.data[key]()
diff --git a/Misc/NEWS b/Misc/NEWS
index 8130b7f..6fa6d99 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -15,6 +15,9 @@ Core and Builtins
Library
-------
+- Issue #6149: Fix initialization of WeakValueDictionary objects from non-empty
+ parameters.
+
What's New in Python 3.1 release candidate 1?
=============================================