docs: def resolve_capabilities(pkgs, refresh=False, root=None, **kwargs):
      '''
      .. versionadded:: 2018.3.0
  
      Convert name provides in ``pkgs`` into real package names if
      ``resolve_capabilities`` parameter is set to True. In case of
      ``resolve_capabilities`` is set to False the package list
      is returned unchanged.
  
      refresh
          force a refresh if set to True.
          If set to False (default) it depends on zypper if a refresh is
          executed.
  
      root
          operate on a different root directory.
  
      resolve_capabilities
          If this option is set to True the input will be checked if
          a package with this name exists. If not, this function will
          search for a package which provides this name. If one is found
          the output is exchanged with the real package name.
          In case this option is set to False (Default) the input will
          be returned unchanged.
  
      CLI Examples:
  
      .. code-block:: bash
  
          salt '*' pkg.resolve_capabilities resolve_capabilities=True w3m_ssl
      '''
      if refresh:
          refresh_db(root)
  
      ret = list()
      for pkg in pkgs:
          if isinstance(pkg, dict):
              name = next(iter(pkg))
              version = pkg[name]
          else:
              name = pkg
              version = None
  
          if kwargs.get('resolve_capabilities', False):
              try:
                  search(name, root=root, match='exact')
              except CommandExecutionError:
                  # no package this such a name found
                  # search for a package which provides this name
                  try:
                      result = search(name, root=root, provides=True, match='exact')
                      if len(result) == 1:
                          name = next(iter(result.keys()))
                      elif len(result) > 1:
                          log.warning("Found ambiguous match for capability '%s'.", pkg)
                  except CommandExecutionError as exc:
                      # when search throws an exception stay with original name and version
                      log.debug("Search failed with: %s", exc)
  
          if version:
              ret.append({name: version})
          else:
              ret.append(name)
      return ret