MCPcopy Create free account
hub / github.com/MrNeRF/LichtFeld-Studio / load_single_plugin_locked

Function load_single_plugin_locked

src/python/runner.cpp:599–631  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

597 }
598
599 bool load_single_plugin_locked(const std::string& name) {
600 PyObject* lf = import_lichtfeld_module("Failed to import lichtfeld while loading plugin");
601 if (!lf)
602 return false;
603
604 PyObject* plugins = PyObject_GetAttrString(lf, "plugins");
605 if (!plugins) {
606 Py_DECREF(lf);
607 return false;
608 }
609
610 PyObject* py_name = PyUnicode_FromString(name.c_str());
611 PyObject* result = PyObject_CallMethod(plugins, "load", "O", py_name);
612 const bool success = result && PyObject_IsTrue(result);
613
614 if (!success) {
615 PyObject* get_traceback = PyObject_GetAttrString(plugins, "get_traceback");
616 if (get_traceback) {
617 PyObject* tb = PyObject_CallOneArg(get_traceback, py_name);
618 if (tb && !Py_IsNone(tb) && PyUnicode_Check(tb)) {
619 LOG_ERROR("Plugin '{}' traceback:\n{}", name, PyUnicode_AsUTF8(tb));
620 }
621 Py_XDECREF(tb);
622 Py_DECREF(get_traceback);
623 }
624 }
625
626 Py_XDECREF(result);
627 Py_DECREF(py_name);
628 Py_DECREF(plugins);
629 Py_DECREF(lf);
630 return success;
631 }
632
633 } // namespace
634

Callers 1

ensure_plugins_loadedFunction · 0.85

Calls 2

import_lichtfeld_moduleFunction · 0.85
c_strMethod · 0.80

Tested by

no test coverage detected