<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _update_buffers(self, from_step, data, offset, is_last):
 """ Update the buffers of all steps that need data from ``from_step``. If ``from_step`` is None it means the data is the input data. """


        for to_step, buffer in self.target_buffers[from_step]:
            parent_index = 0

            # if there multiple inputs we have to get the correct index, to keep the ordering
            if isinstance(to_step, Reduction):
                parent_index = to_step.parents.index(from_step)

            buffer.update(data, offset, is_last, buffer_index=parent_index)