[PATCH 2 of 2] py3: select input or raw_input by pycompat

Yuya Nishihara yuya at tcha.org
Wed Aug 16 01:22:39 EDT 2017


# HG changeset patch
# User Yuya Nishihara <yuya at tcha.org>
# Date 1502859264 -32400
#      Wed Aug 16 13:54:24 2017 +0900
# Node ID 2c44ad89954bf0a04392775e7444f1ba2fc0b2e9
# Parent  63c4583c7fa0f989f225488273614f3a0aa88002
py3: select input or raw_input by pycompat

This seems slightly cleaner.

diff --git a/mercurial/pycompat.py b/mercurial/pycompat.py
--- a/mercurial/pycompat.py
+++ b/mercurial/pycompat.py
@@ -63,6 +63,7 @@ if ispy3:
         sysexecutable = os.fsencode(sysexecutable)
     stringio = io.BytesIO
     maplist = lambda *args: list(map(*args))
+    rawinput = input
 
     # 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.
@@ -312,6 +313,7 @@ else:
     shlexsplit = shlex.split
     stringio = cStringIO.StringIO
     maplist = map
+    rawinput = raw_input
 
 class _pycompatstub(object):
     def __init__(self):
diff --git a/mercurial/util.py b/mercurial/util.py
--- a/mercurial/util.py
+++ b/mercurial/util.py
@@ -176,10 +176,7 @@ def bytesinput(fin, fout, *args, **kwarg
     sin, sout = sys.stdin, sys.stdout
     try:
         sys.stdin, sys.stdout = encoding.strio(fin), encoding.strio(fout)
-        if pycompat.ispy3:
-            return encoding.strtolocal(input(*args, **kwargs))
-        else:
-            return raw_input(*args, **kwargs)
+        return encoding.strtolocal(pycompat.rawinput(*args, **kwargs))
     finally:
         sys.stdin, sys.stdout = sin, sout
 


More information about the Mercurial-devel mailing list