/**
 * Autogenerated by Thrift Compiler (0.20.0)
 *
 * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
 *  @generated
 */
package com.jetbrains.python.console.protocol;

@javax.annotation.Generated(value = "Autogenerated by Thrift Compiler (0.20.0)", date = "2025-06-03")
@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked", "unused"})
public class PythonConsoleBackendService {

  public interface Iface {

    /**
     * Returns `true` if Python console script needs more code to evaluate it.
     * Returns `false` if the code is scheduled for evaluation.
     * 
     * @param line
     */
    public boolean execLine(java.lang.String line) throws PythonUnhandledException, org.apache.thrift.TException;

    /**
     * Returns `true` if Python console script needs more code to evaluate it.
     * Returns `false` if the code is scheduled for evaluation.
     * 
     * @param lines
     */
    public boolean execMultipleLines(java.lang.String lines) throws PythonUnhandledException, org.apache.thrift.TException;

    public java.util.List<CompletionOption> getCompletions(java.lang.String text, java.lang.String actTok) throws PythonUnhandledException, org.apache.thrift.TException;

    /**
     * The description of the given attribute in the shell.
     * 
     * @param text
     */
    public java.lang.String getDescription(java.lang.String text) throws org.apache.thrift.TException;

    /**
     * Return Frame
     * 
     * @param type
     */
    public java.util.List<DebugValue> getFrame(int type) throws PythonUnhandledException, org.apache.thrift.TException;

    /**
     * Parameter is a full path in a variables tree from the top-level parent to the debug value.
     * 
     * 
     * @param variable
     */
    public java.util.List<DebugValue> getVariable(java.lang.String variable) throws PythonUnhandledException, org.apache.thrift.TException;

    /**
     * Parameter is a serialized user type renderers.
     * 
     * 
     * @param renderers
     */
    public boolean setUserTypeRenderers(java.lang.String renderers) throws PythonUnhandledException, org.apache.thrift.TException;

    /**
     * Changes the variable value asynchronously.
     * 
     * @param evaluationExpression
     * @param value
     */
    public void changeVariable(java.lang.String evaluationExpression, java.lang.String value) throws PythonUnhandledException, org.apache.thrift.TException;

    public void connectToDebugger(int localPort, java.lang.String host, java.util.Map<java.lang.String,java.lang.Boolean> opts, java.util.Map<java.lang.String,java.lang.String> extraEnvs) throws PythonUnhandledException, org.apache.thrift.TException;

    public void interrupt() throws org.apache.thrift.TException;

    /**
     * Should normally return "PyCharm" string.
     */
    public java.lang.String handshake() throws org.apache.thrift.TException;

    /**
     * Closes Python console script.
     */
    public void close() throws org.apache.thrift.TException;

    public java.util.List<DebugValue> evaluate(java.lang.String expression, boolean doTrunc) throws PythonUnhandledException, org.apache.thrift.TException;

    public GetArrayResponse getArray(java.lang.String vars, int rowOffset, int colOffset, int rows, int cols, java.lang.String format) throws UnsupportedArrayTypeException, ExceedingArrayDimensionsException, PythonUnhandledException, org.apache.thrift.TException;

    public void execDataViewerAction(java.lang.String varName, java.lang.String action, java.lang.String myArgs) throws PythonUnhandledException, org.apache.thrift.TException;

    /**
     * The result is returned asyncronously with `PythonConsoleFrontendService.returnFullValue`.
     * 
     * @param seq
     * @param variables
     */
    public void loadFullValue(int seq, java.util.List<java.lang.String> variables) throws PythonUnhandledException, org.apache.thrift.TException;

    public java.lang.String execRaw(java.lang.String command) throws PythonUnhandledException, org.apache.thrift.TException;

    public java.lang.String execTableCommand(java.lang.String tableVariable, java.lang.String commandType, java.lang.String startIndex, java.lang.String endIndex, java.lang.String format) throws PythonUnhandledException, PythonTableException, org.apache.thrift.TException;

