§
    �ŸjX  ã                  ó>  — d Z ddlmZ ddlZddlZddlZddlZddlZddl	Z	ddl
mZ ddlmZ ddlZddlmZmZmZmZmZmZmZmZ ddlmZ ddlmZ d	d
lmZ d	dlmZm Z  d	dl!m"Z" d	dl#m$Z$m%Z%m&Z&  G d„ de'¦  «        Z(dd„Z) G d„ de¦  «        Z* G d„ de*¦  «        Z+dS )z%A kernel manager for multiple kernelsé    )ÚannotationsN©Úwraps)ÚPath)ÚAnyÚBoolÚDictÚDottedObjectNameÚInstanceÚUnicodeÚdefaultÚobserve)ÚLoggingConfigurable)Úimport_itemé   )ÚKernelConnectionInfo)ÚNATIVE_KERNEL_NAMEÚKernelSpecManager)ÚKernelManager)Úensure_asyncÚrun_syncÚutcnowc                  ó   — e Zd ZdS )ÚDuplicateKernelErrorN)Ú__name__Ú
__module__Ú__qualname__© ó    ún/var/www/finuniver-perm.ru/html/student/venv/lib/python3.11/site-packages/jupyter_client/multikernelmanager.pyr   r      s   € € € € € Ø€Dr   r   Úfú
t.CallableÚreturnc                ó>   ‡ — t          ‰ ¦  «        d
ˆ fd	„¦   «         }|S )zDdecorator for proxying MKM.method(kernel_id) to individual KMs by IDÚselfút.AnyÚ	kernel_idÚstrÚargsÚkwargsr#   út.Callable | t.Awaitablec                ó†   •— |                       |¦  «        }t          |‰j        ¦  «        } ||i |¤Ž} ‰| |g|¢R i |¤Ž |S ©N)Ú
get_kernelÚgetattrr   )r%   r'   r)   r*   ÚkmÚmethodÚrr!   s          €r    Úwrappedzkernel_method.<locals>.wrapped"   sd   ø€ ð
 �_Š_˜YÑ'Ô'ˆÝ˜˜QœZÑ(Ô(ˆàˆF�DÐ#˜FÐ#Ð#ˆð 	
ˆˆ$�	Ð+˜DÐ+Ð+Ð+ FÐ+Ð+Ð+àˆr   )
r%   r&   r'   r(   r)   r&   r*   r&   r#   r+   r   )r!   r3   s   ` r    Úkernel_methodr4      s:   ø€ õ ˆ1�X„Xðð ð ð ð ñ „Xðð €Nr   c                  ó˜  ‡ — e Zd ZdZ eed¬¦  «                             d¬¦  «        Z ee	d¬¦  «        Z
 edd¬¦  «                             d¬¦  «        Z ed	¦  «        d\d„¦   «         Z ed¬¦  «        Z ed¦  «        d]d„¦   «         Zd]d„Z edd¬¦  «                             d¬¦  «        Z ed¦  «        Z ed¦  «        Z e¦   «         Zed^d„¦   «         Z ed¦  «        d_d„¦   «         Z ed¦  «        Z edd¬¦  «        Z e¦   «         Zd`ˆ fd„Z daˆ fd „Z!dbd"„Z"dcd$„Z#ddd(„Z$ded,„Z%dfd/„Z&dgd4„Z'dhd5„Z(did6„Z)dd7œdjd8„Z* e+e*¦  «        Z,	 	 dkdld<„Z- e+e-¦  «        Z.e/dmdnd=„¦   «         Z0e/	 	 dodpdB„¦   «         Z1e/dmdqdC„¦   «         Z2drdD„Z3dmdsdE„Z4 e+e4¦  «        Z5dtdF„Z6e/dudH„¦   «         Z7dmdvdI„Z8 e+e8¦  «        Z9e/dddJ„¦   «         Z:dtdK„Z;drdL„Z<e/	 dwdxdO„¦   «         Z=e/	 dwdxdP„¦   «         Z>e/dydR„¦   «         Z?e/	 dzd{dV„¦   «         Z@e/	 dzd{dW„¦   «         ZAe/	 dzd{dX„¦   «         ZBe/	 dzd{dY„¦   «         ZCe/	 dzd{dZ„¦   «         ZDd|d[„ZEˆ xZFS )}ÚMultiKernelManagerz&A class for managing multiple kernels.z'The name of the default kernel to start©ÚhelpT©Úconfig)Ú
allow_nonez)jupyter_client.ioloop.IOLoopKernelManagerzƒThe kernel manager class.  This is configurable to allow
        subclassing of the KernelManager for customized behavior.
        Úkernel_manager_classÚchanger&   r#   ÚNonec                ó8   — |                       ¦   «         | _        d S r-   )Ú_create_kernel_manager_factoryÚkernel_manager_factory)r%   r=   s     r    Ú_kernel_manager_class_changedz0MultiKernelManager._kernel_manager_class_changedD   s   € à&*×&IÒ&IÑ&KÔ&KˆÔ#Ð#Ð#r   z)this is kernel_manager_class after importrA   r"   c                ó*   — |                       ¦   «         S r-   )r@   ©r%   s    r    Ú_kernel_manager_factory_defaultz2MultiKernelManager._kernel_manager_factory_defaultJ   s   € à×2Ò2Ñ4Ô4Ð4r   c                ó@   ‡ ‡— t          ‰ j        ¦  «        Šdˆˆ fd„}|S )Nr)   r&   r*   r#   r   c                 ó¦   •— ‰j         r@‰j        j        r‰                     ¦   «         ‰_        |                     d‰j        ¦  «          ‰| i |¤Ž}|S )NÚcontext)Úshared_contextrH   ÚclosedÚ_context_defaultÚ
setdefault)r)   r*   r0   Úkernel_manager_ctorr%   s      €€r    Úcreate_kernel_managerzPMultiKernelManager._create_kernel_manager_factory.<locals>.create_kernel_managerQ   s`   ø€ ØÔ"ð ;Ø”<Ô&ð ;à#'×#8Ò#8Ñ#:Ô#:�D”LØ×!Ò! )¨T¬\Ñ:Ô:Ð:Ø$Ð$ dÐ5¨fÐ5Ð5ˆBØˆIr   )r)   r&   r*   r&   r#   r   )r   r<   )r%   rN   rM   s   ` @r    r@   z1MultiKernelManager._create_kernel_manager_factoryN   s@   øø€ Ý)¨$Ô*CÑDÔDÐð	ð 	ð 	ð 	ð 	ð 	ð 	ð %Ð$r   z4Share a single zmq.Context to talk to all my kernelsúzmq.ContextFÚdictc                ó   — | j         S )z#A shim for backwards compatibility.)Ú_pending_kernelsrD   s    r    Ú_starting_kernelsz$MultiKernelManager._starting_kernelsg   s   € ð Ô$Ð$r   rH   c                ó6   — d| _         t          j        ¦   «         S ©NT)Ú_created_contextÚzmqÚContextrD   s    r    rK   z#MultiKernelManager._context_defaultl   s   € à $ˆÔÝŒ{‰}Œ}Ðr   Ú Nr)   r*   c                óH   •—  t          ¦   «         j        |i |¤Ž i | _        d S r-   )ÚsuperÚ__init__Úkernel_id_to_connection_file)r%   r)   r*   Ú	__class__s      €r    r\   zMultiKernelManager.__init__v   s-   ø€ Ø�‰ŒÔ˜$Ð) &Ð)Ð)Ð)Ø=?ˆÔ)Ð)Ð)r   c                ó  •— | j         rP| j        rI| j        j        s=| j        r| j                             d| ¦  «         | j                             d¬¦  «         	 t          ¦   «         j        } |¦   «          dS # t          $ r Y dS w xY w)z:Handle garbage collection.  Destroy context if applicable.zDestroying zmq context for %siè  )ÚlingerN)	rV   rH   rJ   ÚlogÚdebugÚdestroyr[   Ú__del__ÚAttributeError)r%   Ú	super_delr^   s     €r    rd   zMultiKernelManager.__del__z   s£   ø€ àÔ ð 	. T¤\ð 	.¸$¼,Ô:Mð 	.ØŒxð FØ”—’Ð>ÀÑEÔEÐEØŒL× Ò ¨Ð Ñ-Ô-Ð-ð	Ý™œœˆIð ˆI‰KŒKˆKˆKˆKøõ ð 	ð 	ð 	ØˆDˆDð	øøøs   ÁA9 Á9
BÂBú	list[str]c                ó„  — | j         ��t          | j         ¦  «        }|                     ¦   «         �rêd„ |                     ¦   «         D ¦   «         }t	          | j                             ¦   «         ¦  «        }t	          | j                             ¦   «         ¦  «        }t	          | j                             ¦   «         ¦  «        D ]1}||vr+||                     |¦  «                 }| j        |= | j	        |= Œ2|D �]$}|| j                             ¦   «         v rŒ	 t          j        |                     ¦   «         ¦  «        }n# t          $ r Y ŒSw xY w| j                             d|¦  «         d|v rd|v sŒ{|                      ¦   «         }|| j        |<   |                      | | j        d¬¦  «        }|                     |¦  «         t'          ¦   «         |_        d|_        d	|_        ||_        |d         |_        |j                             d¦  «         || j	        |<   �Œ&t	          | j	                             ¦   «         ¦  «        S )
z6Return a list of the kernel ids of the active kernels.Nc                ó:   — g | ]}|                      ¦   «         ¯|‘ŒS r   )Úis_file)Ú.0Úps     r    ú
<listcomp>z6MultiKernelManager.list_kernel_ids.<locals>.<listcomp>Œ   s*   € Ð#`Ð#`Ð#`¨!ÐTU×T]ÒT]ÑT_ÔT_Ð#` AÐ#`Ð#`Ð#`r   zLoading connection file %sÚkernel_nameÚkeyF)Úparentra   Úowns_kernelÚidler   )Úexternal_connection_dirr   Úis_dirÚiterdirÚlistr]   ÚkeysÚvaluesÚindexÚ_kernelsÚjsonÚloadsÚ	read_textÚ	Exceptionra   rb   Únew_kernel_idrA   Úload_connection_infor   Úlast_activityÚexecution_stateÚconnectionsr'   rn   ÚreadyÚ
set_result)	r%   rs   Úconnection_filesÚkÚvÚconnection_filer'   Úconnection_infor0   s	            r    Úlist_kernel_idsz"MultiKernelManager.list_kernel_ids‡   s[  € àÔ'Ñ3Ý&*¨4Ô+GÑ&HÔ&HÐ#Ø&×-Ò-Ñ/Ô/ñ )2Ø#`Ð#`Ð/F×/NÒ/NÑ/PÔ/PÐ#`Ñ#`Ô#`Ð õ ˜Ô:×?Ò?ÑAÔAÑBÔB�Ý˜Ô:×AÒAÑCÔCÑDÔD�Ý'+¨DÔ,M×,TÒ,TÑ,VÔ,VÑ'WÔ'Wð 5ð 5�OØ&Ð.>Ð>Ð>Ø$% a§g¢g¨oÑ&>Ô&>Ô$?˜	Ø Ô=¸iÐHØ œM¨)Ð4øð (8ð 2ñ 2�OØ&¨$Ô*K×*RÒ*RÑ*TÔ*TÐTÐTØ ð!Ý@DÄ
Ø+×5Ò5Ñ7Ô7ñAô A˜˜øõ %ð !ð !ð !Ø ˜ð!øøøà”H—N’NÐ#?ÀÑQÔQÐQØ)¨_Ð<Ð<ÀÈ/ÐAYÐAYØ à $× 2Ò 2Ñ 4Ô 4�IØCR�DÔ5°iÑ@Ø×4Ò4Ø#Ø œHØ$)ð 5ñ ô �Bð
 ×+Ò+¨OÑ<Ô<Ð<Ý'-¡x¤x�BÔ$Ø)/�BÔ&Ø%&�B”NØ#,�B”LØ%4°]Ô%C�B”NØ”H×'Ò'¨Ñ-Ô-Ð-à/1�D”M )Ñ,Ñ,õ �D”M×&Ò&Ñ(Ô(Ñ)Ô)Ð)s   Ä&D=Ä=
