Mercurial > hg
changeset 30063:81d38478fced
util: remove the copypasta unquote function
The _urlunquote function was added back in the day to improve startup
performance, but this version is a) not compatible with Python 3 and b) has
quadratic performance issues that Python core solved eons ago.
Moreover, the function moved from urllib to urlparse (cheaper to import) *and*
that module is already imported into pycompat. As a result, removing this
function improves perf now.
Before:
! wall 0.066773 comb 0.000000 user 0.000000 sys 0.000000 (best of 100)
After:
! wall 0.065990 comb 0.000000 user 0.000000 sys 0.000000 (best of 100)
author | Martijn Pieters <mjpieters@fb.com> |
---|---|
date | Fri, 07 Oct 2016 17:06:55 +0200 |
parents | 940c05b25b07 |
children | b24804f72116 |
files | mercurial/util.py |
diffstat | 1 files changed, 1 insertions(+), 21 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/util.py Fri Oct 07 08:51:50 2016 -0700 +++ b/mercurial/util.py Fri Oct 07 17:06:55 2016 +0200 @@ -2301,26 +2301,6 @@ _hextochr = dict((a + b, chr(int(a + b, 16))) for a in string.hexdigits for b in string.hexdigits) -def _urlunquote(s): - """Decode HTTP/HTML % encoding. - - >>> _urlunquote('abc%20def') - 'abc def' - """ - res = s.split('%') - # fastpath - if len(res) == 1: - return s - s = res[0] - for item in res[1:]: - try: - s += _hextochr[item[:2]] + item[2:] - except KeyError: - s += '%' + item - except UnicodeDecodeError: - s += unichr(int(item[:2], 16)) + item[2:] - return s - class url(object): r"""Reliable URL parser. @@ -2489,7 +2469,7 @@ 'path', 'fragment'): v = getattr(self, a) if v is not None: - setattr(self, a, _urlunquote(v)) + setattr(self, a, pycompat.urlparse.unquote(v)) def __repr__(self): attrs = []