HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
PY_Python.h File Reference
#include "PY_API.h"
#include "PY_Result.h"
#include <UT/UT_String.h>
+ Include dependency graph for PY_Python.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

PY_API PY_Result PYrunPythonExpression (const char *python_code, PY_Result::Type desired_result_type, PY_EvaluationContext *context=NULL)
 
PY_API PY_Result PYrunPythonExpressionInNewContext (const char *python_code, PY_Result::Type desired_result_type)
 
PY_API PY_Result PYrunPythonExpressionAndExpectNoErrors (const char *python_code, PY_Result::Type desired_result_type, const char *heading=NULL, PY_EvaluationContext *context=NULL)
 
PY_API bool PYrunPythonExpressionOfExactType (const char *python_code, PY_Result::Type desired_result_type, PY_Result &result, const char *error_heading, const char *error_for_wrong_type, PY_EvaluationContext *context=NULL)
 
PY_API PY_Result PYrunPythonStatements (const char *python_code, PY_EvaluationContext *context=NULL)
 
PY_API PY_Result PYrunPythonStatementsInNewContext (const char *python_code)
 
PY_API PY_Result PYrunPythonStatements (const char *python_code, int argc, char *argv[], PY_EvaluationContext *context=NULL)
 
PY_API bool PYrunPythonStatementsAndExpectNoErrors (const char *python_code, const char *heading=NULL, PY_EvaluationContext *context=NULL)
 
PY_API bool PYrunPythonStatementsInNewContextAndExpectNoErrors (const char *python_code, const char *heading=NULL)
 
PY_API PY_Result PYrunPythonStatementsFromFile (const char *filename, PY_EvaluationContext *context=NULL)
 
PY_API PY_Result PYrunPythonStatementsFromFile (int argc, char *argv[], PY_EvaluationContext *context=NULL)
 
PY_API UT_String PYrunPythonStatementsInNewThread (const char *python_code)
 
PY_API UT_String PYrunPythonStatementsFromFileInNewThread (const char *file_name)
 
PY_API UT_String PYrunPythonStatementsFromFileInNewThread (int argc, char *argv[])
 
PY_API PY_Result PYextractPythonException ()
 
PY_API PY_Result PYextractResultFromPythonObject (void *opaque_python_object, PY_Result::Type desired_result_type)
 
PY_API void PYextractResultFromPythonObject (void *opaque_python_object, PY_Result::Type desired_result_type, PY_Result &result)
 
PY_API voidPYcallObjectAndCatchCrashes (void *callable)
 
PY_API PY_EvaluationContextPYgetPythonExpressionEvaluationContext ()
 
PY_API PY_Result PYimportModuleFromString (const char *module_name, const char *module_contents)
 
PY_API voidPYgetCodeObjectForPrevFrame ()
 
PY_API voidPYgetCodeObjectForFunction (void *opaque_python_object)
 Return a PyCodeObject * corresponding to the specified PyObject. More...
 
PY_API void PYsetPythonTracebackDisplayCallback (void(*callback)(const char *heading, const char *error_message))
 
PY_API void PYdisplayPythonTraceback (const char *heading, const char *traceback_message)
 
PY_API void PYsetAutoInitializeFromPython (bool auto_initialize)
 
PY_API bool PYautoInitializeFromPython ()
 
PY_API const char * PYgetHoudiniModulePath ()
 Returns the absolute path to Houdini's Python modules. More...
 

Function Documentation

PY_API bool PYautoInitializeFromPython ( )

This function is used by PY_InterpreterAutoLock to determine if it should automatically import the hou module

PY_API void* PYcallObjectAndCatchCrashes ( void callable)

Given an (opaque) callable Python object, call it with no arguments and return its Python object result. If an exception occurred, it remains set in the Python interpreter and this function returns null. This function behaves much like calling PyObject_CallObject with a null argument parameter, but the difference is that if calling the code generates a crash, the signal is caught, an exception is set, and this function returns null.

PY_API void PYdisplayPythonTraceback ( const char *  heading,
const char *  traceback_message 
)

Display a Python traceback with a given heading. If the traceback display callback was set, it will be used to display the traceback.

PY_API PY_Result PYextractPythonException ( )

Return the python result containing a stack trace and exception information. If no exception occurred, the result type is none.

PY_API PY_Result PYextractResultFromPythonObject ( void opaque_python_object,
PY_Result::Type  desired_result_type 
)

Given a python object and a desired type, try to convert it to that type. python_object should be a PyObject*, but it's a void* to avoid having to include Python.h from here.

There are two versions: a performance-sensitive version that takes the return PY_Result object by reference, and a convenience version one that returns it by value.

PY_API void PYextractResultFromPythonObject ( void opaque_python_object,
PY_Result::Type  desired_result_type,
PY_Result result 
)
PY_API void* PYgetCodeObjectForFunction ( void opaque_python_object)

