Class PythonScopeJpyImpl

java.lang.Object
com.illumon.iris.db.util.PythonScopeJpyImpl
All Implemented Interfaces:
PythonScope<org.jpy.PyObject>

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

  • Method Details

    • 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
    • getKeysRaw

      public Stream<org.jpy.PyObject> getKeysRaw()
      Description copied from interface: PythonScope
      Retrieves all keys from the give scope.

      No conversion is done.

      Technically, the keys can be tuples...

      Specified by:
      getKeysRaw in interface PythonScope<org.jpy.PyObject>
      Returns:
      the keys
    • getEntriesRaw

      public Stream<Map.Entry<org.jpy.PyObject,​org.jpy.PyObject>> getEntriesRaw()
      Description copied from interface: PythonScope
      Retrieves all keys and values from the given scope.

      No conversion is done.

      Specified by:
      getEntriesRaw in interface PythonScope<org.jpy.PyObject>
      Returns:
      the keys and values
    • 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. Keys 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.
    • globals

      public org.jpy.PyDictWrapper globals()
      Specified by:
      globals in interface PythonScope<org.jpy.PyObject>