diff options
author | Guido van Rossum <guido@python.org> | 2002-06-10 20:00:52 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 2002-06-10 20:00:52 (GMT) |
commit | 009afb7c90882ee83e196b62b1555067e14fd950 (patch) | |
tree | cfba62798e8602a7c721f81572ad5df2f1ad9a12 /Lib | |
parent | 804cdca7ea38e197e8ac6a9a748a25dc19543079 (diff) | |
download | cpython-009afb7c90882ee83e196b62b1555067e14fd950.zip cpython-009afb7c90882ee83e196b62b1555067e14fd950.tar.gz cpython-009afb7c90882ee83e196b62b1555067e14fd950.tar.bz2 |
SF patch 564549 (Erik Andersén).
The WeakKeyDictionary constructor didn't work when a dict arg was
given. Fixed by moving a line. Also adding a unit test.
Bugfix candidate.
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/test/test_weakref.py | 11 | ||||
-rw-r--r-- | Lib/weakref.py | 2 |
2 files changed, 12 insertions, 1 deletions
diff --git a/Lib/test/test_weakref.py b/Lib/test/test_weakref.py index 9f16482..0764358 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 70d36fa..a1fa4e8 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(): |