U
    lufB                     @   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 ejejd
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$   t jt jt jt jd fdd}|S )z!Convert a socket to a zmq stream.)selfargskwargsr   c                    sT   d }| j jtjk	r$| j j}tj| j _z | f||}W 5 |rF|| j _X t|| jS N)contextZ_socket_classzmqZSocketr   loop)r   r   r   Zsave_socket_classsocketr    A/tmp/pip-unpacked-wheel-naub1w99/jupyter_client/ioloop/manager.pywrapped   s    

zas_zmqstream.<locals>.wrapped)tAny)r   r   r   r   r   as_zmqstream   s     r   c                   @   s   e Zd ZU dZedZejdddZe	e
e
dddZed	dd
Zejed< ddddZd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.IOLoopr   c                 C   s
   t j S r   r   IOLoopcurrentr   r   r   r   _loop_default(   s    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   s<   | j r8| jr8| jdkr.| j| | j| | jd| _| j  dS zStart the restarter.N)Zkernel_managerr   parentlogautorestartZ
has_kernelr,   restarter_classr   r/   startr#   r   r   r   start_restarter7   s    
   z#IOLoopKernelManager.start_restarterc                 C   s   | j r| jdk	r| j  dS zStop the restarter.Nr1   r,   stopr#   r   r   r   stop_restarter@   s    z"IOLoopKernelManager.stop_restarter)__name__
__module____qualname____doc__r   r   r   r!   r$   r   r   r2   r,   r   r   __annotations__r4   r8   r   r   connect_shellconnect_controlconnect_iopubconnect_stdin
connect_hbr   r   r   r   r   #   s"   

	



r   c                   @   s   e Zd ZU dZedZejdddZe	e
e
dddZed	dd
Zejed< ddddZd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 )AsyncIOLoopKernelManagerzAn async ioloop kernel manager.r   r   c                 C   s
   t j S r   r    r#   r   r   r   r$   Q   s    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*   r,   Nc                 C   s<   | j r8| jr8| jdkr.| j| | j| | jd| _| j  dS r-   r0   r#   r   r   r   r4   b   s    
   z(AsyncIOLoopKernelManager.start_restarterc                 C   s   | j r| jdk	r| j  dS r5   r6   r#   r   r   r   r8   k   s    z'AsyncIOLoopKernelManager.stop_restarter)r9   r:   r;   r<   r   r   r   r!   r$   r   r
   r2   r,   r   r   r=   r4   r8   r   r   r>   r?   r@   rA   rB   r   r   r   r   rC   L   s(   

 	



rC   )r<   typingr   r   Ztornador   Z	traitletsr   r   Zzmq.eventloop.zmqstreamr   managerr   r   Z	restarterr
   r   r   Callabler   r   rC   r   r   r   r   <module>   s   )