    public java.lang.String execTableImageCommand(java.lang.String tableVariable, java.lang.String commandType, java.lang.String offset, java.lang.String imageId) throws PythonUnhandledException, PythonTableException, org.apache.thrift.TException;

  }

  public interface AsyncIface {

    public void execLine(java.lang.String line, org.apache.thrift.async.AsyncMethodCallback<java.lang.Boolean> resultHandler) throws org.apache.thrift.TException;

    public void execMultipleLines(java.lang.String lines, org.apache.thrift.async.AsyncMethodCallback<java.lang.Boolean> resultHandler) throws org.apache.thrift.TException;

    public void getCompletions(java.lang.String text, java.lang.String actTok, org.apache.thrift.async.AsyncMethodCallback<java.util.List<CompletionOption>> resultHandler) throws org.apache.thrift.TException;

    public void getDescription(java.lang.String text, org.apache.thrift.async.AsyncMethodCallback<java.lang.String> resultHandler) throws org.apache.thrift.TException;

    public void getFrame(int type, org.apache.thrift.async.AsyncMethodCallback<java.util.List<DebugValue>> resultHandler) throws org.apache.thrift.TException;

    public void getVariable(java.lang.String variable, org.apache.thrift.async.AsyncMethodCallback<java.util.List<DebugValue>> resultHandler) throws org.apache.thrift.TException;

    public void setUserTypeRenderers(java.lang.String renderers, org.apache.thrift.async.AsyncMethodCallback<java.lang.Boolean> resultHandler) throws org.apache.thrift.TException;

    public void changeVariable(java.lang.String evaluationExpression, java.lang.String value, org.apache.thrift.async.AsyncMethodCallback<Void> resultHandler) throws org.apache.thrift.TException;

    public void connectToDebugger(int localPort, java.lang.String host, java.util.Map<java.lang.String,java.lang.Boolean> opts, java.util.Map<java.lang.String,java.lang.String> extraEnvs, org.apache.thrift.async.AsyncMethodCallback<Void> resultHandler) throws org.apache.thrift.TException;

    public void interrupt(org.apache.thrift.async.AsyncMethodCallback<Void> resultHandler) throws org.apache.thrift.TException;

    public void handshake(org.apache.thrift.async.AsyncMethodCallback<java.lang.String> resultHandler) throws org.apache.thrift.TException;

    public void close(org.apache.thrift.async.AsyncMethodCallback<Void> resultHandler) throws org.apache.thrift.TException;

    public void evaluate(java.lang.String expression, boolean doTrunc, org.apache.thrift.async.AsyncMethodCallback<java.util.List<DebugValue>> resultHandler) throws org.apache.thrift.TException;

    public void getArray(java.lang.String vars, int rowOffset, int colOffset, int rows, int cols, java.lang.String format, org.apache.thrift.async.AsyncMethodCallback<GetArrayResponse> resultHandler) throws org.apache.thrift.TException;

    public void execDataViewerAction(java.lang.String varName, java.lang.String action, java.lang.String myArgs, org.apache.thrift.async.AsyncMethodCallback<Void> resultHandler) throws org.apache.thrift.TException;

    public void loadFullValue(int seq, java.util.List<java.lang.String> variables, org.apache.thrift.async.AsyncMethodCallback<Void> resultHandler) throws org.apache.thrift.TException;

    public void execRaw(java.lang.String command, org.apache.thrift.async.AsyncMethodCallback<java.lang.String> resultHandler) throws org.apache.thrift.TException;

    public void execTableCommand(java.lang.String tableVariable, java.lang.String commandType, java.lang.String startIndex, java.lang.String endIndex, java.lang.String format, org.apache.thrift.async.AsyncMethodCallback<java.lang.String> resultHandler) throws org.apache.thrift.TException;

    public void execTableImageCommand(java.lang.String tableVariable, java.lang.String commandType, java.lang.String offset, java.lang.String imageId, org.apache.thrift.async.AsyncMethodCallback<java.lang.String> resultHandler) throws org.apache.thrift.TException;

  }