E
Å	E
Úintc                óD   — t          |                      ¦   «         ¦  «        S )z%Return the number of running kernels.)Úlenr‹   rD   s    r    Ú__len__zMultiKernelManager.__len__º   s   € å�4×'Ò'Ñ)Ô)Ñ*Ô*Ð*r   r'   r(   Úboolc                ó   — || j         v S r-   )rz   ©r%   r'   s     r    Ú__contains__zMultiKernelManager.__contains__¾   s   € Ø˜DœMÐ)Ð)r   rn   ú
str | Noneútuple[KernelManager, str, str]c                ó,  — |                      d | j        di |¤Ž¦  «        }|| v rt          d|z  ¦  «        ‚|€| j        }i }| j        r
| j        |d<    | j        dt          j                             | j	        d|z  ¦  «        | | j
        |dœ|¤Ž}|||fS )Nr'   zKernel already exists: %sÚkernel_spec_managerzkernel-%s.json)r‰   rp   ra   rn   r   )Úpopr   r   Údefault_kernel_namer—   rA   ÚosÚpathÚjoinÚconnection_dirra   )r%   rn   r*   r'   Úconstructor_kwargsr0   s         r    Úpre_start_kernelz#MultiKernelManager.pre_start_kernelÁ   sÚ   € ð —J’J˜{Ð,>¨DÔ,>Ð,HÐ,HÀÐ,HÐ,HÑIÔIˆ	Ø˜ÐÐÝ&Ð'BÀYÑ'NÑOÔOÐOàÐØÔ2ˆKð  ÐØÔ#ð 	QØ8<Ô8PÐÐ4Ñ5Ø(ˆTÔ(ð 
