o
    tf*
                     @   sp   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	 d	e	eZG d
d deeZdS )z9 Defines a KernelClient that provides signals and slots.
    )QtCore)BoolDottedObjectName)KernelManager)KernelRestarter   )QtKernelManagerMixinQtKernelRestarterMixinc                       s4   e Zd Zdd Zdd Z fddZdd Z  ZS )	QtKernelRestarterc                 C   s>   | j d u rt | _ | j j| j | j t| jd  d S )Ni  )	_timerr   ZQTimertimeoutconnectpollstartroundZtime_to_deadself r   Z/var/www/html/software/conda/envs/catlas/lib/python3.10/site-packages/qtconsole/manager.pyr      s   

zQtKernelRestarter.startc                 C   s   | j   d S N)r   stopr   r   r   r   r         zQtKernelRestarter.stopc                    s   t    d S r   )superr   r   	__class__r   r   r      r   zQtKernelRestarter.pollc                 C   s
   d| _ d S )Nr   )Z_restart_countr   r   r   r   reset_count   s   
zQtKernelRestarter.reset_count)__name__
__module____qualname__r   r   r   r   __classcell__r   r   r   r   r
      s
    r
   c                       sl   e Zd ZdZedZedddZ fddZdd Z	d	d
 Z
 fddZdd Z fddZdd Z  ZS )QtKernelManagerz+A KernelManager with Qt signals for restartzqtconsole.client.QtKernelClientT)configc                    s   t  j|i | d| _d S )NF)r   __init___is_restarting)r   argskwargsr   r   r   r"   '   s   
zQtKernelManager.__init__c                 C   sL   | j r"| jr$| jdu rt| | | jd| _| j| j | j  dS dS dS )zStart restarter mechanism.N)Zkernel_managerparentlog)autorestartZ
has_kernel
_restarterr
   r'   Zadd_callback_handle_kernel_restartingr   r   r   r   r   start_restarter+   s   
zQtKernelManager.start_restarterc                 C   s&   | j r| jdur| j  dS dS dS )zStop restarter mechanism.N)r(   r)   r   r   r   r   r   stop_restarter7   s
   
zQtKernelManager.stop_restarterc                    s0   t  jdi | | jr| j  d| _dS dS )zKernel restarted.FNr   )r   post_start_kernelr#   kernel_restartedemitr   kwr   r   r   r-   =   s
   

z!QtKernelManager.post_start_kernelc                 C   s   | j r
| j   dS dS )zReset autorestart count.N)r)   r   r   r   r   r   reset_autorestart_countD   s   z'QtKernelManager.reset_autorestart_countc                    s8   t  jdi |I dH  | jr| j  d| _dS dS )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/   r0   r   r   r   r3   I   s   

z(QtKernelManager._async_post_start_kernelc                 C   s
   d| _ dS )z'Kernel has died, and will be restarted.TN)r#   r   r   r   r   r*   S   s   
z)QtKernelManager._handle_kernel_restarting)r   r   r   __doc__r   Zclient_classr   r(   r"   r+   r,   r-   r2   r3   r*   r   r   r   r   r   r    !   s    
r    N)r4   Zqtpyr   Z	traitletsr   r   Zjupyter_clientr   Zjupyter_client.restarterr   Zkernel_mixinsr   r	   r
   r    r   r   r   r   <module>   s    