§
    �ŸjÝ  ã                  ón   — d Z ddlmZ ddlZddlZddlmZmZm	Z	m
Z
mZmZ ddlmZ  G d„ de¦  «        ZdS )zÊA basic kernel monitor with autorestarting.

This watches a kernel's state using KernelManager.is_alive and auto
restarts the kernel if it dies.

It is an incomplete base class, and must be subclassed.
é    )ÚannotationsN)ÚBoolÚDictÚFloatÚInstanceÚIntegerÚdefault)ÚLoggingConfigurablec                  ó„  — e Zd ZdZ ed¦  «        Z eddd¬¦  «        Z eddd¬¦  «        Z	 ed	dd
¬¦  «        Z
 eddd¬¦  «        Z eddd¬¦  «        Z ed¦  «        Z ed¦  «        Z ed¦  «        Z e¦   «         Z ed¦  «        d#d„¦   «         Z e¦   «         Zd$d„Zd%d„Zd%d„Zd&d'd„Zd&d'd„Zd(d „Zd%d!„Zd"S ))ÚKernelRestarterz!Monitor and autorestart a kernel.zjupyter_client.KernelManagerFTz�Whether to include every poll event in debugging output.

        Has to be set explicitly, because there will be *a lot* of output.
        )ÚconfigÚhelpg      @z%Kernel heartbeat interval in seconds.g      $@zOThe time in seconds to consider the kernel to have completed a stable start up.é   zJThe number of consecutive autorestarts before the kernel is presumed dead.zNWhether to choose new random ports when restarting before the kernel is alive.r   Ú
_last_deadÚreturnÚfloatc                ó(   — t          j         ¦   «         S )N)Útime©Úselfs    úe/var/www/finuniver-perm.ru/html/student/venv/lib/python3.11/site-packages/jupyter_client/restarter.pyÚ_default_last_deadz"KernelRestarter._default_last_dead:   s   € åŒy‰{Œ{Ðó    údict[str, list]c                ó   — g g dœS )N)ÚrestartÚdead© r   s    r   Ú_callbacks_defaultz"KernelRestarter._callbacks_default@   s   € Ø rÐ*Ð*Ð*r   ÚNonec                ó$   — d}t          |¦  «        ‚)z Start the polling of the kernel.ú!Must be implemented in a subclass©ÚNotImplementedError©r   Úmsgs     r   ÚstartzKernelRestarter.startC   ó   € à1ˆÝ! #Ñ&Ô&Ð&r   c                ó$   — d}t          |¦  «        ‚)zStop the kernel polling.r"   r#   r%   s     r   ÚstopzKernelRestarter.stopH   r(   r   r   Úfút.Callable[..., t.Any]ÚeventÚstrc                óF   — | j         |                              |¦  «         dS )zçregister a callback to fire on a particular event

        Possible values for event:

          'restart' (default): kernel has died, and will be restarted.
          'dead': restart has failed, kernel will be left dead.

        N)Ú	callbacksÚappend©r   r+   r-   s      r   Úadd_callbackzKernelRestarter.add_callbackM   s%   € ð 	Œ�uÔ×$Ò$ QÑ'Ô'Ð'Ð'Ð'r   c                ój   — 	 | j         |                              |¦  «         dS # t          $ r Y dS w xY w)zéunregister a callback to fire on a particular event

        Possible values for event:

          'restart' (default): kernel has died, and will be restarted.
          'dead': restart has failed, kernel will be left dead.

        N)r0   ÚremoveÚ
ValueErrorr2   s      r   Úremove_callbackzKernelRestarter.remove_callbackX   sJ   € ð	ØŒN˜5Ô!×(Ò(¨Ñ+Ô+Ð+Ð+Ð+øÝð 	ð 	ð 	ØˆDˆDð	øøøs   ‚ $ ¤
2±2út.Anyc                ó˜   — | j         |         D ];}	  |¦   «          Œ# t          $ r! | j                             d||d¬¦  «         Y Œ8w xY wdS )z)fire our callbacks for a particular eventz&KernelRestarter: %s callback %r failedT)Úexc_infoN)r0   Ú	ExceptionÚlogÚerror)r   r-   Úcallbacks      r   Ú_fire_callbackszKernelRestarter._fire_callbacksf   s‚   € àœ uÔ-ð 		ð 		ˆHðØ�‘
”
�
�
øÝð ð ð Ø”—’Ø<ØØØ!ð	 ñ ô ð ð ð ðøøøð		ð 		s   ‘
œ(AÁAc                óú  — | j         r| j                              d¦  «         | j        j        r| j                              d¦  «         d S t	          j        ¦   «         }| j                             ¦   «         sü|| _        | j        r| xj        dz  c_        nd| _        | j        | j	        k    rS| j         
                    d¦  «         |                      d¦  «         d| _        d| _        |                      ¦   «          d S | j        o| j        }| j                             d| j        | j	        |rd	nd
