changeset 30302:3874ddba1ab4

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.
author Pulkit Goyal <7895pulkit@gmail.com>
date Sun, 06 Nov 2016 03:33:22 +0530
parents 8321b083a83d
children ad40d307a9f0
files mercurial/pycompat.py
diffstat 1 files changed, 5 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/pycompat.py	Sun Nov 06 12:18:23 2016 +0900
+++ b/mercurial/pycompat.py	Sun Nov 06 03:33:22 2016 +0530
@@ -10,6 +10,7 @@
 
 from __future__ import absolute_import
 
+import os
 import sys
 
 ispy3 = (sys.version_info[0] >= 3)
@@ -34,9 +35,10 @@
 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 @@
     def fsdecode(filename):
         return filename
 
+    osname = os.name
+
 stringio = io.StringIO
 empty = _queue.Empty
 queue = _queue.Queue