o
    Zh                     @   sf   d Z ddlmZ ddlmZ ddlmZ ddlmZm	Z	m
Z
 ddlmZ G dd	 d	eZee d
S )z(A kernel manager for in-process kernels.    )KernelManager)KernelManagerABC)Session)DottedObjectNameInstancedefault   )INPROCESS_KEYc                       s   e Zd ZdZedddZedZeddd Z	ed	d
d Z
dd Zdd ZdddZedd Zdd Zdd Zdd Zdd Z fddZ  ZS ) InProcessKernelManagera*  A manager for an in-process kernel.

    This class implements the interface of
    `jupyter_client.kernelmanagerabc.KernelManagerABC` and allows
    (asynchronous) frontends to be used seamlessly with an in-process kernel.

    See `jupyter_client.kernelmanager.KernelManager` for docstrings.
    z,ipykernel.inprocess.ipkernel.InProcessKernelT)
allow_nonez1ipykernel.inprocess.BlockingInProcessKernelClientZblocking_classc                 C   s   ddl m} |S )Nr   )BlockingInProcessKernelClient)blockingr   )selfr    r   R/var/www/html/lang_env/lib/python3.10/site-packages/ipykernel/inprocess/manager.py_default_blocking_class   s   z.InProcessKernelManager._default_blocking_classsessionc                 C   s   t t| dS )N)keyparent)r   r	   r   r   r   r   _default_session#   s   z'InProcessKernelManager._default_sessionc                 K   s    ddl m} || | jd| _dS )zStart the kernel.r   )InProcessKernel)r   r   N)Zipykernel.inprocess.ipkernelr   r   kernel)r   kwdsr   r   r   r   start_kernel,   s   z#InProcessKernelManager.start_kernelc                 C   s"   | j r| j j  |   dS dS )zShutdown the kernel.N)r   Ziopub_threadstop_kill_kernelr   r   r   r   shutdown_kernel2   s   z&InProcessKernelManager.shutdown_kernelFc                 K   s   |    | jdi | dS )zRestart the kernel.Nr   )r   r   )r   nowr   r   r   r   restart_kernel8   s   z%InProcessKernelManager.restart_kernelc                 C   s
   | j d uS Nr   r   r   r   r   
has_kernel=      
z!InProcessKernelManager.has_kernelc                 C   s
   d | _ d S r    r!   r   r   r   r   r   A   s   
z#InProcessKernelManager._kill_kernelc                 C   s   d}t |)zInterrupt the kernel.z#Cannot interrupt in-process kernel.NotImplementedError)r   msgr   r   r   interrupt_kernelD      z'InProcessKernelManager.interrupt_kernelc                 C   s   d}t |)zSend a signal to the kernel.z Cannot signal in-process kernel.r$   )r   signumr&   r   r   r   signal_kernelI   r(   z$InProcessKernelManager.signal_kernelc                 C   s
   | j duS )zTest if the kernel is alive.Nr!   r   r   r   r   is_aliveN   r#   zInProcessKernelManager.is_alivec                    s   | j |d< t jdi |S )zGet a client for the kernel.r   Nr   )r   superclient)r   kwargs	__class__r   r   r-   R   s   
zInProcessKernelManager.client)F)__name__
__module____qualname____doc__r   r   r   Zclient_classr   r   r   r   r   r   propertyr"   r   r'   r*   r+   r-   __classcell__r   r   r/   r   r
      s$    




r
   N)r4   Zjupyter_client.managerr   Zjupyter_client.managerabcr   Zjupyter_client.sessionr   Z	traitletsr   r   r   	constantsr	   r
   registerr   r   r   r   <module>   s    N