summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Lib/test/test_weakref.py11
-rw-r--r--Lib/weakref.py2
-rw-r--r--Misc/ACKS1
3 files changed, 13 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():
diff --git a/Misc/ACKS b/Misc/ACKS
index 0adeec3..51807a7 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