in mozregression/bisector.py [0:0]
def _download_next_builds(self, mid_point, persist_files=()):
# start downloading the next builds.
# note that we don't have to worry if builds are already
# downloaded, or if our build infos are the same because
# this will be handled by the downloadmanager.
def start_dl(r):
# first get the next mid point
# this will trigger some blocking downloads
# (we need to find the build info)
m = r.mid_point()
if len(r) != 0:
# non-blocking download of the build
if (
self.approx_chooser
and self.approx_chooser.index(r, r[m], persist_files) is not None
):
pass # nothing to download, we have an approx build
else:
self.download_manager.download_in_background(r[m])
bdata = self.build_range[mid_point]
# download next left mid point
start_dl(self.build_range[mid_point:])
# download right next mid point
start_dl(self.build_range[: mid_point + 1])
# since we called mid_point() on copy of self.build_range instance,
# the underlying cache may have changed and we need to find the new
# mid point.
self.build_range.filter_invalid_builds()
return self.build_range.index(bdata)