o
    œhî  ã                   @   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   úQc:\Users\shubh\Videos\agent\nova\Lib\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   Z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)r3   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