def compile_command(source, filename="<input>", symbol="single"): r"""Compile a command and determine whether it is incomplete. Arguments: source -- the source string; may contain \n characters filename -- optional filename from which source was read; default "<input>" symbol -- optional grammar start symbol; "single" (default) or "eval" Return value / exceptions raised: - Return a code object if the command is complete and valid - Return None if the command is incomplete - Raise SyntaxError, ValueError or OverflowError if the command is a syntax error (OverflowError and ValueError can be produced by malformed literals). """ if symbol not in ['single','eval']: raise ValueError,"symbol arg must be either single or eval" return Py.compile_command_flags(source,filename,symbol,Py.getCompilerFlags(),0)
# # Test for bug 1758838 # # execfile(<any file>) should not throw a NullPointerException # # The error only shows up in interactive interpretation (type "single" for the compilation). # But we cannot use InteractiveInterpreter here since it catches all Exceptions, # therefore we do the compilation 'by hand'. # from org.python.core import Py from org.python.core import PySystemState from org.python.util import PythonInterpreter PySystemState.initialize() interp = PythonInterpreter() code = Py.compile_command_flags("execfile('test401/to_be_executed.py')", "<input>", "single", None, 1) interp.exec(code)