'Attempts to read and encode rows [key_start, key_end].
The encoded rows are stored in self.read_rows.
Args:
key_start: The starting line number.
key_end: The ending line number.
Raises:
StopIteration: if the reader runs out of rows
ResumeError: if there are an inconsistent number of columns.'

def _ReadRows(self, key_start, key_end):

    assert (self.line_number == key_start)
    self.read_rows = []
    while (self.line_number <= key_end):
        row = self.reader.next()
        self.row_count += 1
        if (self.column_count is None):
            self.column_count = len(row)
        self.read_rows.append((self.line_number, row))
        self.line_number += 1
