diff options
| author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2023-09-25 14:49:14 +0200 |
|---|---|---|
| committer | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2023-09-26 07:37:31 +0200 |
| commit | 7dee9d7737542800d693d28c7a7bd4d1e258a2ee (patch) | |
| tree | c7e1285fe9eaf56da45b4cf362fede32cdfd2abe /sources/pyside6/libpyside/pyside.cpp | |
| parent | 2e05404b77db17dc9577da19df723e3819377eda (diff) | |
Improve libpyside debug operators
Output True/False directly. Also output methods and functions.
Amends 74a2ec0202af250828c10dfb10b71036a3af9dd8.
Task-number: PYSIDE-229
Pick-to: 6.6
Change-Id: I3625853ec5deef03cb6f94f24e0a2e80d4ac30a7
Reviewed-by: Christian Tismer <tismer@stackless.com>
Reviewed-by: Adrian Herrmann <adrian.herrmann@qt.io>
Diffstat (limited to 'sources/pyside6/libpyside/pyside.cpp')
| -rw-r--r-- | sources/pyside6/libpyside/pyside.cpp | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/sources/pyside6/libpyside/pyside.cpp b/sources/pyside6/libpyside/pyside.cpp index 77cc303c7..eb2cd9559 100644 --- a/sources/pyside6/libpyside/pyside.cpp +++ b/sources/pyside6/libpyside/pyside.cpp @@ -1036,6 +1036,25 @@ static inline const char *pyTypeName(PyObject *obj) return Py_TYPE(obj)->tp_name; } +static QString getQualName(PyObject *obj) +{ + Shiboken::AutoDecRef result(PyObject_GetAttr(obj, Shiboken::PyMagicName::qualname())); + return result.object() != nullptr + ? pyStringToQString(result.object()) : QString{}; +} + +static void formatPyFunction(PyObject *obj, QDebug &debug) +{ + debug << '"' << getQualName(obj) << "()\""; +} + +static void formatPyMethod(PyObject *obj, QDebug &debug) +{ + if (auto *func = PyMethod_Function(obj)) + formatPyFunction(func, debug); + debug << ", instance=" << PyMethod_Self(obj); +} + static void formatPyObjectValue(PyObject *obj, QDebug &debug) { if (PyType_Check(obj) != 0) @@ -1046,6 +1065,10 @@ static void formatPyObjectValue(PyObject *obj, QDebug &debug) debug << PyFloat_AsDouble(obj); else if (PyUnicode_Check(obj) != 0) debug << '"' << pyStringToQString(obj) << '"'; + else if (PyFunction_Check(obj) != 0) + formatPyFunction(obj, debug); + else if (PyMethod_Check(obj) != 0) + formatPyMethod(obj, debug); else if (PySequence_Check(obj) != 0) formatPySequence(obj, debug); else if (PyDict_Check(obj) != 0) @@ -1064,6 +1087,14 @@ static void formatPyObject(PyObject *obj, QDebug &debug) debug << "None"; return; } + if (obj == Py_True) { + debug << "True"; + return; + } + if (obj == Py_False) { + debug << "False"; + return; + } if (PyType_Check(obj) == 0) debug << pyTypeName(obj) << ": "; formatPyObjectValue(obj, debug); |
