diff --git a/Lib/test/test_weakref.py b/Lib/test/test_weakref.py index 9821e1ba759..049dba21105 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 0276dfd117e..5e6cc8be3a0 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 8130b7f1a4a..6fa6d99a6fb 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? =============================================