Package ghidra.python

Class GhidraPythonInterpreter

java.lang.Object
org.python.util.PythonInterpreter
org.python.util.InteractiveInterpreter
ghidra.python.GhidraPythonInterpreter
All Implemented Interfaces:
Closeable, AutoCloseable

public class GhidraPythonInterpreter extends org.python.util.InteractiveInterpreter
A python interpreter meant for Ghidra's use. Each interpreter you get will have its own variable space so they should not interfere with each other.

There is no longer a way to reset an interpreter...it was too complicated to get right. Instead, you should cleanup() your old interpreter and make a new one.

  • Field Summary

    Fields inherited from class org.python.util.InteractiveInterpreter

    buffer, filename

    Fields inherited from class org.python.util.PythonInterpreter

    cflags, systemState, threadLocals, useThreadLocalState
  • Method Summary

    Modifier and Type
    Method
    Description
    void
     
    void
    Execute a python file using this interpreter.
    get()
    Gets a new GhidraPythonInterpreter instance.
    boolean
    push(String line, PythonScript script)
    Pushes (executes) a line of Python to the interpreter.

    Methods inherited from class org.python.util.InteractiveInterpreter

    interrupt, resetbuffer, runcode, runsource, runsource, runsource, showexception, write

    Methods inherited from class org.python.util.PythonInterpreter

    close, compile, compile, compile, compile, eval, eval, exec, exec, execfile, execfile, execfile, get, get, getLocals, getSystemState, initialize, set, set, setErr, setErr, setErr, setIn, setIn, setIn, setLocals, setOut, setOut, setOut, setSystemState, threadLocalStateInterpreter

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Method Details

    • get

      public static GhidraPythonInterpreter get()
      Gets a new GhidraPythonInterpreter instance.
      Returns:
      A new GhidraPythonInterpreter. Could be null if it failed to be created.
    • push

      public boolean push(String line, PythonScript script) throws org.python.core.PyException, IllegalStateException
      Pushes (executes) a line of Python to the interpreter.
      Parameters:
      line - the line of Python to push to the interpreter
      script - a PythonScript from which we load state (or null)
      Returns:
      true if more input is needed before execution can occur
      Throws:
      org.python.core.PyException - if an unhandled exception occurred while executing the line of python
      IllegalStateException - if this interpreter has been cleaned up.
    • execFile

      public void execFile(ResourceFile file, PythonScript script) throws IllegalStateException
      Execute a python file using this interpreter.
      Parameters:
      file - The python file to execute.
      script - A PythonScript from which we load state (or null).
      Throws:
      IllegalStateException - if this interpreter has been cleaned up.
    • cleanup

      public void cleanup()
      Overrides:
      cleanup in class org.python.util.PythonInterpreter