[pypy-commit] pypy default: Fix: the case marked as "#PyPy" was never actually followed any more.

arigo noreply at buildbot.pypy.org
Thu Oct 20 15:14:08 CEST 2011


Author: Armin Rigo <arigo at tunes.org>
Branch: 
Changeset: r48264:0d7e8867e6c0
Date: 2011-10-20 15:13 +0200
http://bitbucket.org/pypy/pypy/changeset/0d7e8867e6c0/

Log:	Fix: the case marked as "#PyPy" was never actually followed any
	more. It is doing something better than the other case, so use it
	again. It also fixes issue917 on the interactive prompt.

diff --git a/lib_pypy/pyrepl/readline.py b/lib_pypy/pyrepl/readline.py
--- a/lib_pypy/pyrepl/readline.py
+++ b/lib_pypy/pyrepl/readline.py
@@ -395,9 +395,21 @@
     _wrapper.f_in = f_in
     _wrapper.f_out = f_out
 
-    if hasattr(sys, '__raw_input__'):    # PyPy
-        _old_raw_input = sys.__raw_input__
+    if '__pypy__' in sys.builtin_module_names:    # PyPy
+
+        def _old_raw_input(prompt=''):
+            # sys.__raw_input__() is only called when stdin and stdout are
+            # as expected and are ttys.  If it is the case, then get_reader()
+            # should not really fail in _wrapper.raw_input().  If it still
+            # does, then we will just cancel the redirection and call again
+            # the built-in raw_input().
+            try:
+                del sys.__raw_input__
+            except AttributeError:
+                pass
+            return raw_input(prompt)
         sys.__raw_input__ = _wrapper.raw_input
+
     else:
         # this is not really what readline.c does.  Better than nothing I guess
         import __builtin__


More information about the pypy-commit mailing list