'read up to \'size\' bytes from the file
Default is -1, which means to read to end of file.'

def read(self, size=(-1)):

    x = self._read(size)
    if (self.at_beginning and x):
        self.at_beginning = 0
    self._check_no_buffer()
    return x
