- protocol, request = urllib.splittype(href)
- user, password, port = None, None, None
- host, path = urllib.splithost(request)
- if host:
- user, host = urllib.splituser(host)
- if user:
- user, password = urllib.splitpasswd(user)
- host, port = urllib.splitport(host)
- if port: port = int(port)
-
- if protocol == 'place':
- href = protocol + ":"
- else:
- href = protocol + "://"
- if user:
- href += urllib.quote(user)
- if password:
- href += ':' + urllib.quote(password)
- href += '@'
- if host:
- href += host.decode(parser_charset or 'utf-8').encode('idna')
- if port:
- href += ':%d' % port
- if path:
- href += path
-