docs: def hex_to_name(hex_value, spec=u'css3'):
      """
      Convert a hexadecimal color value to its corresponding normalized
      color name, if any such name exists.
  
      The optional keyword argument ``spec`` determines which
      specification's list of color names will be used; valid values are
      ``html4``, ``css2``, ``css21`` and ``css3``, and the default is
      ``css3``.
  
      When no color name for the value is found in the given
      specification, ``ValueError`` is raised.
  
      """
      if spec not in SUPPORTED_SPECIFICATIONS:
          raise ValueError(SPECIFICATION_ERROR_TEMPLATE.format(spec=spec))
      normalized = normalize_hex(hex_value)
      name = {u'css2': CSS2_HEX_TO_NAMES,
              u'css21': CSS21_HEX_TO_NAMES,
              u'css3': CSS3_HEX_TO_NAMES,
              u'html4': HTML4_HEX_TO_NAMES}[spec].get(normalized)
      if name is None:
          raise ValueError(
              u"'{}' has no defined color name in {}".format(hex_value, spec)
          )
      return name