ÝœGŸLšL¨Ô)<Ð>NÐQZÑ>ZÑ[Ô[ØØ”Ø#ð	
ð 
ð
 !ð
ð 
ˆð �; 	Ð)Ð)r   Úenvút.Dict[str, str]c               óT   — || v r#| j         |                              |¬¦  «         dS dS )zª
        Allow to update the environment of the given kernel.

        Forward the update env request to the corresponding kernel.

        .. version-added: 8.5
        )r    N)rz   Ú
update_env)r%   r'   r    s      r    r£   zMultiKernelManager.update_envÚ   s;   € ð ˜ÐÐØŒM˜)Ô$×/Ò/°CÐ/Ñ8Ô8Ð8Ð8Ð8ð Ðr   r0   r   Úkernel_awaitableút.Awaitablec              ƒ  óÊ   K  — 	 |ƒ d {V —† || j         |<   | j                             |d ¦  «         d S # t          $ r%}| j                             |¦  «         Y d }~d S d }~ww xY wr-   )rz   rR   r˜   r~   ra   Ú	exception)r%   r'   r0   r¤   Úes        r    Ú_add_kernel_when_readyz)MultiKernelManager._add_kernel_when_readyå   s•   è è € ð	"Ø"Ð"Ð"Ð"Ð"Ð"Ð"Ð"Ø')ˆDŒM˜)Ñ$ØÔ!×%Ò% i°Ñ6Ô6Ð6Ð6Ð6øÝð 	"ð 	"ð 	"ØŒH×Ò˜qÑ!Ô!Ð!Ð!Ð!Ð!Ð!Ð!Ð!øøøøð	"øøøs   „-3 ³
A"½AÁA"c              ƒ  óà   K  — 	 |ƒ d {V —† |                       |¦  «         | j                             |d ¦  «         d S # t          $ r%}| j                             |¦  «         Y d }~d S d }~ww xY wr-   )Úremove_kernelrR   r˜   r~   ra   r§   )r%   r'   r¤   r¨   s       r    Ú_remove_kernel_when_readyz,MultiKernelManager._remove_kernel_when_readyï   s�   è è € ð	"Ø"Ð"Ð"Ð"Ð"Ð"Ð"Ð"Ø×Ò˜yÑ)Ô)Ð)ØÔ!×%Ò% i°Ñ6Ô6Ð6Ð6Ð6øÝð 	"ð 	"ð 	"ØŒH×Ò˜qÑ!Ô!Ð!Ð!Ð!Ð!Ð!Ð!Ð!øøøøð	"øøøs   „8> ¾
A-ÁA(Á(A-c                ó$   — t          | dd¦  «        S )zReturns a boolean; a clearer method for determining if
        this multikernelmanager is using pending kernels or not
        Úuse_pending_kernelsF)r/   rD   s    r    Ú_using_pending_kernelsz)MultiKernelManager._using_pending_kernelsù   s   € õ �tÐ2°EÑ:Ô:Ð:r   )rn   c             ‹  ó  K  — |                       ||¦  «        \  }}}t          |t          ¦  «        s(| j                             d| j        j        › d�¦  «         ||d<   t           |j        di |¤Ž¦  «        }t          j
        |                      |||¦  «        ¦  «        }|| j        |<   |                      ¦   «         r|| j        |<   n:|ƒ d{V —† |j                             ¦   «         r|j                             ¦   «         ‚|S )zéStart a new kernel.

        The caller can pick a kernel_id by passing one in as a keyword arg,
        otherwise one will be generated using new_kernel_id().

        The kernel ID for the newly started kernel is returned.
        zKernel manager class (z() is not an instance of 'KernelManager'!r'   Nr   )rŸ   Ú
isinstancer   ra   Úwarningr<   r^   r   Ústart_kernelÚasyncioÚcreate_taskr©   rR   r¯   rz   r„   r§   )r%   rn   r*   r0   r'   ÚstarterÚtasks          r    Ú_async_start_kernelz&MultiKernelManager._async_start_kernelÿ   s$  è è € ð &*×%:Ò%:¸;ÈÑ%OÔ%OÑ"ˆˆK˜Ý˜"�mÑ,Ô,ð 	ØŒH×ÒØv¨Ô)BÔ)LÐvÐvÐvñô ð ð (ˆˆ{Ñå˜˜rœÐ8Ð8°Ð8Ð8Ñ9Ô9ˆÝÔ" 4×#>Ò#>¸yÈ"ÈgÑ#VÔ#VÑWÔWˆØ+/ˆÔ˜iÑ(à×&Ò&Ñ(Ô(ð 	+ð (*ˆDŒM˜)Ñ$Ð$àˆJˆJˆJˆJˆJˆJˆJàŒx×!Ò!Ñ#Ô#ð +Ø”h×(Ò(Ñ*Ô*Ð*àÐr   Únowúbool | NoneÚrestartc              ƒ  óp  K  — | j                              d|¦  «         || j        v rŒ| j        |         }	 |ƒ d{V —† |                      |¦  «        }t	          j        t          j        |j        ¦  «        ƒ d{V —† n6# t          j	        $ r Y n%t          $ r |                      |¦  «         Y dS w xY w|                      |¦  «        }|j                             ¦   «         s0|j                             ¦   «         r|                      |¦  «         dS t          |                     ||¦  «        ¦  «        }t          j        |                      ||¦  «        ¦  «        }|| j        |<   |                      ¦   «         s:|ƒ d{V —† |j                             ¦   «         r|j                             ¦   «         ‚dS dS )a3  Shutdown a kernel by its kernel uuid.

        Parameters
        ==========
        kernel_id : uuid
            The id of the kernel to shutdown.
        now : bool
            Should the kernel be shutdown forcibly using a signal.
        restart : bool
            Will the kernel be restarted?
        úKernel shutdown: %sN)ra   ÚinforR   r.   ÚtÚcastr´   ÚFuturer„   ÚCancelledErrorr~   r«   Ú	cancelledr§   r   Úshutdown_kernelÚensure_futurer¬   r¯   )r%   r'   r¹   r»   r·   r0   ÚstopperÚfuts           r    Ú_async_shutdown_kernelz)MultiKernelManager._async_shutdown_kernel   sà  è è € ð" 	Œ�ŠÐ+¨YÑ7Ô7Ð7à˜Ô-Ð-Ð-ØÔ(¨Ô3ˆDðØ�
