/usr/share/pyshared/allmydata/util/deferredutil.py is in tahoe-lafs 1.9.2-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | from twisted.internet import defer
# utility wrapper for DeferredList
def _check_deferred_list(results):
# if any of the component Deferreds failed, return the first failure such
# that an addErrback() would fire. If all were ok, return a list of the
# results (without the success/failure booleans)
for success,f in results:
if not success:
return f
return [r[1] for r in results]
def DeferredListShouldSucceed(dl):
d = defer.DeferredList(dl)
d.addCallback(_check_deferred_list)
return d
def _parseDListResult(l):
return [x[1] for x in l]
def _unwrapFirstError(f):
f.trap(defer.FirstError)
raise f.value.subFailure
def gatherResults(deferredList):
"""Returns list with result of given Deferreds.
This builds on C{DeferredList} but is useful since you don't
need to parse the result for success/failure.
@type deferredList: C{list} of L{Deferred}s
"""
d = defer.DeferredList(deferredList, fireOnOneErrback=True, consumeErrors=True)
d.addCallbacks(_parseDListResult, _unwrapFirstError)
return d
|