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

Method getHelp

python/astra/src/PythonPluginAlgorithmFactory.cpp:195–234  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

193}
194
195std::string CPythonPluginAlgorithmFactory::getHelp(const std::string &name){
196 PyObject *className = getItemStringRef(pluginDict, name.c_str());
197 if (!className) {
198 ASTRA_ERROR("Plugin %s not found!",name.c_str());
199 PyErr_Clear();
200 return "";
201 }
202 std::string ret = "";
203 PyObject *pyclass;
204 if(PyBytes_Check(className)){
205 std::string str = std::string(PyBytes_AsString(className));
206 pyclass = getClassFromString(str);
207 }else{
208 pyclass = className;
209 }
210 if(pyclass==NULL){
211 Py_DECREF(className);
212 return "";
213 }
214 if(inspect!=NULL){
215 PyObject *retVal = PyObject_CallMethod(inspect,"getdoc","O",pyclass);
216 if(retVal!=NULL){
217 if(retVal!=Py_None){
218 PyObject *retb = PyUnicode_AsASCIIString(retVal);
219 if(retb!=NULL){
220 ret = std::string(PyBytes_AsString(retb));
221 Py_DECREF(retb);
222 }
223 }
224 Py_DECREF(retVal);
225 }else{
226 logPythonError();
227 }
228 }
229 if(PyBytes_Check(className)){
230 Py_DECREF(pyclass);
231 }
232 Py_DECREF(className);
233 return ret;
234}
235
236DEFINE_SINGLETON(CPythonPluginAlgorithmFactory);
237

Callers 1

Calls 3

getItemStringRefFunction · 0.85
getClassFromStringFunction · 0.85
logPythonErrorFunction · 0.85

Tested by

no test coverage detected