o
    œh§  ã                   @   sÊ   d Z ddlZddlZddlmZ ddlmZ ddlmZm	Z	m
Z
mZmZm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 ddlmZ G dd„ deƒZG dd„ deƒZe e¡ dS )zAn in-process kernelé    N)Úcontextmanager)ÚInteractiveShellABC)ÚAnyÚEnumÚInstanceÚListÚTypeÚdefault)ÚIPythonKernel)Ú
json_clean)ÚZMQInteractiveShellé   )ÚBackgroundSocketÚIOPubThreadÚ	OutStreamé   )ÚINPROCESS_KEY)ÚDummySocketc                       sJ  e Zd ZU dZeeddd�ƒZeddd�Ze	ƒ Z
e	ƒ Ze	ƒ Zedd�ZeedƒZeeƒZeed	< eedƒZed	ƒd
d„ ƒZeeƒZeed< edƒdd„ ƒZeedƒZ‡ fdd„Z‡ fdd„Zdd„ Zdd„ Zdd„ Zd/dd„Z e!dd„ ƒZ"dd„ Z#ed ƒd!d"„ ƒZ$ed#ƒd$d%„ ƒZ%ed&ƒd'd(„ ƒZ&ed)ƒd*d+„ ƒZ'ed,ƒd-d.„ ƒZ(‡  Z)S )0ÚInProcessKernelzAn in-process kernel.z0ipykernel.inprocess.client.InProcessKernelClientT©Ú
allow_none)ZtkZgtkZwxZqtZqt4Úinliner   )Údefault_value© Úiopub_threadc                 C   s   t | jƒ}| ¡  |S ©N)r   Ú_underlying_iopub_socketÚstart)ÚselfÚthreadr   r   úRc:\Users\shubh\Videos\agent\nova\Lib\site-packages\ipykernel/inprocess/ipkernel.pyÚ_default_iopub_thread8   s   
z%InProcessKernel._default_iopub_threadÚiopub_socketc                 C   s   | j jS r   )r   Zbackground_socket©r   r   r   r    Ú_default_iopub_socket@   s   z%InProcessKernel._default_iopub_socketc                    s<   t ƒ jdi |¤Ž | jj| jdgd� | jr| | j_dS dS )zInitialize the kernel.Zmessage_sent)ÚnamesNr   )ÚsuperÚ__init__r   ZobserveÚ_io_dispatchÚshellÚkernel)r   Ztraits©Ú	__class__r   r    r'   F   s
   ÿzInProcessKernel.__init__c                 ƒ   sF   �|   ¡ � tƒ  |||¡I dH  W d  ƒ dS 1 sw   Y  dS )z&Override for temporary IO redirection.N)Ú_redirected_ior&   Úexecute_request)r   ÚstreamÚidentÚparentr+   r   r    r.   N   s   €
"ÿzInProcessKernel.execute_requestc                 C   s   | j r	d| j _dS dS )z1Override registration of dispatchers for streams.FN)r)   Zexit_nowr#   r   r   r    r   S   s   ÿzInProcessKernel.startc                 C   s   dS )z-The in-process kernel doesn't abort requests.Nr   r#   r   r   r    Ú_abort_queuesX   s    zInProcessKernel._abort_queuesc                 Ã   s   �dS )z.No need to flush control queues for in-processNr   r#   r   r   r    Ú_flush_control_queue[   s    z$InProcessKernel._flush_control_queueFc                 C   s¶   d | _ tj ¡  tj ¡  tt||d�ƒ}| jd usJ ‚| j d||¡}| j	D ]}|d us/J ‚|jj|d d krA|j
 |¡  nq't d¡ dS | j d u rX|j
 ¡  | j d u sN| j S )N)ÚpromptÚpasswordZinput_requestÚheaderÚsessionz'No frontend found for raw_input requestÚ )Úraw_input_strÚsysÚstderrÚflushÚstdoutr   Údictr7   ÚmsgÚ	frontendsZstdin_channelÚcall_handlersÚloggingÚerrorZprocess_events)r   r4   r0   r1   r5   Úcontentr?   Úfrontendr   r   r    Ú_input_request^   s$   


