+
    WBi$%                     J    ^RI Ht  ! R R]4      t ! R R]4      tR tR tR# )	   )_gic                      a  ] tR t^t o Rt ! R R]4      tRR ltRR]P                  RRRRR3R lt
RR ltR	 tRR
 ltR tRtV tR# )Signala   Object which gives a nice API for creating and binding signals.

:param name:
    Name of signal or callable closure when used as a decorator.
:type name: str or callable
:param callable func:
    Callable closure method.
:param GObject.SignalFlags flags:
    Flags specifying when to run closure.
:param type return_type:
    Return type of the Signal.
:param list arg_types:
    List of argument types specifying the signals function signature
:param str doc:
    Documentation of signal object.
:param callable accumulator:
    Accumulator method with the signature:
    func(ihint, return_accu, handler_return, accu_data) -> boolean
:param object accu_data:
    User data passed to the accumulator.

:Example:

.. code-block:: python

    class Spam(GObject.Object):
        velocity = 0

        @GObject.Signal
        def pushed(self):
            self.velocity += 1

        @GObject.Signal(flags=GObject.SignalFlags.RUN_LAST)
        def pulled(self):
            self.velocity -= 1

        stomped = GObject.Signal('stomped', arg_types=(int,))

        @GObject.Signal
        def annotated_signal(self, a:int, b:str):
            "Python3 annotation support for parameter types.

    def on_pushed(obj):
        print(obj)

    spam = Spam()
    spam.pushed.connect(on_pushed)
    spam.pushed.emit()
c                   T   a  ] tR t^It o RtR tR tR tR tR t	R t
R tR	 tR
tV tR# )Signal.BoundSignalzxTemporary binding object which can be used for connecting signals
without specifying the signal name string to connect.
c                ,    \         P                  W4      # N)str__new__clsnameargskargss   &&*,5/usr/lib/python3.14/site-packages/gi/_signalhelper.pyr   Signal.BoundSignal.__new__N   s    ;;s))    c                H    \         P                  V 4       Wn        W n        R # r	   )r
   __init__signalgobj)selfr   r   s   &&&r   r   Signal.BoundSignal.__init__Q   s    LL KIr   c                    R V  R2# )zBoundSignal("z") r   s   &r   __repr__Signal.BoundSignal.__repr__V   s    "4&++r   c                V    V P                   P                  ! V P                  .VO5/ VB # )zCall the signals closure.)r   funcr   r   r   r   s   &*,r   __call__Signal.BoundSignal.__call__Y   s%    ;;##DII>>>>r   c                B    V P                   P                  ! W.VO5/ VB # )zSSame as GObject.Object.connect except there is no need to specify
the signal name.
r   connect)r   callbackr   r   s   &&*,r   r&   Signal.BoundSignal.connect]   s#     99$$TDdDeDDr   c                `    V P                   P                  ! V R,           V,           V.VO5/ VB # )zSame as GObject.Object.connect except there is no need to specify
the signal name. In addition concats "::<detail>" to the signal name
when connecting; for use with notifications like "notify" when a property
changes.
z::r%   )r   r'   detailr   r   s   &&&*,r   connect_detailed#Signal.BoundSignal.connect_detailedc   s.     99$$TD[6%98TdTeTTr   c                <    V P                   P                  V4       R# )z"Same as GObject.Object.disconnect.N)r   
disconnect)r   
handler_ids   &&r   r.   Signal.BoundSignal.disconnectk   s    II  ,r   c                T    V P                   P                  ! \        V 4      .VO5/ VB # )zPSame as GObject.Object.emit except there is no need to specify
the signal name.
)r   emitr
   r!   s   &*,r   r2   Signal.BoundSignal.emito   s%     99>>#d)<d<e<<r   )r   r   N)__name__
__module____qualname____firstlineno____doc__r   r   r   r"   r&   r+   r.   r2   __static_attributes____classdictcell____classdict__s   @r   BoundSignalr   I   s9     		*	
	,	?	E	U	-	= 	=r   r=    c                f    \        V4      '       d   VP                  p\        P                  W4      # r	   )callabler4   r
   r   r   s   &&*,r   r   Signal.__new__u   s#    D>>==D{{3%%r   Nc	                @   Vf   \        V4      '       d   TpV'       d   V'       g   VP                  p\        P                  V 4       V'       d   V'       g   V'       g   \	        V4      w  rEVf   RpW n        W0n        W@n        WPn        W`n        Wpn	        Wn
        R # )Nr   )r@   r8   r
   r   get_signal_annotationsr    flagsreturn_type	arg_typesaccumulator	accu_data)	r   r   r    rD   rE   rF   docrG   rH   s	   &&&&&&&&&r   r   Signal.__init__z   st     <HTNND,,CT	%;D%A"KI	
