# HG changeset patch # User Pulkit Goyal <7895pulkit@gmail.com> # Date 1479820610 -19800 # Node ID fc0cfe6c87d7668e1695800f99ca798802ca5eff # Parent 22d05b53b0e8b77ec52b229102248af56bcf442a py3: add os.getcwdb() to have bytes path Following the behaviour of Python 3, os.getcwd() return unicodes. We need bytes version as path variables are bytes in UNIX. Python 3 has os.getcwdb() which returns current working directory in bytes. Like rest of the things there in pycompat, like osname, ossep, we need to rewrite every instance of os.getcwd to pycompat.getcwd to make them work correctly on Python 3. diff -r 22d05b53b0e8 -r fc0cfe6c87d7 mercurial/dispatch.py --- a/mercurial/dispatch.py Tue Nov 22 18:13:02 2016 -0800 +++ b/mercurial/dispatch.py Tue Nov 22 18:46:50 2016 +0530 @@ -667,7 +667,7 @@ """ if wd is None: try: - wd = os.getcwd() + wd = pycompat.getcwd() except OSError as e: raise error.Abort(_("error getting current working directory: %s") % e.strerror) diff -r 22d05b53b0e8 -r fc0cfe6c87d7 mercurial/pycompat.py --- a/mercurial/pycompat.py Tue Nov 22 18:13:02 2016 -0800 +++ b/mercurial/pycompat.py Tue Nov 22 18:46:50 2016 +0530 @@ -43,6 +43,9 @@ osname = os.name.encode('ascii') ospathsep = os.pathsep.encode('ascii') ossep = os.sep.encode('ascii') + # os.getcwd() on Python 3 returns string, but it has os.getcwdb() which + # returns bytes. + getcwd = os.getcwdb # 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. @@ -110,6 +113,7 @@ stdout = sys.stdout stderr = sys.stderr sysargv = sys.argv + getcwd = os.getcwd stringio = io.StringIO empty = _queue.Empty