Class PythonScopeJpyImpl

java.lang.Object
io.deephaven.engine.util.PythonScopeJpyImpl
All Implemented Interfaces:
PythonScope<org.jpy.PyObject>

public class PythonScopeJpyImpl extends Object implements PythonScope<org.jpy.PyObject>
  • Constructor Details

    • PythonScopeJpyImpl

      public PythonScopeJpyImpl(org.jpy.PyDictWrapper dict)
  • Method Details

    • setCacheEnabled

      public static void setCacheEnabled(boolean enabled)
    • ofMainGlobals

      public static PythonScopeJpyImpl ofMainGlobals()
    • currentScope

      public org.jpy.PyDictWrapper currentScope()
      Specified by:
      currentScope in interface PythonScope<org.jpy.PyObject>
      Returns:
      the current scope or the main globals if no scope is set
    • getValueRaw

      public Optional<org.jpy.PyObject> getValueRaw(String name)
      Description copied from interface: PythonScope
      Retrieves a value from the given scope.

      No conversion is done.

      Specified by:
      getValueRaw in interface PythonScope<org.jpy.PyObject>
      Parameters:
      name - the name of the python variable
      Returns:
      the value, or empty
    • containsKey

      public boolean containsKey(String name)
      Description copied from interface: PythonScope
      Finds out if a variable is in scope
      Specified by:
      containsKey in interface PythonScope<org.jpy.PyObject>
      Parameters:
      name - the name of the python variable
      Returns:
      true iff the scope contains the variable
    • convertStringKey

      public String convertStringKey(org.jpy.PyObject key)
      Description copied from interface: PythonScope
      The helper method to turn a raw key into a string key.

      Note: this assumes that all the keys are strings, which is not always true. Indices can also be tuples. TODO: revise interface as appropriate if this becomes an issue.

      Specified by:
      convertStringKey in interface PythonScope<org.jpy.PyObject>
      Parameters:
      key - the raw key
      Returns:
      the string key
    • convertValue

      public Object convertValue(org.jpy.PyObject value)
      Description copied from interface: PythonScope
      The helper method to turn a raw value into an implementation specific object.

      This method should NOT convert PyObj of None type to null - we need to preserve the None object so it works with other Optional return values.

      Specified by:
      convertValue in interface PythonScope<org.jpy.PyObject>
      Parameters:
      value - the raw value
      Returns:
      the converted object value
    • convert

      public static Object convert(org.jpy.PyObject pyObject)
      Converts a pyObject into an appropriate Java object for use outside of JPy.

      If we're a List, Dictionary, or Callable, then we wrap them in a java object.

      If it is a primitive (or a wrapped Java object); we convert it to the java object.

      Otherwise we return the raw PyObject and the user can do with it what they will.

      Parameters:
      pyObject - the JPy wrapped PyObject.
      Returns:
      a Java object representing the underlying JPy object.
    • mainGlobals

      public org.jpy.PyDictWrapper mainGlobals()
      Specified by:
      mainGlobals in interface PythonScope<org.jpy.PyObject>
      Returns:
      the Python's __main__ module namespace
    • pushScope

      public void pushScope(org.jpy.PyObject pydict)
      Description copied from interface: PythonScope
      Push the provided Python scope into the thread scope stack for subsequent operations on Tables
      Specified by:
      pushScope in interface PythonScope<org.jpy.PyObject>
      Parameters:
      pydict - a Python dictionary representing the current scope under which the Python code in running, it is the combination of module globals and function locals
    • popScope

      public void popScope()
      Description copied from interface: PythonScope
      Pop the last Python scope pushed by PythonScope.pushScope(PyObject pydict) from the thread scope stack
      Specified by:
      popScope in interface PythonScope<org.jpy.PyObject>