
    Ne                     \    d Z ddlZddl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)Instance)KernelRestarterc                   6    e Zd ZdZ ed      Zd ZdZd Zd Z	y)IOLoopKernelRestarterz!Monitor and autorestart a kernel.ztornado.ioloop.IOLoopc                 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     A/usr/lib/python3/dist-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   )
__name__
__module____qualname____doc__r   loopr   r   r   r    r   r   r   r      s&    ++,D' J	$#r   r   c                       e Zd Zd Zy)AsyncIOLoopKernelRestarterc                 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)NzPolling kernel...   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   r2   r,   r-   r>   s        r   r   zAsyncIOLoopKernelRestarter.poll4   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:N)r   r   r    r   r#   r   r   r%   r%   3   s    .)r   r%   )	r!   r3   r   	traitletsr   jupyter_client.restarterr   r   r%   r#   r   r   <module>rC      s2       4 #O  #F/)!6 /)r   