py3: have bytes version of sys.executable
authorPulkit Goyal <7895pulkit@gmail.com>
Tue, 20 Dec 2016 00:02:24 +0530
changeset 30668 3fcaf0f660ce
parent 30667 5861bdbeb9a3
child 30669 10b17ed9b591
py3: have bytes version of sys.executable sys.executable on Python 3 returns unicodes and we want bytes. So this patch adds a new pycompat.sysexecutable which returns bytes by encoding using os.fsencode() since it is path variable.
mercurial/pycompat.py
--- a/mercurial/pycompat.py	Thu Dec 22 01:54:17 2016 +0530
+++ b/mercurial/pycompat.py	Tue Dec 20 00:02:24 2016 +0530
@@ -52,6 +52,9 @@
     # returns bytes.
     getcwd = os.getcwdb
     sysplatform = sys.platform.encode('ascii')
+    sysexecutable = sys.executable
+    if sysexecutable:
+        sysexecutable = os.fsencode(sysexecutable)
 
     # TODO: .buffer might not exist if std streams were replaced; we'll need
     # a silly wrapper to make a bytes stream backed by a unicode one.
@@ -158,6 +161,7 @@
     sysplatform = sys.platform
     getcwd = os.getcwd
     osgetenv = os.getenv
+    sysexecutable = sys.executable
 
 stringio = io.StringIO
 empty = _queue.Empty