aboutsummaryrefslogtreecommitdiffstats
path: root/sources/shiboken2/libshiboken/signature.cpp
diff options
context:
space:
mode:
authorChristian Tismer <tismer@stackless.com>2019-01-16 13:11:31 +0100
committerChristian Tismer <tismer@stackless.com>2019-01-18 13:22:36 +0100
commit6371c1d419e9089226b3179031a9ee525033e2ea (patch)
treee946354c375d2440fdefe839bbca56c9aed61a86 /sources/shiboken2/libshiboken/signature.cpp
parent077db7a4a432c78490ae34ead3f1d5338175b81c (diff)
Complete the help() support for Types
The help() support based upon the Signature module worked fine but for types. The reason was that the __signature__ module was a new attribute, while __doc__ already existed through an inheritance-like mechanism. When we add __doc__ later, the attributes are already in the cache. PyType_Modified(type) does not help in PySide. The solution was to add tp_getset to the metaclass SbkObjectType_Type which otherwise would have been reached from PyType_Type ('type' in Python). Note.. It makes sense to add the injected documentation to the __doc__ strings as well. This enables help output even with the py_doc web service! Task-number: PYSIDE-908 Change-Id: I09dd4bc6746ee41566a467604c4a68de5d66f94b Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Diffstat (limited to 'sources/shiboken2/libshiboken/signature.cpp')
-rw-r--r--sources/shiboken2/libshiboken/signature.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/sources/shiboken2/libshiboken/signature.cpp b/sources/shiboken2/libshiboken/signature.cpp
index c83f90d64..8003f142a 100644
--- a/sources/shiboken2/libshiboken/signature.cpp
+++ b/sources/shiboken2/libshiboken/signature.cpp
@@ -1180,4 +1180,24 @@ SetError_Argument(PyObject *args, const char *func_name)
PyErr_SetObject(err, msg);
}
+/*
+ * Support for the metatype SbkObjectType_Type's tp_getset.
+ *
+ * This was not necessary for __signature__, because PyType_Type inherited it.
+ * But the __doc__ attribute existed already by inheritance, and calling
+ * PyType_Modified() is not supported. So we added the getsets explicitly
+ * to the metatype.
+ */
+
+PyObject *
+Sbk_TypeGet___signature__(PyObject *ob, const char *modifier)
+{
+ return pyside_tp_get___signature__(ob, modifier);
+}
+
+PyObject *Sbk_TypeGet___doc__(PyObject *ob)
+{
+ return pyside_tp_get___doc__(ob);
+}
+
} //extern "C"