# HG changeset patch # User Gregory Szorc # Date 1490160857 25200 # Node ID e68932dfbb5575e8d3c1d9ad1ea447979e4d5c52 # Parent 6c97728673449dffad4f187b747e1001969b6154 pycompat: define urlreq.urlparse and urlreq.unparse aliases Currently, we export urlparse via util.urlparse then call util.urlparse.urlparse() and util.urlparse.urlunparse() in a few places. This is the only url* module exported from pycompat, making it a one-off. So let's transition to urlreq to match everything else. Yes, we double import "urlparse" now on Python 2. This will be cleaned up in a subsequent patch. Also, the Python 3 functions trade in str/unicode not bytes. So we'll likely need to write a custom implementation that speaks bytes. But moving everyone to an abstracted API is a good first step. diff -r 6c9772867344 -r e68932dfbb55 mercurial/pycompat.py --- a/mercurial/pycompat.py Tue Mar 21 22:28:16 2017 -0700 +++ b/mercurial/pycompat.py Tue Mar 21 22:34:17 2017 -0700 @@ -287,6 +287,7 @@ import SimpleHTTPServer import urllib2 import urllib + import urlparse urlreq._registeraliases(urllib, ( "addclosehook", "addinfourl", @@ -317,6 +318,10 @@ "Request", "urlopen", )) + urlreq._registeraliases(urlparse, ( + "urlparse", + "urlunparse", + )) urlerr._registeraliases(urllib2, ( "HTTPError", "URLError", @@ -339,6 +344,8 @@ "splitpasswd", "splitport", "splituser", + "urlparse", + "urlunparse", )) urlreq._registeralias(urllib.parse, "unquote_to_bytes", "unquote") import urllib.request