Skip to content

Commit 1d9e4b7

Browse files
committed
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!
1 parent 67addfe commit 1d9e4b7

1 file changed

Lines changed: 15 additions & 4 deletions

File tree

Lib/weakref.py

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ def copy(self):
5454
new[key] = o
5555
return new
5656

57-
def get(self, key, default):
57+
def get(self, key, default=None):
5858
try:
5959
ref = self.data[key]
6060
except KeyError:
@@ -100,7 +100,7 @@ def update(self, dict):
100100
for key, o in dict.items():
101101
def remove(o, data=d, key=key):
102102
del data[key]
103-
L.append(key, ref(o, remove))
103+
L.append((key, ref(o, remove)))
104104
for key, r in L:
105105
d[key] = r
106106

@@ -139,9 +139,12 @@ def copy(self):
139139
new[o] = value
140140
return new
141141

142-
def get(self, key, default):
142+
def get(self, key, default=None):
143143
return self.data.get(ref(key),default)
144144

145+
def has_key(self, key):
146+
return self.data.has_key(ref(key))
147+
145148
def items(self):
146149
L = []
147150
for key, value in self.data.items():
@@ -150,6 +153,14 @@ def items(self):
150153
L.append((o, value))
151154
return L
152155

156+
def keys(self):
157+
L = []
158+
for ref in self.data.keys():
159+
o = ref()
160+
if o is not None:
161+
L.append(o)
162+
return L
163+
153164
def popitem(self):
154165
while 1:
155166
key, value = self.data.popitem()
@@ -164,7 +175,7 @@ def update(self, dict):
164175
d = self.data
165176
L = []
166177
for key, value in dict.items():
167-
L.append(ref(key, self._remove), value)
178+
L.append((ref(key, self._remove), value))
168179
for key, r in L:
169180
d[key] = r
170181

0 commit comments

Comments
 (0)