[PATCH 2 of 8 py3] util: use urlreq.unquote

Gregory Szorc gregory.szorc at gmail.com
Wed Mar 22 01:56:39 EDT 2017


# HG changeset patch
# User Gregory Szorc <gregory.szorc at gmail.com>
# Date 1490160191 25200
#      Tue Mar 21 22:23:11 2017 -0700
# Node ID 2a95cd875bfaaec90197a28d33e112ee675066e3
# Parent  285f48d5644ea070f717473af077e6728df6ea82
util: use urlreq.unquote

pycompat.urlreq.unquote and pycompat.urlunquote effectively alias the
same thing. pycompat.urlunquote is only used once in the code base.
So let's switch to urlreq.unquote.

"Effectively" in the above paragraph is because pycompat.urlreq.unquote
aliases urllib.unquote and pycompat.urlunquote aliases urlparse.unquote
on Python 2. You might think one of urllib.unquote and urlparse.unquote
is an alias to the other, but you would be incorrect. In fact, these
functions are copies of each other. There is even a comment in the
CPython source code saying to keep them in sync. You can't make this
up.

diff --git a/mercurial/util.py b/mercurial/util.py
--- a/mercurial/util.py
+++ b/mercurial/util.py
@@ -2637,7 +2637,7 @@ class url(object):
                   'path', 'fragment'):
             v = getattr(self, a)
             if v is not None:
-                setattr(self, a, pycompat.urlunquote(v))
+                setattr(self, a, urlreq.unquote(v))
 
     def __repr__(self):
         attrs = []


More information about the Mercurial-devel mailing list