�
�
�
�
�
�
Ø—_’_ YÑ/Ô/�Ý”f�Wœ^¨R¬XÑ6Ô6Ð6Ð6Ð6Ð6Ð6Ð6Ð6Ð6øÝÔ)ð ð ð Ø�Ýð ð ð Ø×"Ò" 9Ñ-Ô-Ð-Ø��ðøøøð �_Š_˜YÑ'Ô'ˆàŒx×!Ò!Ñ#Ô#ð 	¨¬×(:Ò(:Ñ(<Ô(<ð 	Ø×Ò˜yÑ)Ô)Ð)ØˆFÝ˜r×1Ò1°#°wÑ?Ô?Ñ@Ô@ˆÝÔ# D×$BÒ$BÀ9ÈgÑ$VÔ$VÑWÔWˆØ+.ˆÔ˜iÑ(à×*Ò*Ñ,Ô,ð 	+ØˆIˆIˆIˆIˆIˆIˆIàŒx×!Ò!Ñ#Ô#ð +Ø”h×(Ò(Ñ*Ô*Ð*ð		+ð 	+ð+ð +s   µAA= Á=B0ÂB0Â/B0c                ó   — dS )z,Ask a kernel to shut down by its kernel uuidNr   ©r%   r'   r»   s      r    Úrequest_shutdownz#MultiKernelManager.request_shutdownO  ó   € € € r   çš™™™™™¹?Úwaittimeúfloat | NoneÚpollintervalc                ó<   — | j                              d|¦  «         dS )zDWait for a kernel to finish shutting down, and kill it if it doesn'tr½   N©ra   r¾   )r%   r'   rÎ   rÐ   s       r    Úfinish_shutdownz"MultiKernelManager.finish_shutdownS  s!   € ð 	Œ�ŠÐ+¨YÑ7Ô7Ð7Ð7Ð7r   c                ó   — dS )zClean up a kernel's resourcesNr   rÊ   s      r    Úcleanup_resourcesz$MultiKernelManager.cleanup_resources]  rÌ   r   c                ó8   — | j                              |d¦  «        S )záremove a kernel from our mapping.

        Mainly so that a kernel can be removed if it is already dead,
        without having to call shutdown_kernel.

        The kernel object is returned, or `None` if not found.
        N)rz   r˜   r’   s     r    r«   z MultiKernelManager.remove_kernela  s   € ð Œ}× Ò  ¨DÑ1Ô1Ð1r   c              ƒ  óê  ‡ ‡K  — ‰                       ¦   «         }|t          ‰ j        ¦  «        z  }t          ‰ j                             ¦   «         ¦  «        }ˆˆ fd„t          |¦  «        D ¦   «         }t          j        |Ž ƒ d{V —† ‰                      ¦   «         rW|D ]V}	 |j	        ƒ d{V —† Œ# t          j
        $ r' ‰ j        |j                                      ¦   «          Y ŒFt          $ r Y ŒQw xY wdS dS )zShutdown all kernels.c                ó>   •— g | ]}‰                      |‰¬ ¦  «        ‘ŒS )©r¹   )rÈ   )rk   Úkidr¹   r%   s     €€r    rm   z:MultiKernelManager._async_shutdown_all.<locals>.<listcomp>p  s,   ø€ ÐOÐOÐO¸c�×+Ò+¨C°SÐ+Ñ9Ô9ÐOÐOÐOr   N)r‹   rv   rR   rz   rx   Úsetr´   Úgatherr¯   r„   rÂ   r'   Úcancelr~   )r%   r¹   ÚkidsÚkmsÚfutsr0   s   ``    r    Ú_async_shutdown_allz&MultiKernelManager._async_shutdown_allk  s5  øøè è € à×#Ò#Ñ%Ô%ˆØ•�TÔ*Ñ+Ô+Ñ+ˆÝ�4”=×'Ò'Ñ)Ô)Ñ*Ô*ˆØOÐOÐOÐOÐOÅSÈÁYÄYÐOÑOÔOˆÝŒn˜dÐ#Ð#Ð#Ð#Ð#Ð#Ð#Ð#à×&Ò&Ñ(Ô(ð 	Øð ð �ðØœ(�N�N�N�N�N�N�N�NøÝÔ-ð Að Að AØÔ)¨"¬,Ô7×>Ò>Ñ@Ô@Ð@Ð@Ð@Ý ð ð ð à�Dðøøøð	ð 	ðð s   ÂB-Â-3C.Ã"	C.Ã-C.c                óâ   — |                       |¦  «        }|j                             ¦   «         sd}t          |¦  «        ‚|                     ¦   «         }| j                             d|¦  «         |S )z¢Interrupt (SIGINT) the kernel by its uuid.

        Parameters
        ==========
        kernel_id : uuid
            The id of the kernel to interrupt.
        z/Kernel is in a pending state. Cannot interrupt.zKernel interrupted: %s)r.   r„   ÚdoneÚRuntimeErrorÚinterrupt_kernelra   r¾   )r%   r'   ÚkernelÚmsgÚouts        r    rå   z#MultiKernelManager.interrupt_kernel  sk   € ð —’ Ñ+Ô+ˆØŒ|× Ò Ñ"Ô"ð 	$ØCˆCÝ˜sÑ#Ô#Ð#Ø×%Ò%Ñ'Ô'ˆØŒ�ŠÐ.°	Ñ:Ô:Ð:Øˆ
