B
    \f                 @   sl   d 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 d	d
 ZG dd deZdS )z&A kernel manager with a tornado IOLoop    )absolute_import)ioloop)	ZMQStream)InstanceType)KernelManager   )IOLoopKernelRestarterc                s    fdd}|S )Nc                s    | f||}t || jS )N)r   loop)selfargskwargsZsocket)f <lib/python3.7/site-packages/jupyter_client/ioloop/manager.pywrapped   s    zas_zmqstream.<locals>.wrappedr   )r   r   r   )r   r   as_zmqstream   s    r   c               @   sp   e Zd ZedZdd ZeeedddZedddZ	d	d
 Z
dd ZeejZeejZeejZeejZdS )IOLoopKernelManagerztornado.ioloop.IOLoopc             C   s
   t j S )N)r   ZIOLoopZ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)Zdefault_valueklasshelpZconfigz+jupyter_client.ioloop.IOLoopKernelRestarter)Z
allow_nonec             C   s<   | j r8| jr8| jd kr.| j| | j| | jd| _| j  d S )N)Zkernel_managerr
   parentlog)autorestartZ
has_kernel
_restarterrestarter_classr
   r   start)r   r   r   r   start_restarter,   s    
z#IOLoopKernelManager.start_restarterc             C   s   | j r| jd k	r| j  d S )N)r   r   stop)r   r   r   r   stop_restarter5   s    
z"IOLoopKernelManager.stop_restarterN)__name__
__module____qualname__r   r
   r   r   r	   r   r   r   r   r   r   Zconnect_shellZconnect_iopubZconnect_stdinZ
connect_hbr   r   r   r   r      s   	


r   N)__doc__Z
__future__r   Zzmq.eventloopr   Zzmq.eventloop.zmqstreamr   Z	traitletsr   r   Zjupyter_client.managerr   Z	restarterr	   r   r   r   r   r   r   <module>   s   