%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /usr/lib/python3/dist-packages/gi/__pycache__/
Upload File :
Create Path :
Current File : //usr/lib/python3/dist-packages/gi/__pycache__/_signalhelper.cpython-312.pyc

�

��fW$��H�ddlmZGd�de�ZGd�de�Zd�Zd�Zy)	�)�_gic�v�eZdZdZGd�de�Zdd�Zddejdddddfd�Z	d
d�Z
d	�Zd
d
�Zd�Z
y)�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�@�eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zy
)�Signal.BoundSignalz�
        Temporary binding object which can be used for connecting signals
        without specifying the signal name string to connect.
        c�.�tj||�S�N)�str�__new__��cls�name�args�kargss    �2/usr/lib/python3/dist-packages/gi/_signalhelper.pyrzSignal.BoundSignal.__new__Ns���;�;�s�D�)�)�c�J�tj|�||_||_yr	)r
�__init__�signal�gobj)�selfrrs   rrzSignal.BoundSignal.__init__Qs���L�L��� �D�K��D�Irc��d|zS)NzBoundSignal("%s")��rs r�__repr__zSignal.BoundSignal.__repr__Vs
��&��-�-rc�V�|jj|jg|��i|��S)zCall the signals closure.)r�funcr�rrrs   r�__call__zSignal.BoundSignal.__call__Ys'��#�4�;�;�#�#�D�I�I�>��>��>�>rc�D�|jj||g|��i|��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�9�$�$�T�8�D�d�D�e�D�Drc�P�|jj|dz|z|g|��i|��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_detailedbs0��%�4�9�9�$�$�T�D�[�6�%9�8�T�d�T�e�T�Trc�:�|jj|�y)z"Same as GObject.Object.disconnect.N)r�
disconnect)r�
handler_ids  rr(zSignal.BoundSignal.disconnectjs���I�I� � ��,rc�T�|jjt|�g|��i|��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�9�>�>�#�d�)�<�d�<�e�<�<rN)�__name__�
__module__�__qualname__�__doc__rrrrr"r&r(r+rrr�BoundSignalrIs1��	�	*�	�
	.�	?�	E�
	U�	-�	=rr0�c�\�t|�r|j}tj||�Sr	)�callabler,r
rrs    rrzSignal.__new__ss#���D�>��=�=�D��{�{�3��%�%rNc	��|�
t|�r|}|r|s|j}tj|�|r|s|st	|�\}}|�
t�}||_||_||_||_	||_||_
||_yr	)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��D����,�,�C����T����	�%;�D�%A�"�K������I���	���
�&���"������&���"��rc�.�|�|S|j||�S)z:Returns a BoundSignal when accessed on an object instance.)r0)r�instance�owners   r�__get__zSignal.__get__�s �����K�����h�/�/rc
�T�t|tj�r|j|g|��i|��yt	|�rt	|�}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�;�;�'��D�I�I�c�*�D�*�E�*��4�y��4�y���|�|���4��:�4�c����*.�*:�*:�d�n�n�"&�,�,�D�<L�<L�X\�Xf�Xf�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�sN���t�D�z�w�T�Y�Y�d�j�j�&*�&6�&6�$�.�.�"�l�l��8H�8H�TX�Tb�Tb�d�	drc�t�|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�n�d�>N�>N�PT�P^�P^�_�_r)r1r	)r,r-r.r/r
r0rr�SIGNAL_RUN_FIRSTrr@rrIrKrrrrrsQ��0�b(=�c�(=�T&�
�T��1E�1E�!�T�r�t�W[�#�.0�h�(d�`rrc��eZdZdZd�Zy)�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��y)zReturns the string 'override'.�overriderrs rrKzSignalOverride.get_signal_args�s��rN)r,r-r.r/rKrrrrNrN�s���rrNc����t�}d}t|d�rPddl}|j|��t�fd��jD��}d�j
vr�j
d}||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�X�K�|]!}|�jvr�j|���#y�wr	)�annotations)�.0�arg�specs  �r�	<genexpr>z)get_signal_annotations.<locals>.<genexpr>�s1�����6�C� �D�$4�$4�4��*�*�3�/�6�s�'*�return)r6�hasattr�inspect�getfullargspecrrU)rr9r8r\rXs    @rr5r5�sr�����I��K��t�&�'���%�%�d�+���6�4�9�9�6�6�	��t�'�'�'��*�*�8�4�K��	�!�!rc��|jjdi�}i}|jj�D]m\}}t|t�s�t|�}|s |}|j
|�}t|||�||vrtd|z��|||<|j�||<�o||_
|j�D]K\}}|j��d|jdd�z}t||�r�5t|||j��My)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�s
���|�|�����3�H��J����*�*�,�
<���f��f�f�%��V��J��!�
����T�*����T�6�*��X�%� �!K�d�!R�S�S�%+�J�z�"�#)�#9�#9�#;�H�Z� �
<� �C��#�(�(�*�4���f��;�;�"��t�|�|�C��5�5�H��3��)���X�v�{�{�3�	4rN)r1rr
rrNr5rmrrr�<module>rns1��(�[`�S�[`�|�V��$"�*4r

Zerion Mini Shell 1.0