docs: 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)