
    g*
                     |    d Z ddlmZ ddlmZmZ ddlmZ ddlm	Z	 ddl
mZmZ  G d d	e	e      Z G d
 dee      Zy)z9 Defines a KernelClient that provides signals and slots.
    )QtCore)BoolDottedObjectName)KernelManager)KernelRestarter   )QtKernelManagerMixinQtKernelRestarterMixinc                   0     e Zd Zd Zd Z fdZd Z xZS )QtKernelRestarterc                    | j                   Ht        j                         | _         | j                   j                  j	                  | j
                         | j                   j                  t        | j                  dz               y )Ni  )	_timerr   QTimertimeoutconnectpollstartroundtime_to_deadselfs    1lib/python3.12/site-packages/qtconsole/manager.pyr   zQtKernelRestarter.start   sW    ;; --/DKKK''		2% 1 1D 89:    c                 8    | j                   j                          y N)r   stopr   s    r   r   zQtKernelRestarter.stop   s    r   c                 "    t         |           y r   )superr   )r   	__class__s    r   r   zQtKernelRestarter.poll   s    r   c                     d| _         y )Nr   )_restart_countr   s    r   reset_countzQtKernelRestarter.reset_count   s
    r   )__name__
__module____qualname__r   r   r   r"   __classcell__r   s   @r   r   r      s    ; r   r   c                   r     e Zd ZdZ ed      Z edd      Z fdZd Z	d Z
 fdZd	 Z fd
Zd Z xZS )QtKernelManagerz+A KernelManager with Qt signals for restartzqtconsole.client.QtKernelClientT)configc                 2    t        |   |i | d| _        y )NF)r   __init___is_restarting)r   argskwargsr   s      r   r,   zQtKernelManager.__init__'   s    $)&)#r   c                    | j                   rv| j                  ri| j                  Bt        | | | j                        | _        | j                  j                  | j                         | j                  j                          yyy)zStart restarter mechanism.N)kernel_managerparentlog)autorestart
has_kernel
_restarterr   r3   add_callback_handle_kernel_restartingr   r   s    r   start_restarterzQtKernelManager.start_restarter+   sf    &"3#'#
 ,,T-K-KLOO!!# !0r   c                 l    | j                   r(| j                  | j                  j                          yyy)zStop restarter mechanism.N)r4   r6   r   r   s    r   stop_restarterzQtKernelManager.stop_restarter7   s/    *$$& + r   c                     t        |   di | | j                  r"| j                  j	                          d| _        yy)zKernel restarted.FN )r   post_start_kernelr-   kernel_restartedemitr   kwr   s     r   r>   z!QtKernelManager.post_start_kernel=   s;    !'B'!!&&("'D r   c                 R    | j                   r| j                   j                          yy)zReset autorestart count.N)r6   r"   r   s    r   reset_autorestart_countz'QtKernelManager.reset_autorestart_countD   s    ??OO'') r   c                    K   t        |   di | d{    | j                  r"| j                  j	                          d| _        yy7 3w)z
        This is necessary for Jupyter-client 8+ because `start_kernel` doesn't
        call `post_start_kernel` directly.
        NFr=   )r   _async_post_start_kernelr-   r?   r@   rA   s     r   rF   z(QtKernelManager._async_post_start_kernelI   sL     
 g.4444!!&&("'D  	5s   AA
4Ac                     d| _         y)z'Kernel has died, and will be restarted.TN)r-   r   s    r   r8   z)QtKernelManager._handle_kernel_restartingS   s
    "r   )r#   r$   r%   __doc__r   client_classr   r4   r,   r9   r;   r>   rD   rF   r8   r&   r'   s   @r   r)   r)   !   s@    5#$EFLtD)K$
$'(*
(#r   r)   N)rH   qtpyr   	traitletsr   r   jupyter_clientr   jupyter_client.restarterr   kernel_mixinsr	   r
   r   r)   r=   r   r   <module>rO      s;     - ( 4 G )?  $4#m%9 4#r   