pycompat: prevent encoding or decoding values if not required
pycompat.py has functions strurl and bytesurl which decodes and encodes the url
passed on Python 3 respectively. In some cases, strurl gets a url which is
already str and bytesurl gets a url which is already bytes. Let's prevent
encoding or decoding the values again if not required.
Differential Revision: https://phab.mercurial-scm.org/D2472
--- a/mercurial/pycompat.py Sat Mar 03 10:39:48 2018 -0500
+++ b/mercurial/pycompat.py Tue Feb 27 00:33:46 2018 +0530
@@ -192,11 +192,15 @@
def strurl(url):
"""Converts a bytes url back to str"""
- return url.decode(u'ascii')
+ if isinstance(url, bytes):
+ return url.decode(u'ascii')
+ return url
def bytesurl(url):
"""Converts a str url to bytes by encoding in ascii"""
- return url.encode(u'ascii')
+ if isinstance(url, str):
+ return url.encode(u'ascii')
+ return url
def raisewithtb(exc, tb):
"""Raise exception with the given traceback"""