{
   <insert a suppression name here>
   Memcheck:Leak
   fun:_Znam
   fun:_Z21SWIG_AsCharPtrAndSizeP7_objectPPcPmPi
   fun:var_pcharc_set
   fun:swig_varlink_setattr
   fun:PyObject_SetAttr
   fun:PyEval_EvalFrame
   fun:PyEval_EvalCodeEx
   fun:PyEval_EvalCode
   fun:PyRun_FileExFlags
   fun:PyRun_SimpleFileExFlags
   fun:Py_Main
   fun:__libc_start_main
}
{
   <insert a suppression name here>
   Memcheck:Leak
   fun:_Znam
   fun:var_pchar_set
   fun:swig_varlink_setattr
   fun:PyObject_SetAttr
   fun:PyEval_EvalFrame
   fun:PyEval_EvalCodeEx
   fun:PyEval_EvalCode
   fun:PyRun_FileExFlags
   fun:PyRun_SimpleFileExFlags
   fun:Py_Main
   fun:__libc_start_main
}
{
   <insert a suppression name here>
   Memcheck:Leak
   fun:_Znam
   fun:_wrap_Test_var_pcharc_set
   fun:PyEval_EvalFrame
   fun:PyEval_EvalCodeEx
   fun:PyEval_EvalFrame
   fun:PyEval_EvalFrame
   fun:PyEval_EvalCodeEx
   fun:function_call
   fun:PyObject_Call
   fun:PyEval_CallObjectWithKeywords
   fun:instance_setattr
   fun:PyObject_SetAttr
}
{
   <insert a suppression name here>
   Memcheck:Leak
   fun:_Znam
   fun:_wrap_TestDirector_var_pcharc_set
   fun:PyEval_EvalFrame
   fun:PyEval_EvalCodeEx
   fun:PyEval_EvalFrame
   fun:PyEval_EvalFrame
   fun:PyEval_EvalCodeEx
   fun:function_call
   fun:PyObject_Call
   fun:instancemethod_call
   fun:PyObject_Call
   fun:call_method
}
{
   <insert a suppression name here>
   Memcheck:Leak
   fun:_Znam
   fun:_Z21SWIG_AsCharPtrAndSizeP7_objectPPcPmPi
   fun:var_pcharc_set
   fun:swig_varlink_setattr
   fun:PyObject_SetAttr
   fun:PyEval_EvalFrame
   fun:PyEval_EvalCodeEx
   fun:PyEval_EvalCode
   fun:PyRun_FileExFlags
   fun:PyRun_SimpleFileExFlags
   fun:Py_Main
   fun:__libc_start_main
}
{
   <insert a suppression name here>
   Memcheck:Leak
   fun:_Znam
   fun:_wrap_Test_var_pchar_set
   fun:PyEval_EvalFrame
   fun:PyEval_EvalCodeEx
   fun:PyEval_EvalFrame
   fun:PyEval_EvalFrame
   fun:PyEval_EvalCodeEx
   fun:function_call
   fun:PyObject_Call
   fun:PyEval_CallObjectWithKeywords
   fun:instance_setattr
   fun:PyObject_SetAttr
}
{
   <insert a suppression name here>
   Memcheck:Leak
   fun:_Znam
   fun:_wrap_TestDirector_var_pchar_set
   fun:PyEval_EvalFrame
   fun:PyEval_EvalCodeEx
   fun:PyEval_EvalFrame
   fun:PyEval_EvalFrame
   fun:PyEval_EvalCodeEx
   fun:function_call
   fun:PyObject_Call
   fun:instancemethod_call
   fun:PyObject_Call
   fun:call_method
}
{
   <insert a suppression name here>
   Memcheck:Leak
   fun:malloc
   fun:SWIG_Python_newvarlink
   fun:SWIG_globals
   fun:init_primitive_types
   fun:_PyImport_LoadDynamicModule
   fun:load_module
   fun:import_submodule
   fun:load_next
   fun:import_module_ex
   fun:PyImport_ImportModuleEx
   fun:builtin___import__
   fun:PyObject_Call
}
{
   <insert a suppression name here>
   Memcheck:Leak
   fun:malloc
   fun:SWIG_Python_addvarlink
   fun:init_primitive_types
   fun:_PyImport_LoadDynamicModule
   fun:load_module
   fun:import_submodule
   fun:load_next
   fun:import_module_ex
   fun:PyImport_ImportModuleEx
   fun:builtin___import__
   fun:PyObject_Call
   fun:PyEval_CallObjectWithKeywords
}
{
   <insert a suppression name here>
   Memcheck:Leak
   fun:malloc
   fun:PyFloat_FromDouble
   fun:init_primitive_types
   fun:_PyImport_LoadDynamicModule
   fun:load_module
   fun:import_submodule
   fun:load_next
   fun:import_module_ex
   fun:PyImport_ImportModuleEx
   fun:builtin___import__
   fun:PyObject_Call
   fun:PyEval_CallObjectWithKeywords
}
{
   <insert a suppression name here>
   Memcheck:Leak
   fun:malloc
   fun:SWIG_Python_addvarlink
   fun:init_primitive_types
   fun:_PyImport_LoadDynamicModule
   fun:load_module
   fun:import_submodule
   fun:load_next
   fun:import_module_ex
   fun:PyImport_ImportModuleEx
   fun:builtin___import__
   fun:PyObject_Call
   fun:PyEval_CallObjectWithKeywords
}
{
   <insert a suppression name here>
   Memcheck:Leak
   fun:realloc
   fun:_PyString_Resize
   fun:jcompile
   fun:com_funcdef
   fun:com_node
   fun:com_node
   fun:compile_node
   fun:jcompile
   fun:com_classdef
   fun:com_node
   fun:compile_node
   fun:jcompile
}
{
   <insert a suppression name here>
   Memcheck:Leak
   fun:malloc
   fun:_PyObject_GC_New
   fun:PyDict_New
   fun:PyModule_New
   fun:PyImport_AddModule
   fun:Py_InitModule4
   fun:_PyExc_Init
   fun:Py_InitializeEx
   fun:Py_Main
   fun:__libc_start_main
}
{
   <insert a suppression name here>
   Memcheck:Leak
   fun:_Znwm
   fun:_Z21createref_signed_chara
   fun:_wrap_createref_signed_char
   fun:PyEval_EvalFrame
   fun:PyEval_EvalCodeEx
   fun:PyEval_EvalCode
   fun:PyRun_FileExFlags
   fun:PyRun_SimpleFileExFlags
   fun:Py_Main
   fun:__libc_start_main
}
{
   <insert a suppression name here>
   Memcheck:Leak
   fun:_Znwm
   fun:_Z23createref_unsigned_charh
   fun:_wrap_createref_unsigned_char
   fun:PyEval_EvalFrame
   fun:PyEval_EvalCodeEx
   fun:PyEval_EvalCode
   fun:PyRun_FileExFlags
   fun:PyRun_SimpleFileExFlags
   fun:Py_Main
   fun:__libc_start_main
}
{
   <insert a suppression name here>
   Memcheck:Leak
   fun:_Znwm
   fun:_Z14createref_charc
   fun:_wrap_createref_char
   fun:PyEval_EvalFrame
   fun:PyEval_EvalCodeEx
   fun:PyEval_EvalCode
   fun:PyRun_FileExFlags
   fun:PyRun_SimpleFileExFlags
   fun:Py_Main
   fun:__libc_start_main
}
{
   <insert a suppression name here>
   Memcheck:Leak
   fun:_Znwm
   fun:_Z24createref_unsigned_shortt
   fun:_wrap_createref_unsigned_short
   fun:PyEval_EvalFrame
   fun:PyEval_EvalCodeEx
   fun:PyEval_EvalCode
   fun:PyRun_FileExFlags
   fun:PyRun_SimpleFileExFlags
   fun:Py_Main
   fun:__libc_start_main
}
{
   <insert a suppression name here>
   Memcheck:Leak
   fun:_Znwm
   fun:_Z15createref_shorts
   fun:_wrap_createref_short
   fun:PyEval_EvalFrame
   fun:PyEval_EvalCodeEx
   fun:PyEval_EvalCode
   fun:PyRun_FileExFlags
   fun:PyRun_SimpleFileExFlags
   fun:Py_Main
   fun:__libc_start_main
}
{
   <insert a suppression name here>
   Memcheck:Leak
   fun:_Znwm
   fun:_Z14createref_boolb
   fun:_wrap_createref_bool
   fun:PyEval_EvalFrame
   fun:PyEval_EvalCodeEx
   fun:PyEval_EvalCode
   fun:PyRun_FileExFlags
   fun:PyRun_SimpleFileExFlags
   fun:Py_Main
   fun:__libc_start_main
}
{
   <insert a suppression name here>
   Memcheck:Leak
   fun:_Znwm
   fun:_Z19createref_TestClass9TestClass
   fun:_wrap_createref_TestClass
   fun:PyEval_EvalFrame
   fun:PyEval_EvalCodeEx
   fun:PyEval_EvalCode
   fun:PyRun_FileExFlags
   fun:PyRun_SimpleFileExFlags
   fun:Py_Main
   fun:__libc_start_main
}
{
   <insert a suppression name here>
   Memcheck:Leak
   fun:_Znwm
   fun:_Z15createref_floatf
   fun:_wrap_createref_float
   fun:PyEval_EvalFrame
   fun:PyEval_EvalCodeEx
   fun:PyEval_EvalCode
   fun:PyRun_FileExFlags
   fun:PyRun_SimpleFileExFlags
   fun:Py_Main
   fun:__libc_start_main
}
{
   <insert a suppression name here>
   Memcheck:Leak
   fun:_Znwm
   fun:_Z22createref_unsigned_intj
   fun:_wrap_createref_unsigned_int
   fun:PyEval_EvalFrame
   fun:PyEval_EvalCodeEx
   fun:PyEval_EvalCode
   fun:PyRun_FileExFlags
   fun:PyRun_SimpleFileExFlags
   fun:Py_Main
   fun:__libc_start_main
}
{
   <insert a suppression name here>
   Memcheck:Leak
   fun:_Znwm
   fun:_Z13createref_inti
   fun:_wrap_createref_int
   fun:PyEval_EvalFrame
   fun:PyEval_EvalCodeEx
   fun:PyEval_EvalCode
   fun:PyRun_FileExFlags
   fun:PyRun_SimpleFileExFlags
   fun:Py_Main
   fun:__libc_start_main
}
{
   <insert a suppression name here>
   Memcheck:Leak
   fun:_Znwm
   fun:_Z16createref_doubled
   fun:_wrap_createref_double
   fun:PyEval_EvalFrame
   fun:PyEval_EvalCodeEx
   fun:PyEval_EvalCode
   fun:PyRun_FileExFlags
   fun:PyRun_SimpleFileExFlags
   fun:Py_Main
   fun:__libc_start_main
}
{
   <insert a suppression name here>
   Memcheck:Leak
   fun:_Znwm
   fun:_Z28createref_unsigned_long_longy
   fun:_wrap_createref_unsigned_long_long
   fun:PyEval_EvalFrame
   fun:PyEval_EvalCodeEx
   fun:PyEval_EvalCode
   fun:PyRun_FileExFlags
   fun:PyRun_SimpleFileExFlags
   fun:Py_Main
   fun:__libc_start_main
}
{
   <insert a suppression name here>
   Memcheck:Leak
   fun:_Znwm
   fun:_Z19createref_long_longx
   fun:_wrap_createref_long_long
   fun:PyEval_EvalFrame
   fun:PyEval_EvalCodeEx
   fun:PyEval_EvalCode
   fun:PyRun_FileExFlags
   fun:PyRun_SimpleFileExFlags
   fun:Py_Main
   fun:__libc_start_main
}
{
   <insert a suppression name here>
   Memcheck:Leak
   fun:_Znwm
   fun:_Z23createref_unsigned_longm
   fun:_wrap_createref_unsigned_long
   fun:PyEval_EvalFrame
   fun:PyEval_EvalCodeEx
   fun:PyEval_EvalCode
   fun:PyRun_FileExFlags
   fun:PyRun_SimpleFileExFlags
   fun:Py_Main
   fun:__libc_start_main
}
{
   <insert a suppression name here>
   Memcheck:Leak
   fun:_Znwm
   fun:_Z14createref_longl
   fun:_wrap_createref_long
   fun:PyEval_EvalFrame
   fun:PyEval_EvalCodeEx
   fun:PyEval_EvalCode
   fun:PyRun_FileExFlags
   fun:PyRun_SimpleFileExFlags
   fun:Py_Main
   fun:__libc_start_main
}
{
   <insert a suppression name here>
   Memcheck:Leak
   fun:malloc
   fun:SWIG_Python_newvarlink
   fun:SWIG_globals
   fun:init_reference_global_vars
   fun:_PyImport_LoadDynamicModule
   fun:load_module
   fun:import_submodule
   fun:load_next
   fun:import_module_ex
   fun:PyImport_ImportModuleEx
   fun:builtin___import__
   fun:PyObject_Call
}
{
   <insert a suppression name here>
   Memcheck:Leak
   fun:malloc
   fun:SWIG_Python_addvarlink
   fun:init_reference_global_vars
   fun:_PyImport_LoadDynamicModule
   fun:load_module
   fun:import_submodule
   fun:load_next
   fun:import_module_ex
   fun:PyImport_ImportModuleEx
   fun:builtin___import__
   fun:PyObject_Call
   fun:PyEval_CallObjectWithKeywords
}
{
   <insert a suppression name here>
   Memcheck:Leak
   fun:malloc
   fun:SWIG_Python_addvarlink
   fun:init_reference_global_vars
   fun:_PyImport_LoadDynamicModule
   fun:load_module
   fun:import_submodule
   fun:load_next
   fun:import_module_ex
   fun:PyImport_ImportModuleEx
   fun:builtin___import__
   fun:PyObject_Call
   fun:PyEval_CallObjectWithKeywords
}
