pycompat: prevent encoding or decoding values if not required
authorPulkit Goyal <7895pulkit@gmail.com>
Tue, 27 Feb 2018 00:33:46 +0530
changeset 36673 e2b87e19c6ef
parent 36672 1e1c1bfb0be4
child 36674 7bc33d677c0c
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
mercurial/pycompat.py
--- 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"""