  public static class Client extends org.apache.thrift.TServiceClient implements Iface {
    public static class Factory implements org.apache.thrift.TServiceClientFactory<Client> {
      public Factory() {}
      @Override
      public Client getClient(org.apache.thrift.protocol.TProtocol prot) {
        return new Client(prot);
      }
      @Override
      public Client getClient(org.apache.thrift.protocol.TProtocol iprot, org.apache.thrift.protocol.TProtocol oprot) {
        return new Client(iprot, oprot);
      }
    }

    public Client(org.apache.thrift.protocol.TProtocol prot)
    {
      super(prot, prot);
    }

    public Client(org.apache.thrift.protocol.TProtocol iprot, org.apache.thrift.protocol.TProtocol oprot) {
      super(iprot, oprot);
    }

    @Override
    public boolean execLine(java.lang.String line) throws PythonUnhandledException, org.apache.thrift.TException
    {
      send_execLine(line);
      return recv_execLine();
    }

    public void send_execLine(java.lang.String line) throws org.apache.thrift.TException
    {
      execLine_args args = new execLine_args();
      args.setLine(line);
      sendBase("execLine", args);
    }

    public boolean recv_execLine() throws PythonUnhandledException, org.apache.thrift.TException
    {
      execLine_result result = new execLine_result();
      receiveBase(result, "execLine");
      if (result.isSetSuccess()) {
        return result.success;
      }
      if (result.unhandledException != null) {
        throw result.unhandledException;
      }
      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "execLine failed: unknown result");
    }

    @Override
    public boolean execMultipleLines(java.lang.String lines) throws PythonUnhandledException, org.apache.thrift.TException
    {
      send_execMultipleLines(lines);
      return recv_execMultipleLines();
    }

    public void send_execMultipleLines(java.lang.String lines) throws org.apache.thrift.TException
    {
      execMultipleLines_args args = new execMultipleLines_args();
      args.setLines(lines);
      sendBase("execMultipleLines", args);
    }

