def deliveries_todo(sa, blockrun, runs):
    todo = (dask.delayed(provide_deliveries)(sa, blockHeight, run, blockrun[((blockrun.run == run.name) & (blockrun.blockHeight == blockHeight))]) for (run_ix, run) in runs.iterrows() for heights in [blockrun[(blockrun.run == run_ix)].blockHeight.unique()] for _ in [log.info('run %s %-3d blocks %.16s %s', run_ix, len(heights), pd.to_datetime(run.time, unit='s'), run['name'])] for blockHeight in heights)
    log.info('todo: %s', type(todo))
    df = dd.from_delayed(todo, meta=no_deliveries.assign(file_id=1, chain=1, blockHeight=1, run=1))
    return df.compute()
def deliveries_todo(sa, blockrun, runs):
    todo = (dask.delayed(provide_deliveries)(sa, blockHeight, run, blockrun[((blockrun.run == run.name) & (blockrun.blockHeight == blockHeight))]) for (run_ix, run) in runs.iterrows() for heights in [blockrun[(blockrun.run == run_ix)].blockHeight.unique()] for _ in [log.info('run %s %-3d blocks %.16s %s', run_ix, len(heights), pd.to_datetime(run.time, unit='s'), run['name'])] for blockHeight in heights)
    log.info('todo: %s', type(todo))
    df = dd.from_delayed(todo, meta=no_deliveries.assign(file_id=1, chain=1, blockHeight=1, run=1))
    return df.compute()