parameters: (self, size=-1)
return_statement: return self._file.read(size)
docstring: Read up to size bytes from the object and return them.
  
          As a convenience, if size is unspecified or -1,
          all bytes until EOF are returned.  Fewer than
          size bytes may be returned if EOF is reached.
docstring_summary: Read up to size bytes from the object and return them.
docstring_tokens: Read up to size bytes from the object and return them .
function: def read(self, size=-1):
          # type: (int) -> bytes
          """Read up to size bytes from the object and return them.
  
          As a convenience, if size is unspecified or -1,
          all bytes until EOF are returned.  Fewer than
          size bytes may be returned if EOF is reached.
          """
          download_size = max(size, self._chunk_size)
          start, length = self.tell(), self._length
          stop = length if size < 0 else min(start+download_size, length)
          start = max(0, stop-download_size)
          self._download(start, stop-1)
          return self._file.read(size)
function_tokens: def read ( self , size = - 1 ) : # type: (int) -> bytes download_size = max ( size , self . _chunk_size ) start , length = self . tell ( ) , self . _length stop = length if size < 0 else min ( start + download_size , length ) start = max ( 0 , stop - download_size ) self . _download ( start , stop - 1 ) return self . _file . read ( size )