Class AbstractJythonSequence

java.lang.Object
org.python.core.PyObject
org.python.core.PySequence
com.inductiveautomation.ignition.common.script.abc.AbstractJythonSequence
All Implemented Interfaces:
JythonSequence, Serializable
Direct Known Subclasses:
AbstractMutableJythonSequence, DatasetUtilities.PyDataSet, DatasetUtilities.PyDataSet.PyRow, Results.PyWrapper

public abstract class AbstractJythonSequence extends org.python.core.PySequence implements JythonSequence
Base class to pretend to be a Jython "sequence", aka a Pythonic list. If you don't want to implement a method, leave it a no-op but add PyIgnoreMethodTag to the throws declaration, which will prevent it from being exposed to Jython.
See Also:
  • Nested Class Summary

    Nested classes/interfaces inherited from class org.python.core.PySequence

    org.python.core.PySequence.DefaultIndexDelegate

    Nested classes/interfaces inherited from class org.python.core.PyObject

    org.python.core.PyObject.ConversionException
  • Field Summary

    Fields inherited from class org.python.core.PySequence

    delegator

    Fields inherited from class org.python.core.PyObject

    attributes, gcMonitorGlobal, objtype, TYPE
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    abstract org.python.core.PyObject
    __add__(org.python.core.PyObject other)
     
    org.python.core.PyObject
    __mul__(org.python.core.PyObject other)
    Override to allow this sequence to work with the * operator.
    org.python.core.PyString
     
    org.python.core.PyObject
    __rmul__(org.python.core.PyObject other)
    Override to allow extending.
    org.python.core.PyString
     
    protected org.python.core.PyObject
    getslice(int start, int stop, int step)
    Retrieve a 'slice' of this sequence; from start (inclusive) to stop (exclusive), stepping by step.
    boolean
     
    boolean
     
    boolean
     
    protected abstract org.python.core.PyObject
    pyget(int index)
     
    protected abstract org.python.core.PyObject
    repeat(int count)
    Implements the repeat operation, which is used by Jython when performing sequence * count, which returns a new list containing sequence * count items.
    protected abstract List<? extends org.python.core.PyObject>
    sublist(int start, int stop)
    Retrieve a subset of this sequence, from start (inclusive) to stop (exclusive).
     

    Methods inherited from class org.python.core.PySequence

    __delitem__, __delslice__, __eq__, __finditem__, __finditem__, __ge__, __getitem__, __getslice__, __gt__, __iter__, __le__, __lt__, __ne__, __nonzero__, __setitem__, __setitem__, __setslice__, __tojava__, boundToSequence, cmp, del, delRange, delslice, fastSequence, isSubType, pyset, runsupportedopMessage, setslice, sliceLength, unsupportedopMessage

    Methods inherited from class org.python.core.PyObject

    __abs__, __and__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __cmp__, __coerce__, __coerce_ex__, __complex__, __contains__, __delattr__, __delattr__, __delete__, __delitem__, __delslice__, __dir__, __div__, __divmod__, __ensure_finalizer__, __findattr__, __findattr__, __findattr_ex__, __finditem__, __float__, __floordiv__, __format__, __get__, __getattr__, __getattr__, __getitem__, __getnewargs__, __getslice__, __hash__, __hex__, __iadd__, __iand__, __idiv__, __idivmod__, __ifloordiv__, __ilshift__, __imod__, __imul__, __index__, __int__, __invert__, __ior__, __ipow__, __irshift__, __isub__, __iternext__, __itruediv__, __ixor__, __len__, __long__, __lshift__, __mod__, __neg__, __not__, __oct__, __or__, __pos__, __pow__, __pow__, __radd__, __rand__, __rawdir__, __rdiv__, __rdivmod__, __reduce__, __reduce_ex__, __reduce_ex__, __rfloordiv__, __rlshift__, __rmod__, __ror__, __rpow__, __rrshift__, __rshift__, __rsub__, __rtruediv__, __rxor__, __set__, __setattr__, __setattr__, __setitem__, __setslice__, __sub__, __truediv__, __trunc__, __unicode__, __xor__, _add, _and, _callextra, _cmp, _div, _divmod, _doget, _doget, _doset, _eq, _floordiv, _ge, _gt, _iadd, _iand, _idiv, _idivmod, _ifloordiv, _ilshift, _imod, _imul, _in, _ior, _ipow, _irshift, _is, _isnot, _isub, _itruediv, _ixor, _jcall, _jcallexc, _jthrow, _le, _lshift, _lt, _mod, _mul, _ne, _notin, _or, _pow, _rshift, _sub, _truediv, _unsupportedop, _xor, adaptToCoerceTuple, asDouble, asIndex, asIndex, asInt, asInt, asIterable, asLong, asLong, asName, asName, asString, asString, asStringOrNull, asStringOrNull, bit_length, conjugate, delDict, delType, dispatch__init__, equals, fastGetClass, fastGetDict, finalize, getDict, getJavaProxy, getType, hashCode, impAttr, implementsDescrDelete, implementsDescrGet, implementsDescrSet, invoke, invoke, invoke, invoke, invoke, invoke, isCallable, isDataDescr, isIndex, isInteger, mergeClassDict, mergeDictAttr, mergeListAttr, noAttributeError, object___subclasshook__, readonlyAttributeError, setDict, setType

    Methods inherited from class java.lang.Object

    clone, getClass, notify, notifyAll, wait, wait, wait

    Methods inherited from interface com.inductiveautomation.ignition.common.script.abc.JythonSequence

    __contains__, __iter__, __len__, count, index
  • Constructor Details

    • AbstractJythonSequence

      public AbstractJythonSequence(Class<?> clazz)
      Parameters:
      clazz - A reference to your implementing class - can't use getClass since the type is used in some Jython reflection stuff that happens on initialization.
  • Method Details

    • pyget

      protected abstract org.python.core.PyObject pyget(int index)
      Specified by:
      pyget in class org.python.core.PySequence
    • getslice

      protected org.python.core.PyObject getslice(int start, int stop, int step)
      Retrieve a 'slice' of this sequence; from start (inclusive) to stop (exclusive), stepping by step. Will delegate to pyget(int) and sublist(int, int), and handle negative indices appropriately.
      Specified by:
      getslice in class org.python.core.PySequence
      Returns:
      A new list from specified elements of the original sequence.
    • sublist

      protected abstract List<? extends org.python.core.PyObject> sublist(int start, int stop)
      Retrieve a subset of this sequence, from start (inclusive) to stop (exclusive).
      See Also:
    • repeat

      protected abstract org.python.core.PyObject repeat(int count)
      Implements the repeat operation, which is used by Jython when performing sequence * count, which returns a new list containing sequence * count items. If count is <= 0, returns an empty sequence, ideally of the same type.
      Specified by:
      repeat in class org.python.core.PySequence
      Parameters:
      count - The number of times to repeat the sequence in the output.
    • __add__

      public abstract org.python.core.PyObject __add__(org.python.core.PyObject other)
      Overrides:
      __add__ in class org.python.core.PyObject
    • __mul__

      public org.python.core.PyObject __mul__(org.python.core.PyObject other) throws org.python.core.PyIgnoreMethodTag
      Description copied from interface: JythonSequence
      Override to allow this sequence to work with the * operator. Does not mutate this sequence.
      Specified by:
      __mul__ in interface JythonSequence
      Overrides:
      __mul__ in class org.python.core.PyObject
      Returns:
      the result of the mul, or null if this operation is not defined
      Throws:
      org.python.core.PyIgnoreMethodTag
    • __rmul__

      public org.python.core.PyObject __rmul__(org.python.core.PyObject other)
      Description copied from interface: JythonSequence
      Override to allow extending. This is distinct from JythonSequence.__mul__(org.python.core.PyObject) in that __rmul__ is called if the left operator in an multiplication expression doesn't support the given type - in that case, the right operator is given an opportunity to attempt the multiplication. Does not mutate this sequence.
      Specified by:
      __rmul__ in interface JythonSequence
      Overrides:
      __rmul__ in class org.python.core.PyObject
      Returns:
      the result of the mul, or null if this operation is not defined
    • isSequenceType

      public boolean isSequenceType() throws org.python.core.PyIgnoreMethodTag
      Overrides:
      isSequenceType in class org.python.core.PySequence
      Throws:
      org.python.core.PyIgnoreMethodTag
    • isMappingType

      public boolean isMappingType() throws org.python.core.PyIgnoreMethodTag
      Overrides:
      isMappingType in class org.python.core.PySequence
      Throws:
      org.python.core.PyIgnoreMethodTag
    • isNumberType

      public boolean isNumberType() throws org.python.core.PyIgnoreMethodTag
      Overrides:
      isNumberType in class org.python.core.PySequence
      Throws:
      org.python.core.PyIgnoreMethodTag
    • __repr__

      public org.python.core.PyString __repr__()
      Specified by:
      __repr__ in interface JythonSequence
      Overrides:
      __repr__ in class org.python.core.PyObject
      Returns:
      a string containing a printable representation of this object. If practical, should match the evaluation format of a Python list - [item, item, item]
    • __str__

      public org.python.core.PyString __str__()
      Overrides:
      __str__ in class org.python.core.PyObject
    • toString

      public String toString() throws org.python.core.PyIgnoreMethodTag
      Overrides:
      toString in class org.python.core.PyObject
      Throws:
      org.python.core.PyIgnoreMethodTag