diff --git a/Lib/test/test_weakref.py b/Lib/test/test_weakref.py index 9f164821e58..076435841d9 100644 --- a/Lib/test/test_weakref.py +++ b/Lib/test/test_weakref.py @@ -391,6 +391,17 @@ class MappingTestCase(TestBase): values.remove(v) self.assert_(len(values) == 0, "itervalues() did not touch all values") + def test_make_weak_keyed_dict_from_dict(self): + o = Object(3) + dict = weakref.WeakKeyDictionary({o:364}) + self.assert_(dict[o] == 364) + + def test_make_weak_keyed_dict_from_weak_keyed_dict(self): + o = Object(3) + dict = weakref.WeakKeyDictionary({o:364}) + dict2 = weakref.WeakKeyDictionary(dict) + self.assert_(dict[o] == 364) + def make_weak_keyed_dict(self): dict = weakref.WeakKeyDictionary() objects = map(Object, range(self.COUNT)) diff --git a/Lib/weakref.py b/Lib/weakref.py index 70d36fa3b98..a1fa4e82de4 100644 --- a/Lib/weakref.py +++ b/Lib/weakref.py @@ -144,12 +144,12 @@ class WeakKeyDictionary(UserDict.UserDict): def __init__(self, dict=None): self.data = {} - if dict is not None: self.update(dict) def remove(k, selfref=ref(self)): self = selfref() if self is not None: del self.data[k] self._remove = remove + if dict is not None: self.update(dict) def __delitem__(self, key): for ref in self.data.iterkeys(): diff --git a/Misc/ACKS b/Misc/ACKS index 0adeec30c08..51807a7c5d0 100644 --- a/Misc/ACKS +++ b/Misc/ACKS @@ -16,6 +16,7 @@ Jyrki Alakuijala Billy G. Allie Mark Anacker Anders Andersen +Erik Andersén Oliver Andrich Ross Andrus Jason Asbahr