o
    º¼tf:  ã                   @   sÀ   d Z ddlmZ ddlmZmZmZ ddlmZ ddl	m
Z
 ddlmZ ddlmZmZ dd	lmZ G d
d„ deeƒZG dd„ deeƒZG dd„ deeƒZG dd„ deeƒZG dd„ deƒZdS )z= Defines an in-process KernelManager with signals and slots.
é    )ÚQtCore)ÚInProcessHBChannelÚInProcessKernelClientÚInProcessKernelManager)ÚInProcessChannel)ÚTypeé   )ÚSuperQObject)ÚQtKernelClientMixinÚQtKernelManagerMixin)ÚRichJupyterWidgetc                       sp   e Zd Ze ¡ Ze ¡ Ze e¡Z‡ fdd„Z	‡ fdd„Z
dd„ Zdd„ Zd	d
„ Zd‡ fdd„	Zdd„ Z‡  ZS )ÚQtInProcessChannelc                    ó   t ƒ  ¡  | j ¡  dS ©z' Reimplemented to emit signal.
        N)ÚsuperÚstartÚstartedÚemit©Úself©Ú	__class__© ú\/var/www/html/software/conda/envs/catlas/lib/python3.10/site-packages/qtconsole/inprocess.pyr      ó   
zQtInProcessChannel.startc                    r   r   )r   ÚstopÚstoppedr   r   r   r   r   r   !   r   zQtInProcessChannel.stopc                    s"   ‡ ‡‡fdd„}t j d|¡ dS )z* Call the message handlers later.
        c                      s   ˆj ˆ i ˆ¤ŽS ©N)Úcall_handlersr   ©ÚargsÚkwdsr   r   r   Ú<lambda>*   s    z8QtInProcessChannel.call_handlers_later.<locals>.<lambda>r   N)r   ZQTimerZ
singleShot)r   r    r!   Zdo_laterr   r   r   Úcall_handlers_later'   s   z&QtInProcessChannel.call_handlers_laterc                 C   s   | j  |¡ d S r   )Úmessage_receivedr   )r   Úmsgr   r   r   r   -   s   z QtInProcessChannel.call_handlersc                 C   s   t j ¡  ¡  dS )z) Process any pending GUI events.
        N)r   ZQCoreApplicationÚinstanceZprocessEventsr   r   r   r   Úprocess_events0   s   z!QtInProcessChannel.process_eventsç      ð?c                    s   t ƒ  ¡  |  ¡  dS )zJ Reimplemented to ensure that signals are dispatched immediately.
        N)r   Úflushr'   )r   Útimeoutr   r   r   r)   5   s   
zQtInProcessChannel.flushc                 C   s   dS )z> Function to ensure compatibility with the QtZMQSocketChannel.Fr   r   r   r   r   Úclosed;   s   zQtInProcessChannel.closed)r(   )Ú__name__Ú
__module__Ú__qualname__r   ÚSignalr   r   Úobjectr$   r   r   r#   r   r'   r)   r+   Ú__classcell__r   r   r   r   r      s    
r   c                   @   s   e Zd Ze ¡ ZdS )ÚQtInProcessHBChannelN)r,   r-   r.   r   r/   Zkernel_diedr   r   r   r   r2   @   s    r2   c                   @   s0   e Zd ZdZeeƒZeeƒZeeƒZee	ƒZ
dS )ÚQtInProcessKernelClientz9 An in-process KernelManager with signals and slots.
    N)r,   r-   r.   Ú__doc__r   r   Ziopub_channel_classZshell_channel_classZstdin_channel_classr2   Zhb_channel_classr   r   r   r   r3   E   s    r3   c                   @   s   e Zd Zed ZdS )ÚQtInProcessKernelManagerz.QtInProcessKernelClientN)r,   r-   r.   Zclient_classr   r   r   r   r5   N   s    r5   c                   @   s   e Zd ZdZddd„ZdS )ÚQtInProcessRichJupyterWidgetzA An in-process Jupyter Widget that enables multiline editing
    Tc                 C   s<   | j jj}|j |¡\}}|d u rd}nd| }|dk|fS )NÚ ú Ú
incomplete)Zkernel_managerZkernelÚshellZinput_transformer_managerZcheck_complete)r   ÚsourceÚinteractiver:   ÚstatusZindent_spacesÚindentr   r   r   Ú_is_completeV   s   

ÿz)QtInProcessRichJupyterWidget._is_completeN)T)r,   r-   r.   r4   r?   r   r   r   r   r6   R   s    r6   N)r4   Zqtpyr   Zipykernel.inprocessr   r   r   Zipykernel.inprocess.channelsr   Z	traitletsr   Úutilr	   Zkernel_mixinsr
   r   Zrich_jupyter_widgetr   r   r2   r3   r5   r6   r   r   r   r   Ú<module>   s    /	