code: def readline(self, size=None):
          
          if self._pos >= self.length:
              return ''
          if size:
              amount = min(size, (self.length - self._pos))
          else:
              amount = self.length - self._pos
          out = self.stream.readline(amount)
          self._pos += len(out)
          return out
docs: Read a line from the stream, including the trailing
          new line character. If `size` is set, don't read more
          than `size` bytes, even if the result does not represent
          a complete line.
  
          The last line read may not include a trailing new line
          character if one was not present in the underlying stream.