
    +Vf                         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 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     e/var/www/html/software/conda/envs/catlas/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                    K   yw)z.No need to flush control queues for in-processNr    r.   s    r(   _flush_control_queuez$InProcessKernel._flush_control_queue[   s     s   c                 V   d | _         t        j                  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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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   rR   rP   )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&   changer?   rT   r\   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#   )rX   	getLogger__name__r.   s    r(   _default_logzInProcessKernel._default_log   s      **r*   rL   c                 *    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d66r*   shell_classc                     t         S r#   )InProcessInteractiveShellr.   s    r(   _default_shell_classz$InProcessKernel._default_shell_class   s    ((r*   rR   c                 H    t        | j                  | j                  dd      S )NrR   Fwatchfdr   rL   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   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      sz    XP]abcI 9
RCEMUFUF $'K'R8 ( 5L+5K,L^ 
 &..>%?L"?^3 3 K,L%A
(
<="8 < <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 )rt   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                 V    |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   s'    ++//Cw#C_EEr*   r#   )NTF)rk   r~   r   r   r   r8   r   r   r   r   r   r   r   s   @r(   rt   rt      s2    *&64FO $.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      se    
  
 % = > > , ) 2 ? ? $ KSm KSfF 3 F<    6 7r*   