[pypy-commit] pypy py3k: fix test_print_info by making app_main importable on python2

antocuni noreply at buildbot.pypy.org
Thu Jun 7 22:10:09 CEST 2012


Author: Antonio Cuni <anto.cuni at gmail.com>
Branch: py3k
Changeset: r55484:7cf90c1c8168
Date: 2012-06-07 22:09 +0200
http://bitbucket.org/pypy/pypy/changeset/7cf90c1c8168/

Log:	fix test_print_info by making app_main importable on python2

diff --git a/pypy/translator/goal/app_main.py b/pypy/translator/goal/app_main.py
--- a/pypy/translator/goal/app_main.py
+++ b/pypy/translator/goal/app_main.py
@@ -16,6 +16,8 @@
   --info         print translation information about this PyPy executable
 """
 
+from __future__ import print_function, unicode_literals
+
 import sys
 
 DEBUG = False       # dump exceptions before calling the except hook
@@ -533,6 +535,11 @@
 
     return options
 
+# this indirection is needed to be able to import this module on python2, else
+# we have a SyntaxError: unqualified exec in a nested function
+def exec_(src, dic):
+    exec(src, dic)
+
 def run_command_line(interactive,
                      inspect,
                      run_command,
@@ -606,7 +613,7 @@
             sys.path.insert(0, '')
 
             def run_it():
-                exec(run_command, mainmodule.__dict__)
+                exec_(run_command, mainmodule.__dict__)
             success = run_toplevel(run_it)
         elif run_module:
             # handle the "-m" command
@@ -642,7 +649,7 @@
                             co_python_startup = compile(startup,
                                                         python_startup,
                                                         'exec')
-                            exec(co_python_startup, mainmodule.__dict__)
+                            exec_(co_python_startup, mainmodule.__dict__)
                         run_toplevel(run_it)
                 # Then we need a prompt.
                 inspect = True
@@ -650,7 +657,7 @@
                 # If not interactive, just read and execute stdin normally.
                 def run_it():
                     co_stdin = compile(sys.stdin.read(), '<stdin>', 'exec')
-                    exec(co_stdin, mainmodule.__dict__)
+                    exec_(co_stdin, mainmodule.__dict__)
                 mainmodule.__file__ = '<stdin>'
                 success = run_toplevel(run_it)
         else:
@@ -683,7 +690,7 @@
                     def execfile(filename, namespace):
                         with open(filename) as f:
                             code = f.read()
-                        exec(code, namespace)
+                        exec_(code, namespace)
                     args = (execfile, filename, mainmodule.__dict__)
             success = run_toplevel(*args)
 


More information about the pypy-commit mailing list