o
    ^iC                     @   s\   d Z ddlZddlZddlmZ ddlmZ ddlmZ G dd deZ	G d	d
 d
e	Z
dS )zA basic in process kernel monitor with autorestarting.

This watches a kernel's state using KernelManager.is_alive and auto
restarts the kernel if it dies.
    N)Any)Instance   )KernelRestarterc                   @   s>   e Zd ZdZedZdefddZdZdddZ	dd	d
Z
dS )IOLoopKernelRestarterz!Monitor and autorestart a kernel.ztornado.ioloop.IOLoopreturnc                 C   s&   t jdtdd ddlm} |j S )Nz>IOLoopKernelRestarter.loop is deprecated in jupyter-client 5.2   )
stacklevelr   )ioloop)warningswarnDeprecationWarningtornador
   IOLoopcurrent)selfr
    r   Z/home/ubuntu/hpml_nyu/venv/lib/python3.10/site-packages/jupyter_client/ioloop/restarter.py_loop_default   s   
z#IOLoopKernelRestarter._loop_defaultNc                 C   s<   | j du rddlm} || jd| j | _ | j   dS dS )z Start the polling of the kernel.Nr   )PeriodicCallbacki  )
_pcallbacktornado.ioloopr   polltime_to_deadstart)r   r   r   r   r   r   #   s   
zIOLoopKernelRestarter.startc                 C   s"   | j dur| j   d| _ dS dS )zStop the kernel polling.N)r   stop)r   r   r   r   r   .   s   


zIOLoopKernelRestarter.stopr   N)__name__
__module____qualname____doc__r   loopr   r   r   r   r   r   r   r   r   r      s    

r   c                   @   s   e Zd ZdZdddZdS )AsyncIOLoopKernelRestarterz"An async io loop kernel restarter.r   Nc                    sJ  | j r
| j d | j I dH }t }|sp|| _| jr&|  jd7  _nd| _| j| jkrF| j	d | 
d d| _d| _|   dS | joK| j}| jd| j| j|rXd	nd
 | 
d | jjd|dI dH  d| _dS | j}| jjr| jjj|d}| jr|| j |krd| _| jr|| j |kr| j d d| _dS dS dS )zPoll the kernel.zPolling kernel...N   z*AsyncIOLoopKernelRestarter: restart faileddeadFr   zFAsyncIOLoopKernelRestarter: restarting kernel (%i/%i), %s random portsnewkeeprestartT)nownewports)recommendedz8AsyncIOLoopKernelRestarter: restart apparently succeeded)debuglogkernel_manageris_alivetime
_last_dead_restarting_restart_countrestart_limitwarning_fire_callbacksr   random_ports_until_alive_initial_startupinforestart_kernelstable_start_timeprovisionerget_stable_start_time)r   r.   r(   r)   r:   r   r   r   r   8   sJ   



	
zAsyncIOLoopKernelRestarter.pollr   )r   r   r   r    r   r   r   r   r   r"   5   s    r"   )r    r/   r   typingr   	traitletsr   	restarterr   r   r"   r   r   r   r   <module>   s    #