    public boolean recv_execMultipleLines() throws PythonUnhandledException, org.apache.thrift.TException
    {
      execMultipleLines_result result = new execMultipleLines_result();
      receiveBase(result, "execMultipleLines");
      if (result.isSetSuccess()) {
        return result.success;
      }
      if (result.unhandledException != null) {
        throw result.unhandledException;
      }
      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "execMultipleLines failed: unknown result");
    }

    @Override
    public java.util.List<CompletionOption> getCompletions(java.lang.String text, java.lang.String actTok) throws PythonUnhandledException, org.apache.thrift.TException
    {
      send_getCompletions(text, actTok);
      return recv_getCompletions();
    }

    public void send_getCompletions(java.lang.String text, java.lang.String actTok) throws org.apache.thrift.TException
    {
      getCompletions_args args = new getCompletions_args();
      args.setText(text);
      args.setActTok(actTok);
      sendBase("getCompletions", args);
    }

    public java.util.List<CompletionOption> recv_getCompletions() throws PythonUnhandledException, org.apache.thrift.TException
    {
      getCompletions_result result = new getCompletions_result();
      receiveBase(result, "getCompletions");
      if (result.isSetSuccess()) {
        return result.success;
      }
      if (result.unhandledException != null) {
        throw result.unhandledException;
      }
      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "getCompletions failed: unknown result");
    }

    @Override
    public java.lang.String getDescription(java.lang.String text) throws org.apache.thrift.TException
    {
      send_getDescription(text);
      return recv_getDescription();
    }

    public void send_getDescription(java.lang.String text) throws org.apache.thrift.TException
    {
      getDescription_args args = new getDescription_args();
      args.setText(text);
      sendBase("getDescription", args);
    }

    public java.lang.String recv_getDescription() throws org.apache.thrift.TException
    {
      getDescription_result result = new getDescription_result();
      receiveBase(result, "getDescription");
      if (result.isSetSuccess()) {
        return result.success;
      }
      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "getDescription failed: unknown result");
    }

    @Override
    public java.util.List<DebugValue> getFrame(int type) throws PythonUnhandledException, org.apache.thrift.TException
    {
      send_getFrame(type);
      return recv_getFrame();
    }

    public void send_getFrame(int type) throws org.apache.thrift.TException
    {
      getFrame_args args = new getFrame_args();
      args.setType(type);
      sendBase("getFrame", args);
    }

    public java.util.List<DebugValue> recv_getFrame() throws PythonUnhandledException, org.apache.thrift.TException
    {
      getFrame_result result = new getFrame_result();
      receiveBase(result, "getFrame");
      if (result.isSetSuccess()) {
        return result.success;
      }
      if (result.unhandledException != null) {
        throw result.unhandledException;
      }
      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "getFrame failed: unknown result");
    }

    @Override
    public java.util.List<DebugValue> getVariable(java.lang.String variable) throws PythonUnhandledException, org.apache.thrift.TException
    {
      send_getVariable(variable);
      return recv_getVariable();
    }

    public void send_getVariable(java.lang.String variable) throws org.apache.thrift.TException
    {
      getVariable_args args = new getVariable_args();
      args.setVariable(variable);
      sendBase("getVariable", args);
    }

    public java.util.List<DebugValue> recv_getVariable() throws PythonUnhandledException, org.apache.thrift.TException
    {
      getVariable_result result = new getVariable_result();
      receiveBase(result, "getVariable");
      if (result.isSetSuccess()) {
        return result.success;
      }
      if (result.unhandledException != null) {
        throw result.unhandledException;
      }
      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "getVariable failed: unknown result");
    }

    @Override
    public boolean setUserTypeRenderers(java.lang.String renderers) throws PythonUnhandledException, org.apache.thrift.TException
    {
      send_setUserTypeRenderers(renderers);
      return recv_setUserTypeRenderers();
    }

    public void send_setUserTypeRenderers(java.lang.String renderers) throws org.apache.thrift.TException
    {
      setUserTypeRenderers_args args = new setUserTypeRenderers_args();
      args.setRenderers(renderers);
      sendBase("setUserTypeRenderers", args);
    }

    public boolean recv_setUserTypeRenderers() throws PythonUnhandledException, org.apache.thrift.TException
    {
      setUserTypeRenderers_result result = new setUserTypeRenderers_result();
      receiveBase(result, "setUserTypeRenderers");
      if (result.isSetSuccess()) {
        return result.success;
      }
      if (result.unhandledException != null) {
        throw result.unhandledException;
      }
      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "setUserTypeRenderers failed: unknown result");
    }

    @Override
    public void changeVariable(java.lang.String evaluationExpression, java.lang.String value) throws PythonUnhandledException, org.apache.thrift.TException
    {
      send_changeVariable(evaluationExpression, value);
      recv_changeVariable();
    }

    public void send_changeVariable(java.lang.String evaluationExpression, java.lang.String value) throws org.apache.thrift.TException
    {
      changeVariable_args args = new changeVariable_args();
      args.setEvaluationExpression(evaluationExpression);
      args.setValue(value);
      sendBase("changeVariable", args);
    }

    public void recv_changeVariable() throws PythonUnhandledException, org.apache.thrift.TException
    {
      changeVariable_result result = new changeVariable_result();
      receiveBase(result, "changeVariable");
      if (result.unhandledException != null) {
        throw result.unhandledException;
      }
      return;
    }

    @Override
    public void connectToDebugger(int localPort, java.lang.String host, java.util.Map<java.lang.String,java.lang.Boolean> opts, java.util.Map<java.lang.String,java.lang.String> extraEnvs) throws PythonUnhandledException, org.apache.thrift.TException
    {
      send_connectToDebugger(localPort, host, opts, extraEnvs);
      recv_connectToDebugger();
    }

    public void send_connectToDebugger(int localPort, java.lang.String host, java.util.Map<java.lang.String,java.lang.Boolean> opts, java.util.Map<java.lang.String,java.lang.String> extraEnvs) throws org.apache.thrift.TException
    {
      connectToDebugger_args args = new connectToDebugger_args();
      args.setLocalPort(localPort);
      args.setHost(host);
      args.setOpts(opts);
      args.setExtraEnvs(extraEnvs);
      sendBase("connectToDebugger", args);
    }

    public void recv_connectToDebugger() throws PythonUnhandledException, org.apache.thrift.TException
    {
      connectToDebugger_result result = new connectToDebugger_result();
      receiveBase(result, "connectToDebugger");
      if (result.unhandledException != null) {
        throw result.unhandledException;
      }
      return;
    }

    @Override
    public void interrupt() throws org.apache.thrift.TException
    {
      send_interrupt();
      recv_interrupt();
    }

    public void send_interrupt() throws org.apache.thrift.TException
    {
      interrupt_args args = new interrupt_args();
      sendBase("interrupt", args);
    }

    public void recv_interrupt() throws org.apache.thrift.TException
    {
      interrupt_result result = new interrupt_result();
      receiveBase(result, "interrupt");
      return;
    }

    @Override
    public java.lang.String handshake() throws org.apache.thrift.TException
    {
      send_handshake();
      return recv_handshake();
    }

    public void send_handshake() throws org.apache.thrift.TException
    {
      handshake_args args = new handshake_args();
      sendBase("handshake", args);
    }

    public java.lang.String recv_handshake() throws org.apache.thrift.TException
    {
      handshake_result result = new handshake_result();
      receiveBase(result, "handshake");
      if (result.isSetSuccess()) {
        return result.success;
      }
      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "handshake failed: unknown result");
    }

    @Override
    public void close() throws org.apache.thrift.TException
    {
      send_close();
    }

    public void send_close() throws org.apache.thrift.TException
    {
      close_args args = new close_args();
      sendBaseOneway("close", args);
    }

    @Override
    public java.util.List<DebugValue> evaluate(java.lang.String expression, boolean doTrunc) throws PythonUnhandledException, org.apache.thrift.TException
    {
      send_evaluate(expression, doTrunc);
      return recv_evaluate();
    }

    public void send_evaluate(java.lang.String expression, boolean doTrunc) throws org.apache.thrift.TException
    {
      evaluate_args args = new evaluate_args();
      args.setExpression(expression);
      args.setDoTrunc(doTrunc);
      sendBase("evaluate", args);
    }

    public java.util.List<DebugValue> recv_evaluate() throws PythonUnhandledException, org.apache.thrift.TException
    {
      evaluate_result result = new evaluate_result();
      receiveBase(result, "evaluate");
      if (result.isSetSuccess()) {
        return result.success;
      }
      if (result.unhandledException != null) {
        throw result.unhandledException;
      }
      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "evaluate failed: unknown result");
    }

    @Override
    public GetArrayResponse getArray(java.lang.String vars, int rowOffset, int colOffset, int rows, int cols, java.lang.String format) throws UnsupportedArrayTypeException, ExceedingArrayDimensionsException, PythonUnhandledException, org.apache.thrift.TException
    {
      send_getArray(vars, rowOffset, colOffset, rows, cols, format);
      return recv_getArray();
    }

    public void send_getArray(java.lang.String vars, int rowOffset, int colOffset, int rows, int cols, java.lang.String format) throws org.apache.thrift.TException
    {
      getArray_args args = new getArray_args();
      args.setVars(vars);
      args.setRowOffset(rowOffset);
      args.setColOffset(colOffset);
      args.setRows(rows);
      args.setCols(cols);
      args.setFormat(format);
      sendBase("getArray", args);
    }

    public GetArrayResponse recv_getArray() throws UnsupportedArrayTypeException, ExceedingArrayDimensionsException, PythonUnhandledException, org.apache.thrift.TException
    {
      getArray_result result = new getArray_result();
      receiveBase(result, "getArray");
      if (result.isSetSuccess()) {
        return result.success;
      }
      if (result.unsupported != null) {
        throw result.unsupported;
      }
      if (result.exceedingDimensions != null) {
        throw result.exceedingDimensions;
      }
      if (result.unhandledException != null) {
        throw result.unhandledException;
      }
      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "getArray failed: unknown result");
    }

    @Override
    public void execDataViewerAction(java.lang.String varName, java.lang.String action, java.lang.String myArgs) throws PythonUnhandledException, org.apache.thrift.TException
    {
      send_execDataViewerAction(varName, action, myArgs);
      recv_execDataViewerAction();
    }

    public void send_execDataViewerAction(java.lang.String varName, java.lang.String action, java.lang.String myArgs) throws org.apache.thrift.TException
    {
      execDataViewerAction_args args = new execDataViewerAction_args();
      args.setVarName(varName);
      args.setAction(action);
      args.setMyArgs(myArgs);
      sendBase("execDataViewerAction", args);
    }

    public void recv_execDataViewerAction() throws PythonUnhandledException, org.apache.thrift.TException
    {
      execDataViewerAction_result result = new execDataViewerAction_result();
      receiveBase(result, "execDataViewerAction");
      if (result.unhandledException != null) {
        throw result.unhandledException;
      }
      return;
    }

    @Override
    public void loadFullValue(int seq, java.util.List<java.lang.String> variables) throws PythonUnhandledException, org.apache.thrift.TException
    {
      send_loadFullValue(seq, variables);
      recv_loadFullValue();
    }

    public void send_loadFullValue(int seq, java.util.List<java.lang.String> variables) throws org.apache.thrift.TException
    {
      loadFullValue_args args = new loadFullValue_args();
      args.setSeq(seq);
      args.setVariables(variables);
      sendBase("loadFullValue", args);
    }

    public void recv_loadFullValue() throws PythonUnhandledException, org.apache.thrift.TException
    {
      loadFullValue_result result = new loadFullValue_result();
      receiveBase(result, "loadFullValue");
      if (result.unhandledException != null) {
        throw result.unhandledException;
      }
      return;
    }

    @Override
    public java.lang.String execRaw(java.lang.String command) throws PythonUnhandledException, org.apache.thrift.TException
    {
      send_execRaw(command);
      return recv_execRaw();
    }

    public void send_execRaw(java.lang.String command) throws org.apache.thrift.TException
    {
      execRaw_args args = new execRaw_args();
      args.setCommand(command);
      sendBase("execRaw", args);
    }

    public java.lang.String recv_execRaw() throws PythonUnhandledException, org.apache.thrift.TException
    {
      execRaw_result result = new execRaw_result();
      receiveBase(result, "execRaw");
      if (result.isSetSuccess()) {
        return result.success;
      }
      if (result.unhandledException != null) {
        throw result.unhandledException;
      }
      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "execRaw failed: unknown result");
    }

    @Override
    public java.lang.String execTableCommand(java.lang.String tableVariable, java.lang.String commandType, java.lang.String startIndex, java.lang.String endIndex, java.lang.String format) throws PythonUnhandledException, PythonTableException, org.apache.thrift.TException
    {
      send_execTableCommand(tableVariable, commandType, startIndex, endIndex, format);
      return recv_execTableCommand();
    }

    public void send_execTableCommand(java.lang.String tableVariable, java.lang.String commandType, java.lang.String startIndex, java.lang.String endIndex, java.lang.String format) throws org.apache.thrift.TException
    {
      execTableCommand_args args = new execTableCommand_args();
      args.setTableVariable(tableVariable);
      args.setCommandType(commandType);
      args.setStartIndex(startIndex);
      args.setEndIndex(endIndex);
      args.setFormat(format);
      sendBase("execTableCommand", args);
    }

    public java.lang.String recv_execTableCommand() throws PythonUnhandledException, PythonTableException, org.apache.thrift.TException
    {
      execTableCommand_result result = new execTableCommand_result();
      receiveBase(result, "execTableCommand");
      if (result.isSetSuccess()) {
        return result.success;
      }
      if (result.unhandledException != null) {
        throw result.unhandledException;
      }
      if (result.tableException != null) {
        throw result.tableException;
      }
      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "execTableCommand failed: unknown result");
    }

    @Override
    public java.lang.String execTableImageCommand(java.lang.String tableVariable, java.lang.String commandType, java.lang.String offset, java.lang.String imageId) throws PythonUnhandledException, PythonTableException, org.apache.thrift.TException
    {
      send_execTableImageCommand(tableVariable, commandType, offset, imageId);
      return recv_execTableImageCommand();
    }

    public void send_execTableImageCommand(java.lang.String tableVariable, java.lang.String commandType, java.lang.String offset, java.lang.String imageId) throws org.apache.thrift.TException
    {
      execTableImageCommand_args args = new execTableImageCommand_args();
      args.setTableVariable(tableVariable);
      args.setCommandType(commandType);
      args.setOffset(offset);
      args.setImageId(imageId);
      sendBase("execTableImageCommand", args);
    }

    public java.lang.String recv_execTableImageCommand() throws PythonUnhandledException, PythonTableException, org.apache.thrift.TException
    {
      execTableImageCommand_result result = new execTableImageCommand_result();
      receiveBase(result, "execTableImageCommand");
      if (result.isSetSuccess()) {
        return result.success;
      }
      if (result.unhandledException != null) {
        throw result.unhandledException;
      }
      if (result.tableException != null) {
        throw result.tableException;
      }
      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "execTableImageCommand failed: unknown result");
    }

  }
  public static class AsyncClient extends org.apache.thrift.async.TAsyncClient implements AsyncIface {
    public static class Factory implements org.apache.thrift.async.TAsyncClientFactory<AsyncClient> {
      private org.apache.thrift.async.TAsyncClientManager clientManager;
      private org.apache.thrift.protocol.TProtocolFactory protocolFactory;
      public Factory(org.apache.thrift.async.TAsyncClientManager clientManager, org.apache.thrift.protocol.TProtocolFactory protocolFactory) {
        this.clientManager = clientManager;
        this.protocolFactory = protocolFactory;
      }
    @Override
      public AsyncClient getAsyncClient(org.apache.thrift.transport.TNonblockingTransport transport) {
        return new AsyncClient(protocolFactory, clientManager, transport);
      }
    }

    public AsyncClient(org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.async.TAsyncClientManager clientManager, org.apache.thrift.transport.TNonblockingTransport transport) {
      super(protocolFactory, clientManager, transport);
    }

    @Override
    public void execLine(java.lang.String line, org.apache.thrift.async.AsyncMethodCallback<java.lang.Boolean> resultHandler) throws org.apache.thrift.TException {
      checkReady();
      execLine_call method_call = new execLine_call(line, resultHandler, this, ___protocolFactory, ___transport);
      this.___currentMethod = method_call;
      ___manager.call(method_call);
    }

    public static class execLine_call extends org.apache.thrift.async.TAsyncMethodCall<java.lang.Boolean> {
      private java.lang.String line;
      public execLine_call(java.lang.String line, org.apache.thrift.async.AsyncMethodCallback<java.lang.Boolean> resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
        super(client, protocolFactory, transport, resultHandler, false);
        this.line = line;
      }

      @Override
      public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("execLine", org.apache.thrift.protocol.TMessageType.CALL, 0));
        execLine_args args = new execLine_args();
        args.setLine(line);
        args.write(prot);
        prot.writeMessageEnd();
      }

      @Override
      public java.lang.Boolean getResult() throws PythonUnhandledException, org.apache.thrift.TException {
        if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
          throw new java.lang.IllegalStateException("Method call not finished!");
        }
        org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
        org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
        return (new Client(prot)).recv_execLine();
      }
    }

    @Override
    public void execMultipleLines(java.lang.String lines, org.apache.thrift.async.AsyncMethodCallback<java.lang.Boolean> resultHandler) throws org.apache.thrift.TException {
      checkReady();
      execMultipleLines_call method_call = new execMultipleLines_call(lines, resultHandler, this, ___protocolFactory, ___transport);
      this.___currentMethod = method_call;
      ___manager.call(method_call);
    }

    public static class execMultipleLines_call extends org.apache.thrift.async.TAsyncMethodCall<java.lang.Boolean> {
      private java.lang.String lines;
      public execMultipleLines_call(java.lang.String lines, org.apache.thrift.async.AsyncMethodCallback<java.lang.Boolean> resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
        super(client, protocolFactory, transport, resultHandler, false);
        this.lines = lines;
      }

      @Override
      public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
