'Advance pipeline stage. Throws Empty if no data to consume.'

def step(self, name, **kwargs):

    logging.debug('Stepping    %s', name)
    task = self.tasks[name]
    if (name in self.input_tasks):
        return task(**kwargs)
    else:
        queue = self.queues.get(name, [])
        if (not queue):
            raise Empty(name)
        return task(*queue.pop(0), **kwargs)
    logging.debug('Stepped    %s', name)
