--- a/mercurial/pycompat.py Sun Mar 20 16:49:56 2016 -0700
+++ b/mercurial/pycompat.py Thu Apr 07 00:05:48 2016 +0000
@@ -25,6 +25,97 @@
empty = _queue.Empty
queue = _queue.Queue
+class _pycompatstub(object):
+ pass
+
+def _alias(alias, origin, items):
+ """ populate a _pycompatstub
+
+ copies items from origin to alias
+ """
+ def hgcase(item):
+ return item.replace('_', '').lower()
+ for item in items:
+ try:
+ setattr(alias, hgcase(item), getattr(origin, item))
+ except AttributeError:
+ pass
+
+urlreq = _pycompatstub()
+urlerr = _pycompatstub()
+try:
+ import urllib2
+ import urllib
+ _alias(urlreq, urllib, (
+ "addclosehook",
+ "addinfourl",
+ "ftpwrapper",
+ "pathname2url",
+ "quote",
+ "splitattr",
+ "splitpasswd",
+ "splitport",
+ "splituser",
+ "unquote",
+ "url2pathname",
+ "urlencode",
+ "urlencode",
+ ))
+ _alias(urlreq, urllib2, (
+ "AbstractHTTPHandler",
+ "BaseHandler",
+ "build_opener",
+ "FileHandler",
+ "FTPHandler",
+ "HTTPBasicAuthHandler",
+ "HTTPDigestAuthHandler",
+ "HTTPHandler",
+ "HTTPPasswordMgrWithDefaultRealm",
+ "HTTPSHandler",
+ "install_opener",
+ "ProxyHandler",
+ "Request",
+ "urlopen",
+ ))
+ _alias(urlerr, urllib2, (
+ "HTTPError",
+ "URLError",
+ ))
+
+except ImportError:
+ import urllib.request
+ _alias(urlreq, urllib.request, (
+ "AbstractHTTPHandler",
+ "addclosehook",
+ "addinfourl",
+ "BaseHandler",
+ "build_opener",
+ "FileHandler",
+ "FTPHandler",
+ "ftpwrapper",
+ "HTTPHandler",
+ "HTTPSHandler",
+ "install_opener",
+ "pathname2url",
+ "HTTPBasicAuthHandler",
+ "HTTPDigestAuthHandler",
+ "ProxyHandler",
+ "quote",
+ "Request",
+ "splitattr",
+ "splitpasswd",
+ "splitport",
+ "splituser",
+ "unquote",
+ "url2pathname",
+ "urlopen",
+ ))
+ import urllib.error
+ _alias(urlerr, urllib.error, (
+ "HTTPError",
+ "URLError",
+ ))
+
try:
xrange
except NameError:
--- a/mercurial/util.py Sun Mar 20 16:49:56 2016 -0700
+++ b/mercurial/util.py Thu Apr 07 00:05:48 2016 +0000
@@ -49,6 +49,8 @@
for attr in (
'empty',
'queue',
+ 'urlerr',
+ 'urlreq',
'stringio',
):
globals()[attr] = getattr(pycompat, attr)