code: def ls(self, files, silent=True, exclude_deleted=False):
          
          try:
              cmd = ['fstat']
              if exclude_deleted:
                  cmd += ['-F', '^headAction=delete ^headAction=move/delete']
  
              cmd += files
  
              results = self.run(cmd)
          except errors.CommandError as err:
              if silent:
                  results = []
              elif "is not under client's root" in str(err):
                  raise errors.RevisionError(err.args[0])
              else:
                  raise
  
          return [Revision(r, self) for r in results if r.get('code') != 'error']
docs: List files
  
          :param files: Perforce file spec
          :type files: list
          :param silent: Will not raise error for invalid files or files not under the client
          :type silent: bool
          :param exclude_deleted: Exclude deleted files from the query
          :type exclude_deleted: bool
          :raises: :class:`.errors.RevisionError`
          :returns: list<:class:`.Revision`>