Patch by Mark Day to allow from __future__ imports. Looks harmless

enough, but may have side-effects because it preallocates a single
codeop.Compiler() to compile all statements the user enters.

Just: please review and retract/modify if necessary.
This commit is contained in:
Jack Jansen 2001-09-07 10:11:31 +00:00
parent 51e2651b29
commit 71707f3bb8
1 changed files with 5 additions and 3 deletions

View File

@ -36,7 +36,9 @@ def print_exc(limit=None, file=None):
class PyInteractive: class PyInteractive:
def __init__(self): def __init__(self):
import codeop
self._pybuf = "" self._pybuf = ""
self._compile = codeop.Compile()
def executeline(self, stuff, out = None, env = None): def executeline(self, stuff, out = None, env = None):
if env is None: if env is None:
@ -72,7 +74,7 @@ class PyInteractive:
return return
try: try:
code = compile(self._pybuf, "<input>", "single") code = self._compile(self._pybuf, "<input>", "single")
except SyntaxError, err: except SyntaxError, err:
pass pass
except: except:
@ -84,12 +86,12 @@ class PyInteractive:
return return
try: try:
code1 = compile(self._pybuf + "\n", "<input>", "single") code1 = self._compile(self._pybuf + "\n", "<input>", "single")
except SyntaxError, err1: except SyntaxError, err1:
pass pass
try: try:
code2 = compile(self._pybuf + "\n\n", "<input>", "single") code2 = self._compile(self._pybuf + "\n\n", "<input>", "single")
except SyntaxError, err2: except SyntaxError, err2:
pass pass