Package weka.core

# Class Jython

java.lang.Object
weka.core.Jython

All Implemented Interfaces:
  `Serializable`, `RevisionHandler`

public class Jython extends Object implements Serializable, RevisionHandler
A helper class for Jython.

Version:
  $Revision: 1.2 $
Author:
  fracpete (fracpete at waikato dot ac dot nz)
See Also:
  - Serialized Form

## Field Summary

Fields
Modifier and Type
Field
Description
`static final String`
`CLASS_PYTHONINERPRETER`
the classname of the Python interpreter
`static final String`
`CLASS_PYTHONOBJECTINPUTSTREAM`
the classname of the Python ObjectInputStream

## Constructor Summary

Constructors
Constructor
Description
`Jython()`
default constructor, tries to instantiate a Python Interpreter

## Method Summary

Modifier and Type
Method
Description
`static Object`
`deserialize(InputStream in)`
deserializes the Python Object from the stream
`Object`
`getInterpreter()`
returns the currently used Python Interpreter
`String`
`getRevision()`
Returns the revision string.
`static Object`
`invoke(Object o, String methodName, Class[] paramClasses, Object[] paramValues)`
executes the specified method and returns the result, if any
`Object`
`invoke(String methodName, Class[] paramClasses, Object[] paramValues)`
executes the specified method on the current interpreter and returns the result, if any
`static boolean`
`isPresent()`
returns whether the Jython classes are present or not, i.e.
`static void`
`main(String[] args)`
If no arguments are given, it just prints the presence of the Jython classes, otherwise it expects a Jython filename to execute.
`static Object`
`newInstance(File file, Class template)`
loads the module and returns a new instance of it as instance of the provided Java class template.
`static Object`
`newInstance(File file, Class template, File[] paths)`
loads the module and returns a new instance of it as instance of the provided Java class template.
`static Object`
`newInterpreter()`
initializes and returns a Python Interpreter

### Methods inherited from class java.lang.Object

`equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Field Details

### CLASS_PYTHONINERPRETER

public static final String CLASS_PYTHONINERPRETER
the classname of the Python interpreter

See Also:
  - Constant Field Values

### CLASS_PYTHONOBJECTINPUTSTREAM

public static final String CLASS_PYTHONOBJECTINPUTSTREAM
the classname of the Python ObjectInputStream

See Also:
  - Constant Field Values

## Constructor Details

### Jython

public Jython()
default constructor, tries to instantiate a Python Interpreter

## Method Details

### getInterpreter

public Object getInterpreter()
returns the currently used Python Interpreter

Returns:
  the interpreter, can be null

### invoke

public Object invoke(String methodName, Class[] paramClasses, Object[] paramValues)
executes the specified method on the current interpreter and returns the result, if any

Parameters:
  `methodName` - the name of the method
  `paramClasses` - the classes of the parameters
  `paramValues` - the values of the parameters
  `o` - the object the method should be called from, e.g., a Python Interpreter
Returns:
  the return value of the method, if any (in that case null)

### isPresent

public static boolean isPresent()
returns whether the Jython classes are present or not, i.e. whether the classes are in the classpath or not

Returns:
  whether the Jython classes are available

### newInterpreter

public static Object newInterpreter()
initializes and returns a Python Interpreter

Returns:
  the interpreter or null if Jython classes not present

### newInstance

public static Object newInstance(File file, Class template)
loads the module and returns a new instance of it as instance of the provided Java class template.

Parameters:
  `template` - the template for the returned Java object
  `filename` - the path to the Jython module, incl. filename
Returns:
  the Jython object

### newInstance

public static Object newInstance(File file, Class template, File[] paths)
loads the module and returns a new instance of it as instance of the provided Java class template. The paths are added to 'sys.path' - can be used if the module depends on other Jython modules.

Parameters:
  `template` - the template for the returned Java object
  `paths` - additional paths to add to "sys.path"
  `filename` - the path to the Jython module, incl. filename
Returns:
  the Jython object

### invoke

public static Object invoke(Object o, String methodName, Class[] paramClasses, Object[] paramValues)
executes the specified method and returns the result, if any

Parameters:
  `o` - the object the method should be called from, e.g., a Python Interpreter
  `methodName` - the name of the method
  `paramClasses` - the classes of the parameters
  `paramValues` - the values of the parameters
Returns:
  the return value of the method, if any (in that case null)

### deserialize

public static Object deserialize(InputStream in)
deserializes the Python Object from the stream

Parameters:
  `in` - the stream to use
Returns:
  the deserialized object

### getRevision

public String getRevision()
Returns the revision string.

Specified by:
  `getRevision` in interface `RevisionHandler`
Returns:
  the revision

### main

public static void main(String[] args)
If no arguments are given, it just prints the presence of the Jython classes, otherwise it expects a Jython filename to execute.

Parameters:
  `args` - commandline arguments