'Refill _buffer with another read from source.'

def __refillBuffer(self):

    with open(self._filename, 'r') as f:
        f.seek(self._position)
        data = f.read(self._buffer_size)
    self._eof = (len(data) < self._buffer_size)
    self._buffer = data
    self._buffer_pos = 0
