
    Mh                         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e          Z G d de          Z ej        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                       e Zd ZU dZ e edd                    Z edd          Z e	            Z
 e	            Z e	            Z ed          Z eed          Z ee          Zeed	<    eed          Z ed	          d
             Z ee          Zeed<    ed          d             Z eed          Z fdZ fdZd Zd Zd Zd dZ e!d             Z"d Z# ed          d             Z$ ed          d             Z% ed          d             Z& ed          d             Z' ed          d             Z( xZ)S )!InProcessKernelzAn in-process kernel.z0ipykernel.inprocess.client.InProcessKernelClientT
allow_none)tkgtkwxqtqt4inliner   )default_value iopub_threadc                 V    t          | j                  }|                                 |S N)r   _underlying_iopub_socketstart)selfthreads     \/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/ipykernel/inprocess/ipkernel.py_default_iopub_threadz%InProcessKernel._default_iopub_thread8   s$    T:;;    iopub_socketc                     | j         j        S r#   )r!   background_socketr&   s    r(   _default_iopub_socketz%InProcessKernel._default_iopub_socket@   s     22r*   c                      t                      j        di | | j                            | j        dg           | j        r| | j        _        dS dS )zInitialize the kernel.message_sent)namesNr    )super__init__r$   observe_io_dispatchshellkernel)r&   traits	__class__s     r(   r4   zInProcessKernel.__init__F   sf    ""6"""%--d.?GW-XXX: 	% $DJ	% 	%r*   c                    K   |                                  5  t                                          |||           d{V  ddd           dS # 1 swxY w Y   dS )z&Override for temporary IO redirection.N)_redirected_ior3   execute_request)r&   streamidentparentr:   s       r(   r=   zInProcessKernel.execute_requestN   s        "" 	A 	A''))&%@@@@@@@@@	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	As   *AAAc                 0    | j         rd| j         _        dS dS )z1Override registration of dispatchers for streams.FN)r7   exit_nowr.   s    r(   r%   zInProcessKernel.startS   s&    : 	("'DJ	( 	(r*   c                     dS )z-The in-process kernel doesn't abort requests.Nr    r.   s    r(   _abort_queueszInProcessKernel._abort_queuesX   s      r*   c                 
   K   dS )z.No need to flush control queues for in-processNr    r.   s    r(   _flush_control_queuez$InProcessKernel._flush_control_queue[   s
        r*   Fc                 "   d | _         t          j                                         t          j                                         t          t          ||                    }| j        J | j                            d||          }| j	        D ]>}|J |j        j        |d         d         k    r|j
                            |            n?t          j        d           dS | j          |j
                                         | j          | j         S )N)promptpasswordinput_requestheadersessionz'No frontend found for raw_input request )raw_input_strsysstderrflushstdoutr   dictrL   msg	frontendsstdin_channelcall_handlersloggingerrorprocess_events)r&   rH   r?   r@   rI   contentrT   frontends           r(   _input_requestzInProcessKernel._input_request^   s   !

 T(CCCDD|'''l@@ 	 	H''''6(+;I+FFF&44S999 G MCDDD2  ("11333  (!!r*   c              #      K   t           j        t           j        }}	 | j        | j        ct           _        t           _        dV  ||ct           _        t           _        dS # ||ct           _        t           _        w xY w)z&Temporarily redirect IO to the kernel.N)rO   rR   rP   )r&   
sys_stdout
sys_stderrs      r(   r<   zInProcessKernel._redirected_ioz   sg       "%SZJ
	<%)[$+"CJ
EEE%/"CJ


Z"CJ
;;;;s   'A A9c                     | j         j        J | j        J | j                            | j         j        j        d          \  }}| j        D ] }|J |j                            |           !dS )z/Called when a message is sent to the IO socket.NF)copy)r+   	io_threadrL   recvsocketrU   iopub_channelrW   )r&   changer?   rT   r\   s        r(   r6   zInProcessKernel._io_dispatch   s     *666|'''\&&t'8'B'IPU&VV
s 	6 	6H'''"005555	6 	6r*   logc                 4    t          j        t                    S r#   )rX   	getLogger__name__r.   s    r(   _default_logzInProcessKernel._default_log   s     ***r*   rL   c                 2    ddl m}  || t                    S )Nr   )Session)r@   key)jupyter_client.sessionrn   r   )r&   rn   s     r(   _default_sessionz InProcessKernel._default_session   s)    222222wd6666r*   shell_classc                     t           S r#   )InProcessInteractiveShellr.   s    r(   _default_shell_classz$InProcessKernel._default_shell_class   s    ((r*   rR   c                 <    t          | j        | j        dd          S )NrR   Fwatchfdr   rL   r!   r.   s    r(   _default_stdoutzInProcessKernel._default_stdout       t'8(ERRRRr*   rP   c                 <    t          | j        | j        dd          S )NrP   Frw   ry   r.   s    r(   _default_stderrzInProcessKernel._default_stderr   r{   r*   )F)*rk   
__module____qualname____doc__r   r   rU   r   guir   rN   rR   rP   r	   rr   r   r$   r   r!   __annotations__shell_streamr
   r)   r   r+   r/   stdin_socketr4   r=   r%   rD   rF   r]   r   r<   r6   rl   rq   ru   rz   r}   __classcell__r:   s   @r(   r   r      s         XXP]abbbccI $9
R
R
RCCEEMSUUFSUUF $$'''K'xR88 ( 5 5L+5558K,,LW^  
 &.X.>%?%?L"???W^3 3 3 8K,,L% % % % %A A A A A
( ( (
< < <= = =" " " "8 < < ^<6 6 6 WU^^+ + ^+ WY7 7 7
 W]) ) ) WXS S S WXS S S S S S Sr*   r   c                   ^     e Zd ZU dZ edd          Zeed<   ddZd fd	Z	d fd
	Z
 xZS )rt   z An in-process interactive shell.z,ipykernel.inprocess.ipkernel.InProcessKernelTr   r8   Nc                 0    |s| j         j        }|| _        dS )z&Enable GUI integration for the kernel.N)r8   r   active_eventloop)r&   r   s     r(   
enable_guiz$InProcessInteractiveShell.enable_gui   s!     	"+/C #r*   c                 b    |s| j         j        }t                                          |          S )z-Enable matplotlib integration for the kernel.)r8   r   r3   enable_matplotlib)r&   r   r:   s     r(   r   z+InProcessInteractiveShell.enable_matplotlib   s,     	"+/Cww((---r*   Fc                 f    |s| j         j        }t                                          |||          S )z"Activate pylab support at runtime.)r8   r   r3   enable_pylab)r&   r   
import_allwelcome_messager:   s       r(   r   z&InProcessInteractiveShell.enable_pylab   s0     	"+/Cww##C_EEEr*   r#   )NTF)rk   r~   r   r   r   r8   r   r   r   r   r   r   r   s   @r(   rt   rt      s         **&h64  FO   $ $ $ $. . . . . .F F F F F F F F F Fr*   rt   )r   rX   rO   
contextlibr   IPython.core.interactiveshellr   	traitletsr   r   r   r   r	   r
   ipykernel.ipkernelr   ipykernel.jsonutilr   ipykernel.zmqshellr   iostreamr   r   r   	constantsr   re   r   r   rt   registerr    r*   r(   <module>r      sv    
  



 % % % % % % = = = = = = > > > > > > > > > > > > > > > > , , , , , , ) ) ) ) ) ) 2 2 2 2 2 2 ? ? ? ? ? ? ? ? ? ? $ $ $ $ $ $      KS KS KS KS KSm KS KS KSfF F F F F 3 F F F<   6 7 7 7 7 7r*   