r   Úsignumc                ó>   — | j                              d||¦  «         dS )aR  Sends a signal to the kernel by its uuid.

        Note that since only SIGTERM is supported on Windows, this function
        is only useful on Unix systems.

        Parameters
        ==========
        kernel_id : uuid
            The id of the kernel to signal.
        signum : int
            Signal number to send kernel.
        zSignaled Kernel %s with %sNrÒ   )r%   r'   ré   s      r    Úsignal_kernelz MultiKernelManager.signal_kernel�  s#   € ð 	Œ�ŠÐ2°I¸vÑFÔFÐFÐFÐFr   c              ƒ  ó8  K  — |                       |¦  «        }|                      ¦   «         r*|j                             ¦   «         sd}t	          |¦  «        ‚t          |                     |¬¦  «        ¦  «        ƒ d{V —† | j                             d|¦  «         dS )aE  Restart a kernel by its uuid, keeping the same ports.

        Parameters
        ==========
        kernel_id : uuid
            The id of the kernel to interrupt.
        now : bool, optional
            If True, the kernel is forcefully restarted *immediately*, without
            having a chance to do any cleanup action.  Otherwise the kernel is
            given 1s to clean up before a forceful restart is issued.

            In all cases the kernel is restarted, the only difference is whether
            it is given a chance to perform a clean shutdown or not.
        z-Kernel is in a pending state. Cannot restart.rÙ   NzKernel restarted: %s)	r.   r¯   r„   rã   rä   r   Úrestart_kernelra   r¾   )r%   r'   r¹   ræ   rç   s        r    Ú_async_restart_kernelz(MultiKernelManager._async_restart_kernelŸ  s£   è è € ð —’ Ñ+Ô+ˆØ×&Ò&Ñ(Ô(ð 	$°´×1BÒ1BÑ1DÔ1Dð 	$ØAˆCÝ˜sÑ#Ô#Ð#Ý˜6×0Ò0°SÐ0Ñ9Ô9Ñ:Ô:Ð:Ð:Ð:Ð:Ð:Ð:Ð:ØŒ�ŠÐ,¨iÑ8Ô8Ð8Ð8Ð8r   c                ó   — dS )zìIs the kernel alive.

        This calls KernelManager.is_alive() which calls Popen.poll on the
        actual kernel subprocess.

        Parameters
        ==========
        kernel_id : uuid
            The id of the kernel.
        Nr   r’   s     r    Úis_alivezMultiKernelManager.is_alive·  rÌ   r   c                ó2   — || vrt          d|z  ¦  «        ‚dS )zcheck that a kernel id is validzKernel with id not found: %sN)ÚKeyErrorr’   s     r    Ú_check_kernel_idz#MultiKernelManager._check_kernel_idÄ  s)   € à˜DÐ Ð ÝÐ9¸IÑEÑFÔFÐFð !Ð r   c                óF   — |                       |¦  «         | j        |         S )z¨Get the single KernelManager object for a kernel by its uuid.

        Parameters
        ==========
        kernel_id : uuid
            The id of the kernel.
        )ró   rz   r’   s     r    r.   zMultiKernelManager.get_kernelÉ  s%   € ð 	×Ò˜iÑ(Ô(Ð(ØŒ}˜YÔ'Ð'r   ÚcallbackÚeventc                ó   — dS )z&add a callback for the KernelRestarterNr   ©r%   r'   rõ   rö   s       r    Úadd_restart_callbackz'MultiKernelManager.add_restart_callbackÔ  rÌ   r   c                ó   — dS )z)remove a callback for the KernelRestarterNr   rø   s       r    Úremove_restart_callbackz*MultiKernelManager.remove_restart_callbackÚ  rÌ   r   údict[str, t.Any]c                ó   — dS )aË  Return a dictionary of connection data for a kernel.

        Parameters
        ==========
        kernel_id : uuid
            The id of the kernel.

        Returns
        =======
        connection_dict : dict
            A dict of the information needed to connect to a kernel.
            This includes the ip address and the integer port
            numbers of the different channels (stdin_port, iopub_port,
            shell_port, hb_port).
        Nr   r’   s     r    Úget_connection_infoz&MultiKernelManager.get_connection_infoà  rÌ   r   Úidentityúbytes | Noneúsocket.socketc                ó   — dS )a6  Return a zmq Socket connected to the iopub channel.

        Parameters
        ==========
        kernel_id : uuid
            The id of the kernel
        identity : bytes (optional)
            The zmq identity of the socket

        Returns
        =======
        stream : zmq Socket or ZMQStream
        Nr   ©r%   r'   rÿ   s      r    Úconnect_iopubz MultiKernelManager.connect_iopubò  rÌ   r   c                ó   — dS )a6  Return a zmq Socket connected to the shell channel.

        Parameters
        ==========
        kernel_id : uuid
            The id of the kernel
        identity : bytes (optional)
            The zmq identity of the socket

        Returns
        =======
        stream : zmq Socket or ZMQStream
        Nr   r  s      r    Úconnect_shellz MultiKernelManager.connect_shell  rÌ   r   c                ó   — dS )a8  Return a zmq Socket connected to the control channel.

        Parameters
        ==========
        kernel_id : uuid
            The id of the kernel
        identity : bytes (optional)
            The zmq identity of the socket

        Returns
        =======
        stream : zmq Socket or ZMQStream
        Nr   r  s      r    Úconnect_controlz"MultiKernelManager.connect_control  rÌ   r   c                ó   — dS )a6  Return a zmq Socket connected to the stdin channel.

        Parameters
        ==========
        kernel_id : uuid
            The id of the kernel
        identity : bytes (optional)
            The zmq identity of the socket

        Returns
        =======
        stream : zmq Socket or ZMQStream
        Nr   r  s      r    Úconnect_stdinz MultiKernelManager.connect_stdin(  rÌ   r   c                ó   — dS )a3  Return a zmq Socket connected to the hb channel.

        Parameters
        ==========
        kernel_id : uuid
            The id of the kernel
        identity : bytes (optional)
            The zmq identity of the socket

        Returns
        =======
        stream : zmq Socket or ZMQStream
        Nr   r  s      r    Ú
