[PATCH 2 of 4 py3 V2] pycompat: alias urllib symbols directly

Gregory Szorc gregory.szorc at gmail.com
Mon Mar 13 16:08:50 EDT 2017


# HG changeset patch
# User Gregory Szorc <gregory.szorc at gmail.com>
# Date 1489432457 25200
#      Mon Mar 13 12:14:17 2017 -0700
# Node ID 4dca07be3c215ee7f47ccd7473d78514968f1bb4
# Parent  62df9a5359ff0ad365b7240f4d34fb4403ebcf31
pycompat: alias urllib symbols directly

urllib.request imports a bunch of symbols from other urllib
modules. We should map to the original symbols not the
re-exported ones because this is more correct. Also, it
will prevent an import of urllib.request if only one of
the lower-level symbols/modules is needed.

diff --git a/mercurial/pycompat.py b/mercurial/pycompat.py
--- a/mercurial/pycompat.py
+++ b/mercurial/pycompat.py
@@ -267,11 +267,18 @@ if not ispy3:
     ))
 
 else:
+    import urllib.parse
+    urlreq._registeraliases(urllib.parse, (
+        "quote",
+        "splitattr",
+        "splitpasswd",
+        "splitport",
+        "splituser",
+        "unquote",
+    ))
     import urllib.request
     urlreq._registeraliases(urllib.request, (
         "AbstractHTTPHandler",
-        "addclosehook",
-        "addinfourl",
         "BaseHandler",
         "build_opener",
         "FileHandler",
@@ -285,16 +292,15 @@ else:
         "HTTPDigestAuthHandler",
         "HTTPPasswordMgrWithDefaultRealm",
         "ProxyHandler",
-        "quote",
         "Request",
-        "splitattr",
-        "splitpasswd",
-        "splitport",
-        "splituser",
-        "unquote",
         "url2pathname",
         "urlopen",
     ))
+    import urllib.response
+    urlreq._registeraliases(urllib.response, (
+        "addclosehook",
+        "addinfourl",
+    ))
     import urllib.error
     urlerr._registeraliases(urllib.error, (
         "HTTPError",


More information about the Mercurial-devel mailing list