# HG changeset patch # User Pulkit Goyal <7895pulkit@gmail.com> # Date 2016-11-05 22:03:22 # Node ID 3874ddba1ab47d1ecd41bc37f0c2cce26b370317 # Parent 8321b083a83d4412874529fd1489f67bf37124dc py3: add a bytes version of os.name os.name returns unicodes on py3. Most of our checks are like os.name == 'nt' Because of the transformer, on the right hand side we have b'nt'. The condition will never satisfy even if os.name returns 'nt' as that will be an unicode. We either need to encode every occurence of os.name or have a new variable which is much cleaner. Now we have pycompat.osname. There are around 53 occurences of os.name in the codebase which needs to be replaced by pycompat.osname to support Python 3. diff --git a/mercurial/pycompat.py b/mercurial/pycompat.py --- a/mercurial/pycompat.py +++ b/mercurial/pycompat.py @@ -10,6 +10,7 @@ This contains aliases to hide python ver from __future__ import absolute_import +import os import sys ispy3 = (sys.version_info[0] >= 3) @@ -34,9 +35,10 @@ else: if ispy3: import builtins import functools - import os fsencode = os.fsencode fsdecode = os.fsdecode + # A bytes version of os.name. + osname = os.name.encode('ascii') def sysstr(s): """Return a keyword str to be passed to Python functions such as @@ -82,6 +84,8 @@ else: def fsdecode(filename): return filename + osname = os.name + stringio = io.StringIO empty = _queue.Empty queue = _queue.Queue