o
    ^iC                     @   s   d Z ddlZddl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 dd	lmZmZ d
ejdejfddZG dd deZG dd deZdS )z&A kernel manager with a tornado IOLoop    N)ioloop)InstanceType)	ZMQStream   )AsyncKernelManagerKernelManager   )AsyncIOLoopKernelRestarterIOLoopKernelRestarterfreturnc                    s*   dt jdt jdt jdt jf fdd}|S )z!Convert a socket to a zmq stream.selfargskwargsr   c                    sf   d }| j jtjur| j j}tj| j _z | g|R i |}W |r%|| j _n|r,|| j _w t|| jS N)context_socket_classzmqSocketr   loop)r   r   r   save_socket_classsocketr    X/home/ubuntu/hpml_nyu/venv/lib/python3.10/site-packages/jupyter_client/ioloop/manager.pywrapped   s   

zas_zmqstream.<locals>.wrapped)tAny)r   r   r   r   r   as_zmqstream   s   &r   c                   @      e Zd ZU dZedZdejfddZe	e
e
dddZed	dd
Zejed< dddZdddZeejZeejZeejZeejZeejZdS )IOLoopKernelManagerzAn io loop kernel manager.tornado.ioloop.IOLoopr   c                 C   
   t j S r   r   IOLoopcurrentr   r   r   r   _loop_default)      
z!IOLoopKernelManager._loop_defaultzType of KernelRestarter to use. Must be a subclass of IOLoopKernelRestarter.
Override this to customize how kernel restarts are managed.Tdefault_valueklasshelpconfigz+jupyter_client.ioloop.IOLoopKernelRestarter
allow_none
_restarterNc                 C   D   | j r| jr | jdu r| j| | j| | jd| _| j  dS dS dS zStart the restarter.N)kernel_managerr   parentlogautorestart
has_kernelr1   restarter_classr   r6   startr'   r   r   r   start_restarter8      
z#IOLoopKernelManager.start_restarterc                 C   &   | j r| jdur| j  dS dS dS zStop the restarter.Nr8   r1   stopr'   r   r   r   stop_restarterA      z"IOLoopKernelManager.stop_restarterr   N)__name__
__module____qualname____doc__r   r   r   r%   r(   r   r   r:   r1   r   r   __annotations__r<   rB   r   r   connect_shellconnect_controlconnect_iopubconnect_stdin
connect_hbr   r   r   r   r!   $   s$   
 


	



r!   c                   @   r    )AsyncIOLoopKernelManagerzAn async ioloop kernel manager.r"   r   c                 C   r#   r   r$   r'   r   r   r   r(   R   r)   z&AsyncIOLoopKernelManager._loop_defaultzType of KernelRestarter to use. Must be a subclass of AsyncIOLoopKernelManager.
Override this to customize how kernel restarts are managed.Tr*   z0jupyter_client.ioloop.AsyncIOLoopKernelRestarterr/   r1   Nc                 C   r2   r3   r7   r'   r   r   r   r<   c   r=   z(AsyncIOLoopKernelManager.start_restarterc                 C   r>   r?   r@   r'   r   r   r   rB   l   rC   z'AsyncIOLoopKernelManager.stop_restarterrD   )rE   rF   rG   rH   r   r   r   r%   r(   r   r
   r:   r1   r   r   rI   r<   rB   r   r   rJ   rK   rL   rM   rN   r   r   r   r   rO   M   s(   
 


	



rO   )rH   typingr   r   tornador   	traitletsr   r   zmq.eventloop.zmqstreamr   managerr   r   	restarterr
   r   r   Callabler   r!   rO   r   r   r   r   <module>   s    )