HEX
Server: Apache/2.4.68 (Debian)
System: Linux as-cs-widget-demo-us-central1 6.1.0-44-cloud-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.164-1 (2026-03-09) x86_64
User: root (0)
PHP: 8.2.32
Disabled: NONE
Upload Files
File: //lib/python3/dist-packages/gi/__pycache__/_signalhelper.cpython-311.pyc
�

��	^W$��V�ddlmZGd�de��ZGd�de��Zd�Zd�ZdS)	�)�_gic�t�eZdZdZGd�de��Zdd�Zddejdddddfd�Z	d
d�Z
d	�Zd
d
�Zd�Z
dS)�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�B�eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
S)�Signal.BoundSignalz�
        Temporary binding object which can be used for connecting signals
        without specifying the signal name string to connect.
        c�8�t�||��S�N)�str�__new__��cls�name�args�kargss    �2/usr/lib/python3/dist-packages/gi/_signalhelper.pyrzSignal.BoundSignal.__new__Ns���;�;�s�D�)�)�)�c�V�t�|��||_||_dSr	)r
�__init__�signal�gobj)�selfrrs   rrzSignal.BoundSignal.__init__Qs&���L�L����� �D�K��D�I�I�Irc��d|zS)NzBoundSignal("%s")��rs r�__repr__zSignal.BoundSignal.__repr__Vs
��&��-�-rc�8�|jj|jg|�Ri|��S)zCall the signals closure.)r�funcr�rrrs   r�__call__zSignal.BoundSignal.__call__Ys)��#�4�;�#�D�I�>��>�>�>��>�>�>rc�0�|jj||g|�Ri|��S)z^Same as GObject.Object.connect except there is no need to specify
            the signal name.�r�connect)r�callbackrrs    rr"zSignal.BoundSignal.connect]s+��%�4�9�$�T�8�D�d�D�D�D�e�D�D�Drc�<�|jj|dz|z|g|�Ri|��S)a
Same 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!)rr#�detailrrs     r�connect_detailedz#Signal.BoundSignal.connect_detailedbs4��%�4�9�$�T�D�[�6�%9�8�T�d�T�T�T�e�T�T�Trc�:�|j�|��dS)z"Same as GObject.Object.disconnect.N)r�
disconnect)r�
handler_ids  rr(zSignal.BoundSignal.disconnectjs���I� � ��,�,�,�,�,rc�H�|jjt|��g|�Ri|��S)z[Same as GObject.Object.emit except there is no need to specify
            the signal name.)r�emitr
rs   rr+zSignal.BoundSignal.emitns.��"�4�9�>�#�d�)�)�<�d�<�<�<�e�<�<�<rN)�__name__�
__module__�__qualname__�__doc__rrrrr"r&r(r+rrr�BoundSignalrIs�������	�	�	*�	*�	*�	�	�	�
	.�	.�	.�	?�	?�	?�	E�	E�	E�
	U�	U�	U�	-�	-�	-�	=�	=�	=�	=�	=rr0�c�d�t|��r|j}t�||��Sr	)�callabler,r
rrs    rrzSignal.__new__ss+���D�>�>�	!��=�D��{�{�3��%�%�%rNc	�(�|�t|��r|}|r	|s|j}t�|��|r|s|st	|��\}}|�t��}||_||_||_||_	||_||_
||_dSr	)r3r/r
r�get_signal_annotations�tupler�flags�return_type�	arg_types�accumulator�	accu_data)	rrrr7r8r9�docr:r;s	         rrzSignal.__init__xs����<�H�T�N�N�<��D��	��	��,�C����T�����	B��	B�	�	B�%;�D�%A�%A�"�K�������I���	���
�&���"������&���"����rc�6�|�|S|�||��S)z:Returns a BoundSignal when accessed on an object instance.)r0)r�instance�owners   r�__get__zSignal.__get__�s#�����K�����h�/�/�/rc
�$�t|tj��r|j|g|�Ri|��dSt	|��rt	|��}n|j}t
|��|||j|j|j	|j
|j|j���S)zmAllows for instantiated Signals to be used as a decorator or calling
        of the underlying signal method.�rrr7r8r9r<r:r;N)
