[PySide] The Signature Module for PySide2

Bob Hood bhood2 at comcast.net
Sun Sep 24 15:59:22 CEST 2017


I think introspection is still a fairly uncommon area for most 
programmers,even professional software engineers.  Like many things Qt does, 
it has leveraged introspection to great benefit, but there's no requirement to 
actually know about or understand introspection in order to use Qt(either via 
C++ or through PySide).Until it comes as a standard in a mainstream 
language,like C++, I don't think you will see widespread understanding or 
appreciation of its power.

And if it's any consolation, I appreciate what you've done, Chris.  :)


On 9/23/2017 9:55 PM, Christian Tismer wrote:
> Bob, you are right. The __signature__ object is a true object for
> introspection and you can directly use it to build a function
> call programmatically or find default arguments. Not as strings
> but as life objects.
>
> I think that is a pretty unique feature. I know only of Cython
> who creates signature objects from PyCFunctions. Therefore I expected
> more enthusiastic reactions, the feature was very hard to implement.
> And sure, the doc strings could be derived from it.
>
> Probably I should have pointed people at PEP 362 ff.
>
> Cheers -- Chris
>
>
> On 23.09.17 04:49, Bob Hood wrote:
>> I could be wrong, because I'm not familiar with the "__signature__"
>> attribute, but I believe it is intended to facilitate /introspection/ of
>> classes and methods.  When Christian said "prints", I think he just
>> meant you get to see what the attribute holds, not that it should be
>> used as documentation.
>>
>> You could programmatically access the attributes data, and make run-time
>> use of it.  You can't really do that with the help() output unless you
>> want go to great lengths to parse it.
>>
>> Sorry if I'm way off here.
>>
>>
>> On 9/22/2017 8:36 PM, Zhao Lee wrote:
>>> Sorry, I just feel the feature is just like what help() function do in
>>> Python
>>> https://docs.python.org/3/library/functions.html#help
>>>
>>> an example with PyQt5
>>>>>> from PyQt5.QtWidgets import QApplication
>>>>>> help(QApplication.startTimer)
>>> Help on built-in function startTimer:
>>>
>>> startTimer(...)
>>>      startTimer(self, int, timerType: Qt.TimerType = Qt.CoarseTimer) -> int
>>>
>>>>>>   
>>>
>>> 在2017年09月22 16时42分, "Christian Tismer"<tismer at stackless.com>写道:
>>>
>>>
>>>      Hi,
>>>
>>>      please re-submit your reply in a readable way.
>>>      I could read it locally, but the mailing list does not
>>>      have a readable answer from you, just my copied text.
>>>
>>>      Can you please come up with more than just "why not?"?
>>>      I need a proposal how the help should look like.
>>>
>>>      Thanks in advance -- Chris
>>>
>>>
>>>      On 22.09.17 07:07, Zhao Lee wrote:
>>>      > why not?
>>>      >>>> help(PySide2.QtWidgets.QGraphicsAnchorLayout.addAnchors)
>>>      >>>> help(PySide2.QtWidgets.QGraphicsAnchorLayout)
>>>      >
>>>      >
>>>      >
>>>      > 在2017年09月21 21时04分, "Christian Tismer"<tismer at stackless.com
>>>      <mailto:tismer at stackless.com>>写道:
>>>      >
>>>      >
>>>      >     Hi friends,
>>>      >
>>>      >     there is the new signature module for PySide2.
>>>      >     It adds the __signature__ attribute to all PySide2
>>>      >     functions and constructors.
>>>      >
>>>      >     Example usage:
>>>      >
>>>      >     >>>
>>>      PySide2.QtWidgets.QGraphicsAnchorLayout.addAnchors.__signature__
>>>      >     >>> PySide2.QtWidgets.QGraphicsAnchorLayout.__signature__
>>>      >
>>>      >     will print all annotations, defaults and return values.
>>>      >
>>>      >     The feature supports Python 2.7 and Python 3.4 and up.
>>>      >     See further info at
>>>      >
>>>      >        https://bugreports.qt.io/browse/PYSIDE-510
>>>      >
>>>      >
>>>      https://github.com/pyside/pyside2-setup/blob/5.6/sources/shiboken2/libshiboken/signature.cpp
>>>      >
>>>      >
>>>      https://github.com/pyside/pyside2-setup/blob/5.6/sources/shiboken2/libshiboken/signature.cpp
>>>      >
>>>      >     Cheers -- Chris
>>>      >
>>>      >     --
>>>      >     Christian Tismer             :^)   tismer at stackless.com
>>>      <mailto:tismer at stackless.com>
>>>      >     <mailto:tismer at stackless.com <mailto:tismer at stackless.com>>
>>>      >     Software Consulting          :     http://www.stackless.com/
>>>      >     Karl-Liebknecht-Str. 121     :     https://github.com/PySide
>>>      >     14482 Potsdam                :     GPG key -> 0xFB7BEE0E
>>>      >     phone +49 173 24 18 776  fax +49 (30) 700143-0023
>>>      >
>>>      >
>>>      >
>>>      >
>>>      >
>>>      >
>>>      >
>>>
>>>
>>>      --
>>>      Christian Tismer             :^)   tismer at stackless.com
>>>      <mailto:tismer at stackless.com>
>>>      Software Consulting          :     http://www.stackless.com/
>>>      Karl-Liebknecht-Str. 121     :     https://github.com/PySide
>>>      14482 Potsdam                :     GPG key -> 0xFB7BEE0E
>>>      phone +49 173 24 18 776  fax +49 (30) 700143-0023
>>>
>>>
>>>
>>>   
>>>
>>>
>>>
>>> _______________________________________________ PySide mailing list
>>> PySide at qt-project.org http://lists.qt-project.org/mailman/listinfo/pyside
>>
>>
>> _______________________________________________
>> PySide mailing list
>> PySide at qt-project.org
>> http://lists.qt-project.org/mailman/listinfo/pyside
>>
>




More information about the PySide mailing list