# HG changeset patch # User Pulkit Goyal <7895pulkit@gmail.com> # Date 2016-11-05 23:06:26 # Node ID a2f2f694dce9f38363ae0c9d66e3fb3247fcd396 # Parent dadb00a0ec0f1560c632419fc606d9bb95ba31dd py3: have bytes version of sys.argv sys.argv returns unicodes on Python 3. We need a bytes version for us. There was also a python bug/feature request which wanted then to implement one. They rejected and it is quoted in one of the comments that we can use fsencode() to get a bytes version of sys.argv. Though not sure about its correctness. Link to the comment: http://bugs.python.org/issue8776#msg217416 After this patch we will have pycompat.sysargv which will return us bytes version of sys.argv. If this patch goes in, i will like to make transformer rewrite sys.argv with pycompat.argv because there are lot of occurences. diff --git a/mercurial/pycompat.py b/mercurial/pycompat.py --- a/mercurial/pycompat.py +++ b/mercurial/pycompat.py @@ -43,6 +43,7 @@ if ispy3: osname = os.name.encode('ascii') ospathsep = os.pathsep.encode('ascii') ossep = os.sep.encode('ascii') + sysargv = list(map(os.fsencode, sys.argv)) def sysstr(s): """Return a keyword str to be passed to Python functions such as @@ -91,6 +92,7 @@ else: osname = os.name ospathsep = os.pathsep ossep = os.sep + sysargv = sys.argv stringio = io.StringIO empty = _queue.Empty