connect_hbzMultiKernelManager.connect_hb:  rÌ   r   c                óB   — t          t          j        ¦   «         ¦  «        S )zé
        Returns the id to associate with the kernel for this request. Subclasses may override
        this method to substitute other sources of kernel ids.
        :param kwargs:
        :return: string-ized version 4 uuid
        )r(   ÚuuidÚuuid4)r%   r*   s     r    r   z MultiKernelManager.new_kernel_idL  s   € õ •4”:‘<”<Ñ Ô Ð r   )r=   r&   r#   r>   )r#   r"   )r#   rP   )r#   rO   )r)   r&   r*   r&   r#   r>   )r#   r>   )r#   rg   )r#   rŒ   )r'   r(   r#   r�   )rn   r”   r*   r&   r#   r•   )r'   r(   r    r¡   r#   r>   )r'   r(   r0   r   r¤   r¥   r#   r>   )r'   r(   r¤   r¥   r#   r>   )r#   r�   )rn   r”   r*   r&   r#   r(   )FF)r'   r(   r¹   rº   r»   rº   r#   r>   )F)r'   r(   r»   rº   r#   r>   )NrÍ   )r'   r(   rÎ   rÏ   rÐ   rÏ   r#   r>   )r'   r(   r»   r�   r#   r>   )r'   r(   r#   r   )r¹   r�   r#   r>   )r'   r(   r#   r>   )r'   r(   ré   rŒ   r#   r>   )r'   r(   r¹   r�   r#   r>   )r»   )r'   r(   rõ   r"   rö   r(   r#   r>   )r'   r(   r#   rü   r-   )r'   r(   rÿ   r   r#   r  )r*   r&   r#   r(   )Gr   r   r   Ú__doc__r   r   Útagr™   r   r   r—   r
   r<   r   rB   r   rA   r   rE   r@   r   rI   rH   rV   r	   rR   ÚpropertyrS   rK   r�   rs   rz   r\   rd   r‹   r�   r“   rŸ   r£   r©   r¬   r¯   r¸   r   r³   rÈ   rÄ   r4   rË   rÓ   rÕ   r«   rá   Úshutdown_allrå   rë   rî   rí   rð   ró   r.   rù   rû   rþ   r  r  r  r
  r  r   Ú__classcell__)r^   s   @r    r6   r6   4   sò  ø€ € € € € Ø0Ð0à!˜'ØÐ!Jðñ ô ç	‚c�€cÑÔð ð #˜(Ð#4ÀÐFÑFÔFÐà+Ð+Ø3ððñ ô ÷
 