�
isinstancer�GObjectrr
r,�typer7r8r9r/r:r;)r�objrrrs     rrzSignal.__call__�s����c�3�;�'�'�	h��D�I�c�*�D�*�*�*�E�*�*�*�*�*��4�y�y�
$��4�y�y����|���4��:�:�4�c���*.�*:�d�n�"&�,�D�<L�X\�Xf�h�h�h�
hrc
��t|��||j|j|j|j|j|j|j���S)z%Returns a renamed copy of the Signal.rB)rErr7r8r9r/r:r;)r�newNames  r�copyzSignal.copy�sK���t�D�z�z�w�T�Y�d�j�&*�&6�$�.�"�l��8H�TX�Tb�d�d�d�	drc�B�|j|j|j|j|jfS)zKReturns a tuple of: (flags, return_type, arg_types, accumulator, accu_data))r7r8r9r:r;rs r�get_signal_argszSignal.get_signal_args�s!���
�D�,�d�n�d�>N�PT�P^�_�_r)r1r	)r,r-r.r/r
r0rr�SIGNAL_RUN_FIRSTrr@rrIrKrrrrrs�������0�0�b(=�(=�(=�(=�(=�c�(=�(=�(=�T&�&�&�&�
�T��1E�!�T�r�t�W[�#�#�#�#�.0�0�0�0�h�h�h�(d�d�d�d�`�`�`�`�`rrc��eZdZdZd�ZdS)�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��dS)zReturns the string 'override'.�overriderrs rrKzSignalOverride.get_signal_args�s���zrN)r,r-r.r/rKrrrrNrN�s-������������rrNc����t��}d}t|d��rOddl}|�|���t�fd��jD����}d�jvr
�jd}||fS)aAttempt 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__�c3�D�K�|]}|�jv��j|V��dSr	)�annotations)�.0�arg�specs  �r�	<genexpr>z)get_signal_annotations.<locals>.<genexpr>�sD�����6�6�C� �D�$4�4�4��*�3�/�4�4�4�4�6�6r�return)r6�hasattr�inspect�getfullargspecrrU)rr9r8r\rXs    @rr5r5�s�������I��K��t�&�'�'�5������%�%�d�+�+���6�6�6�6�4�9�6�6�6�6�6�	��t�'�'�'��*�8�4�K��	�!�!rc�L�|j�di��}i}|j���D]�\}}t|t��rkt|��}|s(|}|�|��}t|||��||vrtd|z���|||<|�	��||<��||_
|���D]K\}}|j�?d|�dd��z}t||��st|||j���LdS)z�Adds Signal instances on a GObject derived class into the '__gsignals__'
    dictionary to be picked up and registered as real GObject signals.
    �__gsignals__z(Signal "%s" has already been registered.N�do_�-�_)�__dict__�get�itemsrCrr
rI�setattr�
ValueErrorrKr_r�replacer[)r
�gsignals�
newsignalsrr�
signalName�funcNames       r�install_signalsrm�sJ���|�����3�3�H��J���*�*�,�,�
<�
<���f��f�f�%�%�	<��V���J��
+�!�
����T�*�*����T�6�*�*�*��X�%�%� �!K�d�!R�S�S�S�%+�J�z�"�#)�#9�#9�#;�#;�H�Z� ���C��#�(�(�*�*�4�4���f��;�"��t�|�|�C��5�5�5�H��3��)�)�
4���X�v�{�3�3�3��	4�4rN)r1rr
rrNr5rmrrr�<module>rns���(������[`�[`�[`�[`�[`�S�[`�[`�[`�|�����V����$"�"�"�*4�4�4�4�4r