
    Xhe                         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       y)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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                 P    t        | j                        }|j                          |S N)r   _underlying_iopub_socketstart)selfthreads     P/var/www/html/myenv/lib/python3.12/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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(   r4   zInProcessKernel.__init__F   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_ior3   execute_request)r&   streamidentparentr:   s       r(   r=   zInProcessKernel.execute_requestN   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)r7   exit_nowr.   s    r(   r%   zInProcessKernel.startS   s    ::"'DJJ r*   c                      y)z-The in-process kernel doesn't abort requests.Nr    r.   s    r(   _abort_queueszInProcessKernel._abort_queuesX   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   dictrJ   msg	frontendsstdin_channelcall_handlersloggingerrorprocess_events)r&   rF   r?   r@   rG   contentrR   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)rM   rN   rP   )r&   
sys_stdout
sys_stderrs      r(   r<   zInProcessKernel._redirected_ioy   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_threadrJ   recvsocketrS   iopub_channelrU   )r&   changer?   rR   rZ   s        r(   r6   zInProcessKernel._io_dispatch   s      **666||'''\\&&t'8'8'B'B'I'IPU&V
s 	6H'''""005	6r*   logc                 4    t        j                  t              S r#   )rV   	getLogger__name__r.   s    r(   _default_logzInProcessKernel._default_log   s      **r*   rJ   c                 *    ddl m}  || t              S )Nr   )Session)r@   key)jupyter_client.sessionrl   r   )r&   rl   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*   rN   c                 H    t        | j                  | j                  dd      S )NrN   Fwatchfdr   rJ   r!   r.   s    r(   _default_stdoutzInProcessKernel._default_stdout       t'8'8(ERRr*   rP   c                 H    t        | j                  | j                  dd      S )NrP   Fru   rw   r.   s    r(   _default_stderrzInProcessKernel._default_stderr   ry   r*   )F))ri   
__module____qualname____doc__r   r   rS   r   guir   rL   rN   rP   r	   rp   r   r$   r   r!   __annotations__shell_streamr
   r)   r   r+   r/   stdin_socketr4   r=   r%   rD   r[   r   r<   r6   rj   ro   rs   rx   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eed<   d	dZd	 fd	Z	d
 fd	Z
 xZS )rr   z An in-process interactive shell.z,ipykernel.inprocess.ipkernel.InProcessKernelTr   r8   c                 B    |s| j                   j                  }|| _        y)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                 R    |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w(--r*   c                 T    |s| j                   j                  }t        |   ||      S )z"Activate pylab support at runtime.)r8   r   r3   enable_pylab)r&   r   
import_allr:   s      r(   r   z&InProcessInteractiveShell.enable_pylab   s%    ++//Cw#C44r*   r#   )NT)ri   r|   r}   r~   r   r8   r   r   r   r   r   r   r   s   @r(   rr   rr      s0    *&64FO $.5 5r*   rr   )r~   rV   rM   
contextlibr   IPython.core.interactiveshellr   	traitletsr   r   r   r   r	   r
   ipykernel.ipkernelr   ipykernel.jsonutilr   ipykernel.zmqshellr   iostreamr   r   r   	constantsr   rc   r   r   rr   registerr    r*   r(   <module>r      sc    
  
 % = > > , ) 2 ? ? $ JSm JSd5 3 5<    6 7r*   