
    oi                        d Z ddlm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       y)zAn in-process kernel    )annotationsN)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d	ed
<    eed      Z ed
      d        Z ee      Zded<    ed      d        Z eed      Z fdZ fdZd Zd d!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 r   iopub_threadc                P    t        | j                        }|j                          |S N)r   _underlying_iopub_socketstart)selfthreads     d/home/ubuntu/docker-apps/notebooks/venv/lib/python3.12/site-packages/ipykernel/inprocess/ipkernel.py_default_iopub_threadz%InProcessKernel._default_iopub_thread9   s     T::;    r   iopub_socketc                .    | j                   j                  S r$   )r"   background_socketr'   s    r)   _default_iopub_socketz%InProcessKernel._default_iopub_socketA   s      222r+   c                    t        |   di | | j                  j                  | j                  dg       | j
                  r| | j
                  _        yy)zInitialize the kernel.message_sent)namesNr!   )super__init__r%   observe_io_dispatchshellkernel)r'   traits	__class__s     r)   r5   zInProcessKernel.__init__G   sM    "6"%%--d.?.?GW-X:: $DJJ r+   c                   K   | j                         5  t        | 	  |||       d{    ddd       y7 # 1 sw Y   yxY ww)z&Override for temporary IO redirection.N)_redirected_ior4   execute_request)r'   streamidentparentr;   s       r)   r>   zInProcessKernel.execute_requestO   sL       " 	A')&%@@@	A 	A@	A 	As$   A979	A9AAc                @    | j                   rd| j                   _        yy)z1Override registration of dispatchers for streams.FN)r8   exit_nowr/   s    r)   r&   zInProcessKernel.startT   s    ::"'DJJ r+   c                     y)z-The in-process kernel doesn't abort requests.Nr!   )r'   subshell_ids     r)   _abort_queueszInProcessKernel._abort_queuesY   s    r+   c                   d | _         t        j                  t        j                  j                          t        j                  t        j                  j                          t        t        ||            }| j                  J | j                  j                  d||      }| j                  D ]B  }|J |j                  j                  |d   d   k(  s'|j                  j                  |        n t        j                  d       y| j                   '|j                  j                          | j                   '| j                   S )N)promptpasswordinput_requestheadersessionz'No frontend found for raw_input request )raw_input_strsysstdoutflushstderrr   dictrL   msg	frontendsstdin_channelcall_handlersloggingerrorprocess_events)r'   rH   r@   rA   rI   contentrT   frontends           r)   _input_requestzInProcessKernel._input_request\   s   !::!JJ::!JJ T(CD||'''ll@ 	H'''''6(+;I+FF&&44S9		 MMCD   (""113   (!!!r+   c              #    K   t         j                  t         j                  }}	 | j                  | j                  ct         _        t         _        d ||ct         _        t         _        y# ||ct         _        t         _        w xY ww)z&Temporarily redirect IO to the kernel.N)rO   rP   rR   )r'   
sys_stdout
sys_stderrs      r)   r=   zInProcessKernel._redirected_ioz   sY      "%SZZJ
	<%)[[$++"CJ
%/"CJ
Z"CJ
s   !B/A+ B+BBc                ,   | j                   j                  J | j                  J | j                  j                  | j                   j                  j                  d      \  }}| j
                  D ]!  }|J |j                  j                  |       # y)z/Called when a message is sent to the IO socket.NF)copy)r,   	io_threadrL   recvsocketrU   iopub_channelrW   )r'   change_identrT   r\   s        r)   r7   zInProcessKernel._io_dispatch   s      **666||'''ll''(9(9(C(C(J(JQV'W 	6H'''""005	6r+   logc                4    t        j                  t              S r$   )rX   	getLogger__name__r/   s    r)   _default_logzInProcessKernel._default_log   s      **r+   rL   c                *    ddl m}  || t              S )Nr   )Session)rA   key)jupyter_client.sessionro   r   )r'   ro   s     r)   _default_sessionz InProcessKernel._default_session   s    2d66r+   shell_classc                    t         S r$   )InProcessInteractiveShellr/   s    r)   _default_shell_classz$InProcessKernel._default_shell_class   s    ((r+   rP   c                H    t        | j                  | j                  dd      S )NrP   Fwatchfdr   rL   r"   r/   s    r)   _default_stdoutzInProcessKernel._default_stdout       t'8'8(ERRr+   rR   c                H    t        | j                  | j                  dd      S )NrR   Frx   rz   r/   s    r)   _default_stderrzInProcessKernel._default_stderr   r|   r+   ).)rE   z
str | None)F))rl   
__module____qualname____doc__r	   r   rU   r   guir   rN   rP   rR   r
   rs   r   r%   r   r"   __annotations__shell_streamr   r*   r   r,   r0   stdin_socketr5   r>   r&   rF   r]   r   r=   r7   rm   rr   rv   r{   r~   __classcell__r;   s   @r)   r   r      su    XP]abcI 9
RCEMUFUF $'K'R8 ( 5L+5K,L^ 
 &..>%?L"?^3 3 K,L%A
(
<"< < <6 U^+ + Y7 7
 ]) ) XS S XS Sr+   r   c                  X     e Zd ZU dZ edd      Zded<   d
dZd
 fd	Zd fd		Z	 xZ
S )ru   z An in-process interactive shell.z,ipykernel.inprocess.ipkernel.InProcessKernelTr   r   r9   c                B    |s| j                   j                  }|| _        y)z&Enable GUI integration for the kernel.N)r9   r   active_eventloop)r'   r   s     r)   
enable_guiz$InProcessInteractiveShell.enable_gui   s    ++//C #r+   c                R    |s| j                   j                  }t        |   |      S )z-Enable matplotlib integration for the kernel.)r9   r   r4   enable_matplotlib)r'   r   r;   s     r)   r   z+InProcessInteractiveShell.enable_matplotlib   s#    ++//Cw(--r+   c                T    |s| j                   j                  }t        |   ||      S )z"Activate pylab support at runtime.)r9   r   r4   enable_pylab)r'   r   
import_allr;   s      r)   r   z&InProcessInteractiveShell.enable_pylab   s%    ++//Cw#C44r+   r$   )NT)rl   r   r   r   r   r9   r   r   r   r   r   r   s   @r)   ru   ru      s0    *&64FO $.5 5r+   ru   )!r   
__future__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   ru   registerr!   r+   r)   <module>r      sf     #  
 % = > > , ) 2 ? ? $ JSm JSd5 3 5<    6 7r+   