summaryrefslogtreecommitdiffstats
path: root/Lib/weakref.py
diff options
context:
space:
mode:
authorFred Drake <fdrake@acm.org>2001-04-16 17:34:48 (GMT)
committerFred Drake <fdrake@acm.org>2001-04-16 17:34:48 (GMT)
commit1d9e4b7de3d15007d5b9e7ac4b38f5e158d3c840 (patch)
treecbfbd05e3dc6974c0c598adff4b8bf400882ad2a /Lib/weakref.py
parent67addfe2a87d22458323e268d2bcc7406e6febc2 (diff)
downloadcpython-1d9e4b7de3d15007d5b9e7ac4b38f5e158d3c840.zip
cpython-1d9e4b7de3d15007d5b9e7ac4b38f5e158d3c840.tar.gz
cpython-1d9e4b7de3d15007d5b9e7ac4b38f5e158d3c840.tar.bz2
Weak*Dictionary.update(): Fix calls to [].append() to only have one
parameter. Weak*Dictionary.get(): Make the second parameter optional. WeakKeyDictionary.has_key(), .keys(): Make these actually work!
Diffstat (limited to 'Lib/weakref.py')
-rw-r--r--Lib/weakref.py19
1 files changed, 15 insertions, 4 deletions
diff --git a/Lib/weakref.py b/Lib/weakref.py
index 6945757..b6b4528 100644
--- a/Lib/weakref.py
+++ b/Lib/weakref.py
@@ -54,7 +54,7 @@ class WeakValueDictionary(UserDict.UserDict):
new[key] = o
return new
- def get(self, key, default):
+ def get(self, key, default=None):
try:
ref = self.data[key]
except KeyError:
@@ -100,7 +100,7 @@ class WeakValueDictionary(UserDict.UserDict):
for key, o in dict.items():
def remove(o, data=d, key=key):
del data[key]
- L.append(key, ref(o, remove))
+ L.append((key, ref(o, remove)))
for key, r in L:
d[key] = r
@@ -139,9 +139,12 @@ class WeakKeyDictionary(UserDict.UserDict):
new[o] = value
return new
- def get(self, key, default):
+ def get(self, key, default=None):
return self.data.get(ref(key),default)
+ def has_key(self, key):
+ return self.data.has_key(ref(key))
+
def items(self):
L = []
for key, value in self.data.items():
@@ -150,6 +153,14 @@ class WeakKeyDictionary(UserDict.UserDict):
L.append((o, value))
return L
+ def keys(self):
+ L = []
+ for ref in self.data.keys():
+ o = ref()
+ if o is not None:
+ L.append(o)
+ return L
+
def popitem(self):
while 1:
key, value = self.data.popitem()
@@ -164,7 +175,7 @@ class WeakKeyDictionary(UserDict.UserDict):
d = self.data
L = []
for key, value in dict.items():
- L.append(ref(key, self._remove), value)
+ L.append((ref(key, self._remove), value))
for key, r in L:
d[key] = r