code: def _ipv6_host(host, scheme):
      
  
      # httplib doesn't like it when we include brackets in IPv6 addresses
      # Specifically, if we include brackets but also pass the port then
      # httplib crazily doubles up the square brackets on the Host header.
      # Instead, we need to make sure we never pass ``None`` as the port.
      # However, for backward compatibility reasons we can't actually
      # *assert* that.  See http://bugs.python.org/issue28539
      #
      # Also if an IPv6 address literal has a zone identifier, the
      # percent sign might be URIencoded, convert it back into ASCII
      if host.startswith('[') and host.endswith(']'):
          host = host.replace('%25', '%').strip('[]')
      if scheme in NORMALIZABLE_SCHEMES:
          host = host.lower()
      return host
docs: Process IPv6 address literals