code: def get_filepath_or_buffer(filepath_or_buffer, encoding=None,
                             compression=None, mode=None):
      
      filepath_or_buffer = _stringify_path(filepath_or_buffer)
  
      if _is_url(filepath_or_buffer):
          req = urlopen(filepath_or_buffer)
          content_encoding = req.headers.get('Content-Encoding', None)
          if content_encoding == 'gzip':
              # Override compression based on Content-Encoding header
              compression = 'gzip'
          reader = BytesIO(req.read())
          req.close()
          return reader, encoding, compression, True
  
      if is_s3_url(filepath_or_buffer):
          from pandas.io import s3
          return s3.get_filepath_or_buffer(filepath_or_buffer,
                                           encoding=encoding,
                                           compression=compression,
                                           mode=mode)
  
      if is_gcs_url(filepath_or_buffer):
          from pandas.io import gcs
          return gcs.get_filepath_or_buffer(filepath_or_buffer,
                                            encoding=encoding,
                                            compression=compression,
                                            mode=mode)
  
      if isinstance(filepath_or_buffer, (str, bytes, mmap.mmap)):
          return _expand_user(filepath_or_buffer), None, compression, False
  
      if not is_file_like(filepath_or_buffer):
          msg = "Invalid file path or buffer object type: {_type}"
          raise ValueError(msg.format(_type=type(filepath_or_buffer)))
  
      return filepath_or_buffer, None, compression, False
docs: If the filepath_or_buffer is a url, translate and return the buffer.
      Otherwise passthrough.
  
      Parameters
      ----------
      filepath_or_buffer : a url, filepath (str, py.path.local or pathlib.Path),
                           or buffer
      compression : {{'gzip', 'bz2', 'zip', 'xz', None}}, optional
      encoding : the encoding to use to decode bytes, default is 'utf-8'
      mode : str, optional
  
      Returns
      -------
      tuple of ({a filepath_ or buffer or S3File instance},
                encoding, str,
                compression, str,
                should_close, bool)