a
    œòJbÁ
  ã                   @   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                       sh   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‡  ZS )ÚQtInProcessChannelc                    s   t ƒ  ¡  | j ¡  dS ©z' Reimplemented to emit signal.
        N)ÚsuperÚstartÚstartedÚemit©Úself©Ú	__class__© ú2lib/python3.9/site-packages/qtconsole/inprocess.pyr      s    
zQtInProcessChannel.startc                    s   t ƒ  ¡  | j ¡  dS r   )r   ÚstopÚstoppedr   r   r   r   r   r   !   s    
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>*   ó    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.flush)r'   )Ú__name__Ú
__module__Ú__qualname__r   ÚSignalr   r   Úobjectr#   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   r0   <   s   r0   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_classr0   Zhb_channel_classr   r   r   r   r1   A   s
   r1   c                   @   s   e Zd Zed ZdS )ÚQtInProcessKernelManagerz.QtInProcessKernelClientN)r*   r+   r,   Zclient_classr   r   r   r   r3   J   s   r3   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Ú ú Z
incomplete)Zkernel_managerZkernelÚshellZinput_transformer_managerZcheck_complete)r   ÚsourceÚinteractiver7   ÚstatusZindent_spacesÚindentr   r   r   Ú_is_completeR   s    

ÿz)QtInProcessRichJupyterWidget._is_completeN)T)r*   r+   r,   r2   r<   r   r   r   r   r4   N   s   r4   N)r2   Zqtpyr   Zipykernel.inprocessr   r   r   Zipykernel.inprocess.channelsr   Z	traitletsr   Úutilr	   Zkernel_mixinsr
   r   Zrich_jupyter_widgetr   r   r0   r1   r3   r4   r   r   r   r   Ú<module>   s   +	