Skip to content

Commit cc0def1

Browse files
committed
Convert weak iterators to generator form.
1 parent bf9ac4b commit cc0def1

File tree

1 file changed

+23
-51
lines changed

1 file changed

+23
-51
lines changed

Lib/weakref.py

Lines changed: 23 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -277,54 +277,26 @@ def update(self, dict=None, **kwargs):
277277
self.update(kwargs)
278278

279279

280-
class BaseIter:
281-
def __iter__(self):
282-
return self
283-
284-
285-
class WeakKeyedKeyIterator(BaseIter):
286-
def __init__(self, weakdict):
287-
self._next = weakdict.data.iterkeys().next
288-
289-
def next(self):
290-
while 1:
291-
wr = self._next()
292-
obj = wr()
293-
if obj is not None:
294-
return obj
295-
296-
297-
class WeakKeyedItemIterator(BaseIter):
298-
def __init__(self, weakdict):
299-
self._next = weakdict.data.iteritems().next
300-
301-
def next(self):
302-
while 1:
303-
wr, value = self._next()
304-
key = wr()
305-
if key is not None:
306-
return key, value
307-
308-
309-
class WeakValuedValueIterator(BaseIter):
310-
def __init__(self, weakdict):
311-
self._next = weakdict.data.itervalues().next
312-
313-
def next(self):
314-
while 1:
315-
wr = self._next()
316-
obj = wr()
317-
if obj is not None:
318-
return obj
319-
320-
321-
class WeakValuedItemIterator(BaseIter):
322-
def __init__(self, weakdict):
323-
self._next = weakdict.data.itervalues().next
324-
325-
def next(self):
326-
while 1:
327-
wr = self._next()
328-
value = wr()
329-
if value is not None:
330-
return wr.key, value
280+
def WeakKeyedKeyIterator(weakdict):
281+
for wr in weakdict.data.iterkeys():
282+
obj = wr()
283+
if obj is not None:
284+
yield obj
285+
286+
def WeakKeyedItemIterator(weakdict):
287+
for wr, value in weakdict.data.iteritems():
288+
key = wr()
289+
if key is not None:
290+
yield key, value
291+
292+
def WeakValuedValueIterator(weakdict):
293+
for wr in weakdict.data.itervalues():
294+
obj = wr()
295+
if obj is not None:
296+
yield obj
297+
298+
def WeakValuedItemIterator(weakdict):
299+
for wr in weakdict.data.itervalues():
300+
value = wr()
301+
if value is not None:
302+
yield wr.key, value

0 commit comments

Comments
 (0)