parameters: (self, length=-1)
return_statement: return super().read(length)
docstring: Read bytes from file
  
          Parameters
          ----------
          length: int
              Read up to this many bytes. If negative, read all content to end of
              file. If the server has not supplied the filesize, attempting to
              read only part of the data will raise a ValueError.
docstring_summary: Read bytes from file
docstring_tokens: Read bytes from file
function: def read(self, length=-1):
          """Read bytes from file
  
          Parameters
          ----------
          length: int
              Read up to this many bytes. If negative, read all content to end of
              file. If the server has not supplied the filesize, attempting to
              read only part of the data will raise a ValueError.
          """
          if (
              (length < 0 and self.loc == 0)
              or (length > (self.size or length))  # explicit read all
              or (  # read more than there is
                  self.size and self.size < self.blocksize
              )  # all fits in one block anyway
          ):
              self._fetch_all()
          if self.size is None:
              if length < 0:
                  self._fetch_all()
          else:
              length = min(self.size - self.loc, length)
          return super().read(length)
function_tokens: def read ( self , length = - 1 ) : if ( ( length < 0 and self . loc == 0 ) or ( length > ( self . size or length ) ) # explicit read all or ( # read more than there is self . size and self . size < self . blocksize ) # all fits in one block anyway ) : self . _fetch_all ( ) if self . size is None : if length < 0 : self . _fetch_all ( ) else : length = min ( self . size - self . loc , length ) return super ( ) . read ( length )