&"&"r   c                0    Vf   V # V P                  W4      # )z:Returns a BoundSignal when accessed on an object instance.)r=   )r   instanceowners   &&&r   __get__Signal.__get__   s    K//r   c                l   \        V\        P                  4      '       d   V P                  ! V.VO5/ VB  R# \	        V 4      '       d   \	        V 4      MVP
                  p\        V 4      ! VVV P                  V P                  V P                  V P                  V P                  V P                  R7      # )zfAllows for instantiated Signals to be used as a decorator or calling
of the underlying signal method.
r   r    rD   rE   rF   rI   rG   rH   N)
isinstancer   GObjectr    r
   r4   typerD   rE   rF   r8   rG   rH   )r   objr   r   r   s   &&*, r   r"   Signal.__call__   s     c3;;''IIc*D*E*   !$D		3t9s||D:jj ,,..LL ,,..	 	r   c                    \        V 4      ! VV P                  V P                  V P                  V P                  V P
                  V P                  V P                  R7      # )z%Returns a renamed copy of the Signal.rQ   )rT   r    rD   rE   rF   r8   rG   rH   )r   newNames   &&r   copySignal.copy   sK    Dz**((nn((nn	
 		
r   c                t    V P                   V P                  V P                  V P                  V P                  3# )zLReturns a tuple of: (flags, return_type, arg_types, accumulator, accu_data).)rD   rE   rF   rG   rH   r   s   &r   get_signal_argsSignal.get_signal_args   s5     JJNNNN
 	
r   )r8   rH   rG   rF   rD   r    rE   )r>   r	   )r4   r5   r6   r7   r8   r
   r=   r   r   SIGNAL_RUN_FIRSTr   rN   r"   rY   r\   r9   r:   r;   s   @r   r   r      s\     0d*=c *=X& ""#@02

 
r   r   c                   *   a  ] tR t^t o RtR tRtV tR# )SignalOverridea  Specialized sub-class of Signal which can be used as a decorator for overriding
existing signals on GObjects.

:Example:

.. code-block:: python

    class MyWidget(Gtk.Widget):
        @GObject.SignalOverride
        def configure_event(self):
            pass
c                    R# )zReturns the string 'override'.overrider   r   s   &r   r\   SignalOverride.get_signal_args   s    r   r   N)r4   r5   r6   r7   r8   r\   r9   r:   r;   s   @r   r`   r`      s      r   r`   c                4  a RpRp\        V R4      '       d   ^ RIpVP                  V 4      o\        ;QJ d!    . V3R lSP                   4       F  NK  	  5M! V3R lSP                   4       4      pRSP
                  9   d   SP
                  R,          pW!3# )a  Attempt pulling python 3 function annotations off of 'func' for
use as a signals type information. Returns an ordered nested tuple
of (return_type, (arg_type1, arg_type2, ...)). If the given function
does not have annotations then (None, tuple()) is returned.
N__annotations__c              3   n   <"   T F*  qSP                   9   g   K  SP                   V,          x  K,  	  R # 5ir	   )annotations).0argspecs   & r   	<genexpr>)get_signal_annotations.<locals>.<genexpr>   s0      
-6cAQAQ:Q!DS!!Ys   55returnr   )hasattrinspectgetfullargspectupler   rg   )r    rF   rE   ro   rj   s   &   @r   rC   rC      s     IKt&''%%d+E 
-1YY
EE 
-1YY
 
	 t'''**84K!!r   c                T   V P                   P                  R/ 4      p/ pV P                   P                  4        Fz  w  r4\        V\        4      '       g   K  \        V4      pV'       g    TpVP                  V4      p\        WV4       WQ9   d   \        RV R24      hWBV&   VP                  4       W&   K|  	  Wn
        VP                  4        FW  w  r4VP                  f   K  RVP                  RR4      ,           p\        W4      '       d   KA  \        WVP                  4       KY  	  R# )zAdds Signal instances on a GObject derived class into the '__gsignals__'
dictionary to be picked up and registered as real GObject signals.
__gsignals__zSignal "z" has already been registered.Ndo_-_)__dict__getitemsrR   r   r
   rY   setattr
ValueErrorr\   rs   r    replacern   )r   gsignals
newsignalsr   r   
signalNamefuncNames   &      r   install_signalsr      s     ||3HJ**,ff%%VJ !
T*6*% 8D61O!PQQ%+z"#)#9#9#;H  -   #((*;;"t||C55H3))v{{3	 +r   N)r>   r   r
   r   r`   rC   r   r   r   r   <module>r      s/   & x
S x
vV &".4r   