MCPcopy Create free account
hub / github.com/astra-toolbox/astra-toolbox / logPythonError

Function logPythonError

python/astra/src/PythonPluginAlgorithm.cpp:46–83  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

44
45
46void logPythonError(){
47 if(PyErr_Occurred()){
48 PyObject *ptype, *pvalue, *ptraceback;
49 PyErr_Fetch(&ptype, &pvalue, &ptraceback);
50 PyErr_NormalizeException(&ptype, &pvalue, &ptraceback);
51 PyObject *traceback = PyImport_ImportModule("traceback");
52 if(traceback!=NULL){
53 PyObject *exc;
54 if(ptraceback==NULL){
55 exc = PyObject_CallMethod(traceback,"format_exception_only","OO",ptype, pvalue);
56 }else{
57 exc = PyObject_CallMethod(traceback,"format_exception","OOO",ptype, pvalue, ptraceback);
58 }
59 if(exc!=NULL){
60 PyObject *iter = PyObject_GetIter(exc);
61 if(iter!=NULL){
62 PyObject *line;
63 std::string errStr = "";
64 while((line = PyIter_Next(iter))){
65 PyObject *retb = PyUnicode_AsASCIIString(line);
66 if(retb!=NULL){
67 errStr += std::string(PyBytes_AsString(retb));
68 Py_DECREF(retb);
69 }
70 Py_DECREF(line);
71 }
72 ASTRA_ERROR("%s",errStr.c_str());
73 Py_DECREF(iter);
74 }
75 Py_DECREF(exc);
76 }
77 Py_DECREF(traceback);
78 }
79 if(ptype!=NULL) Py_DECREF(ptype);
80 if(pvalue!=NULL) Py_DECREF(pvalue);
81 if(ptraceback!=NULL) Py_DECREF(ptraceback);
82 }
83}
84
85
86CPluginAlgorithm::CPluginAlgorithm(PyObject* pyclass){

Callers 7

CPluginAlgorithmMethod · 0.85
initializeMethod · 0.85
runMethod · 0.85
getClassFromStringFunction · 0.85
registerPluginClassMethod · 0.85
getRegisteredMapMethod · 0.85
getHelpMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected