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

login
register
mail settings
Submitter Gregory Szorc
Date March 13, 2017, 8:08 p.m.
Message ID <4dca07be3c215ee7f47c.1489435730@ubuntu-vm-main>
Download mbox | patch
Permalink /patch/19303/
State Accepted
Headers show

Comments

Gregory Szorc - March 13, 2017, 8:08 p.m.
# HG changeset patch
# User Gregory Szorc <gregory.szorc@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.

Patch

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",