code: def file_list(flist):
      
      # open a cache file and return list of paths
      if (isinstance(flist, string_types) and
              flist.endswith(('.cache', '.lcf', '.ffl'))):
          from .cache import read_cache
          return read_cache(flist)
  
      # separate comma-separate list of names
      if isinstance(flist, string_types):
          return flist.split(',')
  
      # parse list of entries (of some format)
      if isinstance(flist, (list, tuple)):
          return list(map(file_path, flist))
  
      # otherwise parse a single entry
      try:
          return [file_path(flist)]
      except ValueError as exc:
          exc.args = (
              "Could not parse input {!r} as one or more "
              "file-like objects".format(flist),
          )
          raise
docs: Parse a number of possible input types into a list of filepaths.
  
      Parameters
      ----------
      flist : `file-like` or `list-like` iterable
          the input data container, normally just a single file path, or a list
          of paths, but can generally be any of the following
  
          - `str` representing a single file path (or comma-separated collection)
          - open `file` or `~gzip.GzipFile` object
          - :class:`~lal.utils.CacheEntry`
          - `str` with ``.cache`` or ``.lcf`` extension
          - simple `list` or `tuple` of `str` paths
  
      Returns
      -------
      files : `list`
          `list` of `str` file paths
  
      Raises
      ------
      ValueError
          if the input `flist` cannot be interpreted as any of the above inputs