þ



ÿzInProcessKernel._input_requestc              	   c   sN   � t jt j}}z| j| jt _t _dV  W ||t _t _dS ||t _t _w )z&Temporarily redirect IO to the kernel.N)r:   r=   r;   )r   Z
sys_stdoutZ
sys_stderrr   r   r    r-   z   s   €"zInProcessKernel._redirected_ioc                 C   s`   | j jdusJ ‚| jdusJ ‚| jj| j jjdd�\}}| jD ]}|dus'J ‚|j |¡ qdS )z/Called when a message is sent to the IO socket.NF)Úcopy)r"   Z	io_threadr7   ÚrecvÚsocketr@   Ziopub_channelrA   )r   Zchanger0   r?   rE   r   r   r    r(   †   s   
þzInProcessKernel._io_dispatchÚlogc                 C   s
   t  t¡S r   )rB   Ú	getLoggerÚ__name__r#   r   r   r    Ú_default_log‘   s   
zInProcessKernel._default_logr7   c                 C   s   ddl m} || td�S )Nr   )ÚSession)r1   Úkey)Zjupyter_client.sessionrN   r   )r   rN   r   r   r    Ú_default_session•   s   z InProcessKernel._default_sessionÚshell_classc                 C   s   t S r   )ÚInProcessInteractiveShellr#   r   r   r    Ú_default_shell_class›   s   z$InProcessKernel._default_shell_classr=   c                 C   ó   t | j| jddd�S )Nr=   F©Zwatchfd©r   r7   r   r#   r   r   r    Ú_default_stdoutŸ   ó   zInProcessKernel._default_stdoutr;   c                 C   rT   )Nr;   FrU   rV   r#   r   r   r    Ú_default_stderr£   rX   zInProcessKernel._default_stderr)F)*rL   Ú
__module__Ú__qualname__Ú__doc__r   r   r@   r   Úguir   r9   r=   r;   r   rQ   r   r   r   r   Ú__annotations__Zshell_streamr	   r!   r   r"   r$   Zstdin_socketr'   r.   r   r2   r3   rF   r   r-   r(   rM   rP   rS   rW   rY   Ú__classcell__r   r   r+   r    r      sH   
 











r   c                       sP   e Zd ZU dZeddd�Zeed< ddd„Zd‡ fd	d
„	Z	d‡ fdd„	Z
‡  ZS )rR   z An in-process interactive shell.z,ipykernel.inprocess.ipkernel.InProcessKernelTr   r*   Nc                 C   s   |s| j j}|| _dS )z&Enable GUI integration for the kernel.N)r*   r]   Zactive_eventloop©r   r]   r   r   r    Ú
enable_gui¸   s   
z$InProcessInteractiveShell.enable_guic                    s   |s| j j}tƒ  |¡S )z-Enable matplotlib integration for the kernel.)r*   r]   r&   Úenable_matplotlibr`   r+   r   r    rb   ¾   s   z+InProcessInteractiveShell.enable_matplotlibFc                    s   |s| j j}tƒ  |||¡S )z"Activate pylab support at runtime.)r*   r]   r&   Úenable_pylab)r   r]   Z
import_allZwelcome_messager+   r   r    rc   Ä   s   z&InProcessInteractiveShell.enable_pylabr   )NTF)rL   rZ   r[   r\   r   r*   r   r^   ra   rb   rc   r_   r   r   r+   r    rR   ­   s   
 ÿ
rR   )r\   rB   r:   Ú
contextlibr   ZIPython.core.interactiveshellr   Z	traitletsr   r   r   r   r   r	   Zipykernel.ipkernelr
   Zipykernel.jsonutilr   Zipykernel.zmqshellr   Ziostreamr   r   r   Ú	constantsr   rI   r   r   rR   Úregisterr   r   r   r    Ú<module>   s       