remove obsolete deferred_imap util, use coiterate+imap instead

This commit is contained in:
daniel 2009-06-23 14:45:16 -07:00
parent e9c724e5b7
commit 9b78f929de
2 changed files with 0 additions and 73 deletions

View File

@ -1,37 +0,0 @@
from itertools import imap
from twisted.trial import unittest
from scrapy.utils.defer import deferred_imap
class DeferTest(unittest.TestCase):
def test_deferred_imap_1(self):
"""deferred_imap storing results"""
seq = [1, 2, 3]
output = list(imap(None, seq))
dfd = deferred_imap(None, seq)
dfd.addCallback(self.assertEqual, output)
return dfd
def test_deferred_imap_2(self):
"""deferred_imap not storing results"""
seq = [1, 2, 3]
output = list(imap(None, seq, seq))
dfd = deferred_imap(None, seq, seq)
dfd.addCallback(self.assertEqual, output)
return dfd
def test_deferred_imap_3(self):
"""deferred_imap not storing results"""
seq = [1, 2, 3]
output = []
function = lambda v: output.append(v)
dfd = deferred_imap(function, seq, store_results=False)
dfd.addCallback(self.assertEqual, [])
dfd.addCallback(lambda _: self.assertEqual(output, seq))
return dfd

View File

@ -2,7 +2,6 @@
Helper functions for dealing with Twisted deferreds
"""
from itertools import imap
from twisted.internet import defer, reactor
from twisted.python import failure
@ -38,38 +37,3 @@ def mustbe_deferred(f, *args, **kw):
def chain_deferred(d1, d2):
return d1.chainDeferred(d2).addBoth(lambda _:d2)
def deferred_imap(function, *sequences, **kwargs):
"""Analog to itertools.imap python function but friendly iterable evaluation
taking in count cooperative multitasking.
It returns a Deferred object that is fired when StopIteration is reached or
when any exception is raised when calling function.
By default the output of the evaluation is collected into a list and
returned as deferred result when iterable finished. But it can be disabled
(to save memory) using `store_results` parameter.
"""
next_delay = kwargs.pop('next_delay', 0)
store_results = kwargs.pop('store_results', True)
deferred = defer.Deferred()
container = []
iterator = imap(function, *sequences)
def _next():
try:
value = iterator.next()
if store_results:
container.append(value)
except StopIteration:
reactor.callLater(0, deferred.callback, container)
except:
reactor.callLater(0, deferred.errback, failure.Failure())
else:
reactor.callLater(next_delay, _next)
_next()
return deferred