diff options
author | Christian Tismer <tismer@stackless.com> | 2019-01-16 13:11:31 +0100 |
---|---|---|
committer | Christian Tismer <tismer@stackless.com> | 2019-01-18 13:22:36 +0100 |
commit | 6371c1d419e9089226b3179031a9ee525033e2ea (patch) | |
tree | e946354c375d2440fdefe839bbca56c9aed61a86 /sources/shiboken2/libshiboken/signature.cpp | |
parent | 077db7a4a432c78490ae34ead3f1d5338175b81c (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.cpp | 20 |
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" |