
    fB                     h    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e      Z	 G d	 d
e	      Z
y)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                   @    e Zd ZdZ ed      ZdefdZdZddZ	ddZ
y)	IOLoopKernelRestarterz!Monitor and autorestart a kernel.ztornado.ioloop.IOLoopreturnc                 z    t        j                  dt        d       ddlm} |j
                  j                         S )Nz>IOLoopKernelRestarter.loop is deprecated in jupyter-client 5.2   )
stacklevelr   )ioloop)warningswarnDeprecationWarningtornador   IOLoopcurrent)selfr   s     Z/var/www/cvtools/html/venv/lib/python3.12/site-packages/jupyter_client/ioloop/restarter.py_loop_defaultz#IOLoopKernelRestarter._loop_default   s/    L	

 	#}}$$&&    Nc                     | j                   Fddlm}  || j                  d| j                  z        | _         | j                   j                          yy)z Start the polling of the kernel.Nr   )PeriodicCallbacki  )
_pcallbacktornado.ioloopr   polltime_to_deadstart)r   r   s     r   r   zIOLoopKernelRestarter.start"   sG    ??"7.		t(((DO OO!!# #r   c                 `    | j                   "| j                   j                          d| _         yy)zStop the kernel polling.N)r   stop)r   s    r   r    zIOLoopKernelRestarter.stop-   s(    ??&OO  ""DO 'r   r	   N)__name__
__module____qualname____doc__r   loopr   r   r   r   r     r   r   r   r      s-    ++,D's ' J	$#r   r   c                       e Zd ZdZddZy)AsyncIOLoopKernelRestarterz"An async io loop kernel restarter.Nc                 x  K   | j                   r| j                  j                  d       | j                  j                          d{   }t	        j                         }|s"|| _        | j                  r| xj                  dz  c_        nd| _        | j                  | j                  kD  rK| j                  j                  d       | j                  d       d| _        d| _        | j                          y| j                  xr | j                  }| j                  j                  d| j                  | j                  |rd	nd
       | j                  d       | j                  j                  d|       d{    d| _        y| j                   }| j                  j"                  r&| j                  j"                  j%                  |      }| j                  r|| j
                  z
  |k\  rd| _        | j                  r6|| j
                  z
  |k\  r#| j                  j                  d       d| _        yyy7 7 w)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   r6   r0   r1   rB   s        r   r   zAsyncIOLoopKernelRestarter.poll7   s    ::HHNN./,,5577iik!DO##q(#&'#""T%7%77  !MN$$V,#( &'#		88RT=R=R\''&&%E6	 $$Y/))88TH8UUU#'  !% 6 6""..$($7$7$C$C$Y$Y 1 %Z %! $$t)>BS)S(-%C$//$9=N$NYZ#(  %OS 80 Vs&   AH:H5D0H:8H89B=H:8H:r!   )r"   r#   r$   r%   r   r'   r   r   r)   r)   4   s
    ,/)r   r)   )r%   r7   r   typingr   	traitletsr   	restarterr   r   r)   r'   r   r   <module>rH      s5        ' #O  #F2)!6 2)r   