¦  «         |                      d¦  «         | j                             d|¬¦  «         d| _        d S | j        }| j        j        r | j        j                             |¬¦  «        }| j        r|| j        z
  |k    rd| _        | j        r1|| j        z
  |k    r%| j                              d¦  «         d| _        d S d S d S )NzPolling kernel...zKernel shutdown in progress...é   zKernelRestarter: restart failedr   Fr   z;KernelRestarter: restarting kernel (%i/%i), %s random portsÚnewÚkeepr   T)ÚnowÚnewports)Úrecommendedz-KernelRestarter: restart apparently succeeded)Údebugr<   Úkernel_managerÚshutting_downr   Úis_aliver   Ú_restartingÚ_restart_countÚrestart_limitÚwarningr?   r*   Úrandom_ports_until_aliveÚ_initial_startupÚinfoÚrestart_kernelÚstable_start_timeÚprovisionerÚget_stable_start_time)r   rD   rE   rS   s       r   ÚpollzKernelRestarter.polls   s1  € ØŒ:ð 	0ØŒH�NŠNÐ.Ñ/Ô/Ð/ØÔÔ,ð 	ØŒH�NŠNÐ;Ñ<Ô<Ð<ØˆFÝŒi‰kŒkˆØÔ"×+Ò+Ñ-Ô-ð )	)Ø!ˆDŒOØÔð (ØÐ#Ô# qÑ(Ð#Ô#Ð#à&'�Ô#àÔ" TÔ%7Ò7Ð7Ø”× Ò Ð!BÑCÔCÐCØ×$Ò$ VÑ,Ô,Ð,Ø#(�Ô Ø&'�Ô#Ø—	’	‘”���àÔ8ÐR¸TÔ=R�Ø”—’ØQØÔ'ØÔ&Ø%Ð1�E�E¨6ñ	ô ð ð ×$Ò$ YÑ/Ô/Ð/ØÔ#×2Ò2°tÀhÐ2ÑOÔOÐOØ#'�Ô Ð Ð ð !%Ô 6ÐØÔ"Ô.ð Ø$(Ô$7Ô$C×$YÒ$YØ 1ð %Zñ %ô %Ð!ð Ô$ð .¨¨t¬Ñ)>ÐBSÒ)SÐ)SØ(-�Ô%ØÔð ) C¨$¬/Ñ$9Ð=NÒ$NÐ$NØ”—’ÐNÑOÔOÐOØ#(�Ô Ð Ð ð)ð )Ð$NÐ$Nr   N)r   r   )r   r   )r   r    )r   )r+   r,   r-   r.   r   r    )r-   r8   r   r    )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   rH   r   rG   r   Útime_to_deadrS   r   rM   rO   rK   rL   rP   r   r	   r   r   r0   r   r'   r*   r3   r7   r?   rV   r   r   r   r   r      sÈ  € € € € € Ø+Ð+à�XÐ<Ñ=Ô=€NàˆDØØððñ ô €Eð �5˜ TÐ0[Ð\Ñ\Ô\€Là˜ØØØbðñ ô Ðð �GØ	ØØ]ðñ ô €Mð  $˜tØØØað ñ  ô  Ðð
 �$�u‘+”+€KØ�W˜Q‘Z”Z€NØ�t˜D‘z”zÐØ�‘”€Jà€Wˆ\ÑÔðð ð ñ Ôðð �‘”€Ið+ð +ð +ð +ð'ð 'ð 'ð 'ð
'ð 'ð 'ð 'ð
	(ð 	(ð 	(ð 	(ð 	(ðð ð ð ð ðð ð ð ð0)ð 0)ð 0)ð 0)ð 0)ð 0)r   r   )rZ   Ú
__future__r   r   ÚtypingÚtÚ	traitletsr   r   r   r   r   r	   Útraitlets.config.configurabler
   r   r   r   r   ú<module>ra      s¹   ððð ð #Ð "Ð "Ð "Ð "Ð "à €€€Ø Ð Ð Ð à CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CØ =Ð =Ð =Ð =Ð =Ð =ðO)ð O)ð O)ð O)ð O)Ð)ñ O)ô O)ð O)ð O)ð O)r   