‚c�€cÑÔð ð €WÐ#Ñ$Ô$ðLð Lð Lñ %Ô$ðLð !˜SÐ&QÐRÑRÔRÐà€WÐ%Ñ&Ô&ð5ð 5ð 5ñ 'Ô&ð5ð%ð %ð %ð %ð �TØØCðñ ô ÷ 
‚c�€cÑÔð ð
 ˆh�}Ñ%Ô%€Gà�t˜E‘{”{Ðà�t‘v”vÐàð%ð %ð %ñ „Xð%ð €WˆYÑÔðð ð ñ Ôðð �W˜R‘[”[€NØ%˜g d°tÐ<Ñ<Ô<Ðàˆt‰vŒv€Hð@ð @ð @ð @ð @ð @ðð ð ð ð ð ð1*ð 1*ð 1*ð 1*ðf+ð +ð +ð +ð*ð *ð *ð *ð*ð *ð *ð *ð2	9ð 	9ð 	9ð 	9ð"ð "ð "ð "ð"ð "ð "ð "ð;ð ;ð ;ð ;ð FJð ð ð ð ð ð ð> �8Ð/Ñ0Ô0€Lð
 !Ø$ð	++ð ++ð ++ð ++ð ++ðZ �hÐ5Ñ6Ô6€Oàð;ð ;ð ;ð ;ñ „]ð;ð ð "&Ø%(ð	8ð 8ð 8ð 8ñ „]ð8ð ð,ð ,ð ,ð ,ñ „]ð,ð2ð 2ð 2ð 2ðð ð ð ð ð$ �8Ð/Ñ0Ô0€Lðð ð ð ð  ðGð Gð Gñ „]ðGð9ð 9ð 9ð 9ð 9ð, �XÐ3Ñ4Ô4€Nàð
ð 
ð 
ñ „]ð
ðGð Gð Gð Gð
	(ð 	(ð 	(ð 	(ð àAJð5ð 5ð 5ð 5ñ „]ð5ð
 àAJð8ð 8ð 8ð 8ñ „]ð8ð
 ðð ð ñ „]ðð" à7;ðð ð ð ñ „]ðð" à7;ðð ð ð ñ „]ðð" à7;ðð ð ð ñ „]ðð" à7;ðð ð ð ñ „]ðð" à7;ðð ð ð ñ „]ðð"!ð !ð !ð !ð !ð !ð !ð !r   r6   c                  ó  — e Zd ZU  eddd¬¦  «        Z edd¬¦  «                             d¬¦  «        Z ed	¦  «        Z	 e
d
¦  «        dd„¦   «         Zej        Zded<   ej        Zded<   ej        Zded<   ej        Zded<   dS )ÚAsyncMultiKernelManagerz.jupyter_client.ioloop.AsyncIOLoopKernelManagerTzˆThe kernel manager class.  This is configurable to allow
        subclassing of the AsyncKernelManager for customized behavior.
        )r:   r8   Fz’Whether to make kernels available before the process has started.  The
        kernel has a `.ready` future which can be awaited before connectingr7   r9   úzmq.asyncio.ContextrH   r#   c                óL   — d| _         t          j                             ¦   «         S rU   )rV   rW   r´   rX   rD   s    r    rK   z(AsyncMultiKernelManager._context_defaultg  s   € à $ˆÔÝŒ{×"Ò"Ñ$Ô$Ð$r   zt.Callable[..., t.Awaitable]r³   rí   rÄ   r  N)r#   r  )r   r   r   r
   r<   r   r  r®   r   rH   r   rK   r6   r¸   r³   Ú__annotations__rî   rí   rÈ   rÄ   rá   r  r   r   r    r  r  V  sø   € € € € € € Ø+Ð+Ø8Øððñ ô Ðð ˜$ØðOðñ ô ÷ 
