docs: def pack_sources(sources, normalize=True):
      '''
      Accepts list of dicts (or a string representing a list of dicts) and packs
      the key/value pairs into a single dict.
  
      ``'[{"foo": "salt://foo.rpm"}, {"bar": "salt://bar.rpm"}]'`` would become
      ``{"foo": "salt://foo.rpm", "bar": "salt://bar.rpm"}``
  
      normalize : True
          Normalize the package name by removing the architecture, if the
          architecture of the package is different from the architecture of the
          operating system. The ability to disable this behavior is useful for
          poorly-created packages which include the architecture as an actual
          part of the name, such as kernel modules which match a specific kernel
          version.
  
          .. versionadded:: 2015.8.0
  
      CLI Example:
  
      .. code-block:: bash
  
          salt '*' pkg_resource.pack_sources '[{"foo": "salt://foo.rpm"}, {"bar": "salt://bar.rpm"}]'
      '''
      if normalize and 'pkg.normalize_name' in __salt__:
          _normalize_name = __salt__['pkg.normalize_name']
      else:
          _normalize_name = lambda pkgname: pkgname
  
      if isinstance(sources, six.string_types):
          try:
              sources = salt.utils.yaml.safe_load(sources)
          except salt.utils.yaml.parser.ParserError as err:
              log.error(err)
              return {}
      ret = {}
      for source in sources:
          if (not isinstance(source, dict)) or len(source) != 1:
              log.error('Invalid input: %s', pprint.pformat(sources))
              log.error('Input must be a list of 1-element dicts')
              return {}
          else:
              key = next(iter(source))
              ret[_normalize_name(key)] = source[key]
      return ret