From 3dd2fc8f0fea9b13116ecdc1297539e03c94daf7 Mon Sep 17 00:00:00 2001 From: Ladislav Michl Date: Fri, 19 Jan 2024 19:02:58 +0100 Subject: [PATCH] Gui: Consolidate module error message in PythonWrapper --- src/Gui/PythonWrapper.cpp | 27 +++++++++++---------------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/src/Gui/PythonWrapper.cpp b/src/Gui/PythonWrapper.cpp index 412b56c47f..c56def3526 100644 --- a/src/Gui/PythonWrapper.cpp +++ b/src/Gui/PythonWrapper.cpp @@ -354,6 +354,13 @@ private: ~WrapperManager() override = default; }; +static std::string formatModuleError(std::string name) +{ + std::string error = "Cannot load " + name + " module"; + PyErr_Print(); + return error; +} + template Py::Object qt_wrapInstance(qttype object, const std::string& className, @@ -363,10 +370,7 @@ Py::Object qt_wrapInstance(qttype object, { PyObject* module = PyImport_ImportModule(shiboken.c_str()); if (!module) { - std::string error = "Cannot load "; - error += shiboken; - error += " module"; - throw Py::Exception(PyExc_ImportError, error); + throw Py::Exception(PyExc_ImportError, formatModuleError(shiboken)); } Py::Module mainmod(module, true); @@ -377,10 +381,7 @@ Py::Object qt_wrapInstance(qttype object, module = PyImport_ImportModule(pyside.c_str()); if (!module) { - std::string error = "Cannot load "; - error += pyside; - error += " module"; - throw Py::Exception(PyExc_ImportError, error); + throw Py::Exception(PyExc_ImportError, formatModuleError(pyside)); } Py::Module qtmod(module); @@ -392,10 +393,7 @@ const char* qt_identifyType(QObject* ptr, const std::string& pyside) { PyObject* module = PyImport_ImportModule(pyside.c_str()); if (!module) { - std::string error = "Cannot load "; - error += pyside; - error += " module"; - throw Py::Exception(PyExc_ImportError, error); + throw Py::Exception(PyExc_ImportError, formatModuleError(pyside)); } Py::Module qtmod(module); @@ -415,10 +413,7 @@ void* qt_getCppPointer(const Py::Object& pyobject, const std::string& shiboken, // https://github.com/PySide/Shiboken/blob/master/shibokenmodule/typesystem_shiboken.xml PyObject* module = PyImport_ImportModule(shiboken.c_str()); if (!module) { - std::string error = "Cannot load "; - error += shiboken; - error += " module"; - throw Py::Exception(PyExc_ImportError, error); + throw Py::Exception(PyExc_ImportError, formatModuleError(shiboken)); } Py::Module mainmod(module, true);