‚c�€cÑÔð	 ð ˆhÐ,Ñ-Ô-€Gà€WˆYÑÔð%ð %ð %ñ Ôð%ð 2DÔ1W€LÐWÐWÐWÑWØ3EÔ3[€NÐ[Ð[Ð[Ñ[Ø4FÔ4]€OÐ]Ð]Ð]Ñ]Ø1CÔ1W€LÐWÐWÐWÑWÐWÐWr   r  )r!   r"   r#   r"   ),r  Ú
__future__r   r´   r{   rš   ÚsocketÚtypingr¿   r  Ú	functoolsr   Úpathlibr   rW   Ú	traitletsr   r   r	   r
   r   r   r   r   Útraitlets.config.configurabler   Útraitlets.utils.importstringr   Úconnectr   Ú
kernelspecr   r   Úmanagerr   Úutilsr   r   r   r~   r   r4   r6   r  r   r   r    ú<module>r&     sð  ðØ +Ð +ð #Ð "Ð "Ð "Ð "Ð "à €€€Ø €€€Ø 	€	€	€	Ø €€€Ø Ð Ð Ð Ø €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à 
€
€
€
Ø \Ð \Ð \Ð \Ð \Ð \Ð \Ð \Ð \Ð \Ð \Ð \Ð \Ð \Ð \Ð \Ð \Ð \Ð \Ð \Ø =Ð =Ð =Ð =Ð =Ð =Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4à )Ð )Ð )Ð )Ð )Ð )Ø =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ø "Ð "Ð "Ð "Ð "Ð "Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1ð	ð 	ð 	ð 	ð 	˜9ñ 	ô 	ð 	ðð ð ð ð*_!ð _!ð _!ð _!ð _!Ð,ñ _!ô _!ð _!ðDXð Xð Xð Xð XÐ0ñ Xô Xð Xð Xð Xr   