Package org.python.util
Class PythonInterpreter
- java.lang.Object
-
- org.python.util.PythonInterpreter
-
- All Implemented Interfaces:
java.io.Closeable,java.lang.AutoCloseable
- Direct Known Subclasses:
InteractiveInterpreter
public class PythonInterpreter extends java.lang.Object implements java.lang.AutoCloseable, java.io.CloseableThe PythonInterpreter class is a standard wrapper for a Jython interpreter for embedding in a Java application.
-
-
Constructor Summary
Constructors Constructor Description PythonInterpreter()Creates a new interpreter with an empty local namespace.PythonInterpreter(PyObject dict)Creates a new interpreter with a specified local namespace.PythonInterpreter(PyObject dict, PySystemState systemState)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidcleanup()voidclose()PyCodecompile(java.io.Reader reader)PyCodecompile(java.io.Reader reader, java.lang.String filename)PyCodecompile(java.lang.String script)Compiles a string of Python source as either an expression (if possible) or a module.PyCodecompile(java.lang.String script, java.lang.String filename)PyObjecteval(java.lang.String s)Evaluates a string as a Python expression and returns the result.PyObjecteval(PyObject code)Evaluates a Python code object and returns the result.voidexec(java.lang.String s)Executes a string of Python source in the local namespace.voidexec(PyObject code)Executes a Python code object in the local namespace.voidexecfile(java.io.InputStream s)voidexecfile(java.io.InputStream s, java.lang.String name)voidexecfile(java.lang.String filename)Executes a file of Python source in the local namespace.PyObjectget(java.lang.String name)Returns the value of a variable in the local namespace.<T> Tget(java.lang.String name, java.lang.Class<T> javaclass)Returns the value of a variable in the local namespace.PyObjectgetLocals()PySystemStategetSystemState()static voidinitialize(java.util.Properties preProperties, java.util.Properties postProperties, java.lang.String[] argv)Initializes the Jython runtime.voidset(java.lang.String name, java.lang.Object value)Sets a variable in the local namespace.voidset(java.lang.String name, PyObject value)Sets a variable in the local namespace.voidsetErr(java.io.OutputStream outStream)voidsetErr(java.io.Writer outStream)Sets aWriterto use for the standard output stream,sys.stdout.voidsetErr(PyObject outStream)Sets a Python object to use for the standard output stream,sys.stderr.voidsetIn(java.io.InputStream inStream)Sets aInputStreamto use for the standard input stream.voidsetIn(java.io.Reader inStream)Sets aReaderto use for the standard input stream,sys.stdin.voidsetIn(PyObject inStream)Sets a Python object to use for the standard input stream,sys.stdin.voidsetLocals(PyObject d)voidsetOut(java.io.OutputStream outStream)Sets aOutputStreamto use for the standard output stream.voidsetOut(java.io.Writer outStream)Sets aWriterto use for the standard output stream,sys.stdout.voidsetOut(PyObject outStream)Sets a Python object to use for the standard output stream,sys.stdout.static PythonInterpreterthreadLocalStateInterpreter(PyObject dict)Creates a new interpreter with the ability to maintain a separate local namespace for each thread (set by invoking setLocals()).
-
-
-
Constructor Detail
-
PythonInterpreter
public PythonInterpreter()
Creates a new interpreter with an empty local namespace.
-
PythonInterpreter
public PythonInterpreter(PyObject dict)
Creates a new interpreter with a specified local namespace.- Parameters:
dict- a Python mapping object (e.g., a dictionary) for use as the namespace
-
PythonInterpreter
public PythonInterpreter(PyObject dict, PySystemState systemState)
-
-
Method Detail
-
initialize
public static void initialize(java.util.Properties preProperties, java.util.Properties postProperties, java.lang.String[] argv)Initializes the Jython runtime. This should only be called once, before any other Python objects (including PythonInterpreter) are created.- Parameters:
preProperties- A set of properties. Typically System.getProperties() is used. preProperties override properties from the registry file.postProperties- Another set of properties. Values like python.home, python.path and all other values from the registry files can be added to this property set. postProperties override system properties and registry properties.argv- Command line arguments, assigned to sys.argv.
-
threadLocalStateInterpreter
public static PythonInterpreter threadLocalStateInterpreter(PyObject dict)
Creates a new interpreter with the ability to maintain a separate local namespace for each thread (set by invoking setLocals()).- Parameters:
dict- a Python mapping object (e.g., a dictionary) for use as the default namespace
-
getSystemState
public PySystemState getSystemState()
-
setIn
public void setIn(PyObject inStream)
Sets a Python object to use for the standard input stream,sys.stdin. This stream is used in a byte-oriented way, through calls toreadandreadlineon the object.- Parameters:
inStream- a Python file-like object to use as the input stream
-
setIn
public void setIn(java.io.Reader inStream)
Sets aReaderto use for the standard input stream,sys.stdin. This stream is wrapped such that characters will be narrowed to bytes. A character greater thanU+00FFwill raise a JavaIllegalArgumentExceptionfrom withinPyString.- Parameters:
inStream- to use as the input stream
-
setIn
public void setIn(java.io.InputStream inStream)
Sets aInputStreamto use for the standard input stream.- Parameters:
inStream- InputStream to use as input stream
-
setOut
public void setOut(PyObject outStream)
Sets a Python object to use for the standard output stream,sys.stdout. This stream is used in a byte-oriented way (mostly) that depends on the type of file-like object. The behaviour as implemented is:Python type of object owrittenstr/bytesunicodeAny other type PyFileas bytes directly respect PyFile.encodingcall str(o)firstPyFileWritereach byte value as a charwrite as Java charscall o.toString()firstOther PyObjectfinvoke f.write(str(o))invoke f.write(o)invoke f.write(str(o))- Parameters:
outStream- Python file-like object to use as the output stream
-
setOut
public void setOut(java.io.Writer outStream)
Sets aWriterto use for the standard output stream,sys.stdout. The behaviour as implemented is to output each objectoby callingo.toString()and writing this as UTF-16.- Parameters:
outStream- to use as the output stream
-
setOut
public void setOut(java.io.OutputStream outStream)
Sets aOutputStreamto use for the standard output stream.- Parameters:
outStream- OutputStream to use as output stream
-
setErr
public void setErr(PyObject outStream)
Sets a Python object to use for the standard output stream,sys.stderr. This stream is used in a byte-oriented way (mostly) that depends on the type of file-like object, in the same way assetOut(PyObject).- Parameters:
outStream- Python file-like object to use as the error output stream
-
setErr
public void setErr(java.io.Writer outStream)
Sets aWriterto use for the standard output stream,sys.stdout. The behaviour as implemented is to output each objectoby callingo.toString()and writing this as UTF-16.- Parameters:
outStream- to use as the error output stream
-
setErr
public void setErr(java.io.OutputStream outStream)
-
eval
public PyObject eval(java.lang.String s)
Evaluates a string as a Python expression and returns the result.
-
exec
public void exec(java.lang.String s)
Executes a string of Python source in the local namespace.
-
exec
public void exec(PyObject code)
Executes a Python code object in the local namespace.
-
execfile
public void execfile(java.lang.String filename)
Executes a file of Python source in the local namespace.
-
execfile
public void execfile(java.io.InputStream s)
-
execfile
public void execfile(java.io.InputStream s, java.lang.String name)
-
compile
public PyCode compile(java.lang.String script)
Compiles a string of Python source as either an expression (if possible) or a module. Designed for use by a JSR 223 implementation: "the Scripting API does not distinguish between scripts which return values and those which do not, nor do they make the corresponding distinction between evaluating or executing objects." (SCR.4.2.1)
-
compile
public PyCode compile(java.io.Reader reader)
-
compile
public PyCode compile(java.lang.String script, java.lang.String filename)
-
compile
public PyCode compile(java.io.Reader reader, java.lang.String filename)
-
getLocals
public PyObject getLocals()
-
setLocals
public void setLocals(PyObject d)
-
set
public void set(java.lang.String name, java.lang.Object value)Sets a variable in the local namespace.- Parameters:
name- the name of the variablevalue- the object to set the variable to (as converted to an appropriate Python object)
-
set
public void set(java.lang.String name, PyObject value)Sets a variable in the local namespace.- Parameters:
name- the name of the variablevalue- the Python object to set the variable to
-
get
public PyObject get(java.lang.String name)
Returns the value of a variable in the local namespace.- Parameters:
name- the name of the variable- Returns:
- the value of the variable, or null if that name isn't assigned
-
get
public <T> T get(java.lang.String name, java.lang.Class<T> javaclass)Returns the value of a variable in the local namespace. The value will be returned as an instance of the given Java class.interp.get("foo", Object.class)will return the most appropriate generic Java object.- Parameters:
name- the name of the variablejavaclass- the class of object to return- Returns:
- the value of the variable as the given class, or null if that name isn't assigned
-
cleanup
public void cleanup()
-
close
public void close()
- Specified by:
closein interfacejava.lang.AutoCloseable- Specified by:
closein interfacejava.io.Closeable
-
-