Return a PyCodeObject * corresponding to the specified PyObject.

PY_API void* PYgetCodeObjectForPrevFrame ( )

Return a PyCodeObject * corresponding to the frame before the current eval frame.

PY_API const char* PYgetHoudiniModulePath ( )

Returns the absolute path to Houdini's Python modules.

PY_API PY_EvaluationContext& PYgetPythonExpressionEvaluationContext ( )

We don't want to have to prefix things with "hou." in expressions. So, we create a separate evaluation context for expressions where "from hou import *" has been run.

PY_API PY_Result PYimportModuleFromString ( const char *  module_name,
const char *  module_contents 
)

Given a string containing the contents of a module and the module's name, compile the string and import that as a module. If no exception occurred, the result type is none.

PY_API PY_Result PYrunPythonExpression ( const char *  python_code,
PY_Result::Type  desired_result_type,
PY_EvaluationContext context = NULL 
)

Expressions cannot contain multiple statements (defs, classes, print statements, etc.) and they cannot contain multiple expressions. The *InNewContext version creates a new PY_EvaluationContext, run the Python code inside it, and destroys the context afterward.

PY_API PY_Result PYrunPythonExpressionAndExpectNoErrors ( const char *  python_code,
PY_Result::Type  desired_result_type,
const char *  heading = NULL,
PY_EvaluationContext context = NULL 
)

Evaluate a Python expression that should not generate any exceptions. If an exception is raised the traceback will be displayed to the user, prefixed by the specified heading.

PY_API PY_Result PYrunPythonExpressionInNewContext ( const char *  python_code,
PY_Result::Type  desired_result_type 
)
PY_API bool PYrunPythonExpressionOfExactType ( const char *  python_code,
PY_Result::Type  desired_result_type,
PY_Result result,
const char *  error_heading,
const char *  error_for_wrong_type,
PY_EvaluationContext context = NULL 
)

Evaluate a Python expression that should not generate any exceptions and should evaluate to an exact type. If an exception is raised a traceback is displayed with the specified heading. If the wrong type is returned, the specified error message is displayed with the heading. Returns true on success and stores the result in "result".

PY_API PY_Result PYrunPythonStatements ( const char *  python_code,
PY_EvaluationContext context = NULL 
)

The result type from running statements in the current thread can be none (indicating normal completion), error, or exit. The *InNewContext version creates a new PY_EvaluationContext, run the Python code inside it, and destroys the context afterward.

PY_API PY_Result PYrunPythonStatements ( const char *  python_code,
int  argc,
char *  argv[],
PY_EvaluationContext context = NULL 
)

This version of PYrunPythonStatements will set Python's sys.argv to the arguments you supply. argv[0] will be the name of the Python file.

PY_API bool PYrunPythonStatementsAndExpectNoErrors ( const char *  python_code,
const char *  heading = NULL,
PY_EvaluationContext context = NULL 
)

Run Python code that should not generate any exceptions. If an exception is raised the traceback will be displayed to the user, prefixed by the specified heading.

Examples:
HOM/ObjNode_setSelectable.C.
PY_API PY_Result PYrunPythonStatementsFromFile ( const char *  filename,
PY_EvaluationContext context = NULL 
)

The argv version of PYrunPythonStatementsFromFile will set Python's sys.argv to the arguments you supply. argv[0] will be the name of the Python file.

PY_API PY_Result PYrunPythonStatementsFromFile ( int  argc,
char *  argv[],
PY_EvaluationContext context = NULL 
)
PY_API UT_String PYrunPythonStatementsFromFileInNewThread ( const char *  file_name)
PY_API UT_String PYrunPythonStatementsFromFileInNewThread ( int  argc,
char *  argv[] 
)
PY_API PY_Result PYrunPythonStatementsInNewContext ( const char *  python_code)
PY_API bool PYrunPythonStatementsInNewContextAndExpectNoErrors ( const char *  python_code,
const char *  heading = NULL 
)
PY_API UT_String PYrunPythonStatementsInNewThread ( const char *  python_code)

A non-empty string is returned if there are parse errors, a new thread could not be started, or the file could not be loaded.

PY_API void PYsetAutoInitializeFromPython ( bool  auto_initialize)

This function controls whether running Python code automatically sets the HOM_Module implementation (by importing the hou Python module). Call PYsetAutoInitializeFromPython to false if you don't hou to be imported automatically; otherwise, it will. You must call this static method before running any Python code. Once any Python code is run, this setting has no effect.

PY_API void PYsetPythonTracebackDisplayCallback ( void(*)(const char *heading, const char *error_message)  callback)

Set a callback that will be invoked by PYrunPython*AndExpectNoErrors whenever an error occurs. If this callback is not set, the errors will be printed to the console. This callback provides an opportunity to pop up a dialog to display the errors.