
    Mh                          d Z ddl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mZ  G d	 d
e          Z ej        e           dS )z A client for in-process kernels.    N)KernelClient)KernelClientABC)run_sync)InstanceTypedefault   )InProcessChannelInProcessHBChannelc                       e Zd ZdZ ee          Z ee          Z ee          Z ee          Z	 ee
          Z edd          Z ed          d             Z fdZ fdZed	             Zed
             Zed             Zed             Zed             Z	 d dZd!dZd"dZd#dZd$dZd Zd!dZd Zd Z d Z!d%dZ"d%dZ#d%dZ$d%dZ% xZ&S )&InProcessKernelClienta  A client for an in-process kernel.

    This class implements the interface of
    `jupyter_client.clientabc.KernelClientABC` and allows
    (asynchronous) frontends to be used seamlessly with an in-process kernel.

    See `jupyter_client.client.KernelClient` for docstrings.
    z,ipykernel.inprocess.ipkernel.InProcessKernelT)
allow_noneblocking_classc                     ddl m} |S )Nr	   )BlockingInProcessKernelClient)blockingr   )selfr   s     Z/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/ipykernel/inprocess/client.py_default_blocking_classz-InProcessKernelClient._default_blocking_class6   s    ;;;;;;,,    c                 \    t                                                      }| j        |d<   |S )z'Get the connection info for the client.kernel)superget_connection_infor   )r   d	__class__s     r   r   z)InProcessKernelClient.get_connection_info<   s(    GG''))k(r   c                     t                                                       | j        r!| j        j                            |            dS dS )z!Start the channels on the client.N)r   start_channelsr   	frontendsappend)r   argskwargsr   s      r   r   z$InProcessKernelClient.start_channelsB   sL       ; 	/K!((.....	/ 	/r   c                 R    | j         |                     |           | _         | j         S N)_shell_channelshell_channel_classr   s    r   shell_channelz#InProcessKernelClient.shell_channelH   *    &"&":":4"@"@D""r   c                 R    | j         |                     |           | _         | j         S r$   )_iopub_channeliopub_channel_classr'   s    r   iopub_channelz#InProcessKernelClient.iopub_channelN   r)   r   c                 R    | j         |                     |           | _         | j         S r$   )_stdin_channelstdin_channel_classr'   s    r   stdin_channelz#InProcessKernelClient.stdin_channelT   r)   r   c                 R    | j         |                     |           | _         | j         S r$   )_control_channelcontrol_channel_classr'   s    r   control_channelz%InProcessKernelClient.control_channelZ   s*     ($($>$>t$D$DD!$$r   c                 R    | j         |                     |           | _         | j         S r$   )_hb_channelhb_channel_classr'   s    r   
hb_channelz InProcessKernelClient.hb_channel`   s*    ##44T::Dr   FNc                     || j         }t          ||||pi |          }| j                            d|          }|                     |           |d         d         S )zExecute code on the client.N)codesilentstore_historyuser_expressionsallow_stdinexecute_requestheadermsg_id)r?   dictsessionmsg_dispatch_to_kernel)r   r;   r<   r=   r>   r?   contentrE   s           r   executezInProcessKernelClient.executei   sw     *K'-3#
 
 
 l0'::  %%%8}X&&r   c                     |t          |          }t          ||          }| j                            d|          }|                     |           |d         d         S )zGet code completion.N)r;   
cursor_poscomplete_requestrA   rB   lenrC   rD   rE   rF   )r   r;   rJ   rG   rE   s        r   completezInProcessKernelClient.completez   s`    TJDZ888l17;;  %%%8}X&&r   r   c                     |t          |          }t          |||          }| j                            d|          }|                     |           |d         d         S )zGet code inspection.N)r;   rJ   detail_levelinspect_requestrA   rB   rL   )r   r;   rJ   rP   rG   rE   s         r   inspectzInProcessKernelClient.inspect   sm    TJ!%
 
 

 l0'::  %%%8}X&&r   rangec                     t          d|||d|}| j                            d|          }|                     |           |d         d         S )zGet code history.)rawoutputhist_access_typehistory_requestrA   rB    rC   rD   rE   rF   )r   rU   rV   rW   kwdsrG   rE   s          r   historyzInProcessKernelClient.history   s[    Y3v@PYYTXYYl0'::  %%%8}X&&r   c                 $    d}t          |          )zHandle shutdown.z!Cannot shutdown in-process kernel)NotImplementedError)r   restartrE   s      r   shutdownzInProcessKernelClient.shutdown   s     2!#&&&r   c                 |    | j                             d          }|                     |           |d         d         S )zRequest kernel info.kernel_info_requestrA   rB   rD   rE   rF   )r   rE   s     r   kernel_infoz!InProcessKernelClient.kernel_info   s;    l455  %%%8}X&&r   c                     |i nt          |          }| j                            d|          }|                     |           |d         d         S )z6Request a dictionary of valid comms and their targets.N)target_namecomm_info_requestrA   rB   rZ   )r   rf   rG   rE   s       r   	comm_infozInProcessKernelClient.comm_info   sV    #+""+1N1N1Nl2G<<  %%%8}X&&r   c                 N    | j         d}t          |          || j         _        dS )zHandle kernel input.Nz*Cannot send input reply. No kernel exists.)r   RuntimeErrorraw_input_str)r   stringrE   s      r   inputzInProcessKernelClient.input   s-    ;>Cs###$*!!!r   c                     | j                             dd|i          }|                     |           |d         d         S )zHandle an is_complete request.is_complete_requestr;   rA   rB   rc   )r   r;   rE   s      r   is_completez!InProcessKernelClient.is_complete   sA    l4vtnEE  %%%8}X&&r   c                    | j         }|d}t          |          |j        }| j                            ||           |                                }t           t          |j                  } ||           n;t          j	                    }|
                    |                    |                     | j                            |d          \  }}| j                            |           dS )z0Send a message to the kernel and handle a reply.Nz&Cannot send request. No kernel exists.F)copy)r   rj   shell_streamrD   sendrecv_multipartr   dispatch_shellasyncioget_event_looprun_until_completerecvr(   call_handlers_later)	r   rE   r   stream	msg_partsrv   loopidents	reply_msgs	            r   rF   z)InProcessKernelClient._dispatch_to_kernel   s    >:Cs###$&#&&&))++	%f&;<<NN9%%%%)++D##F$9$9)$D$DEEE L--f5-AA	..y99999r   c                 8    | j                             ||          S )zGet a shell message.)r(   get_msgr   blocktimeouts      r   get_shell_msgz#InProcessKernelClient.get_shell_msg       !))%999r   c                 8    | j                             ||          S )zGet an iopub message.)r-   r   r   s      r   get_iopub_msgz#InProcessKernelClient.get_iopub_msg   r   r   c                 8    | j                             ||          S )zGet a stdin message.)r1   r   r   s      r   get_stdin_msgz#InProcessKernelClient.get_stdin_msg   r   r   c                 8    | j                             ||          S )zGet a control message.)r5   r   r   s      r   get_control_msgz%InProcessKernelClient.get_control_msg   s    #++E7;;;r   )FTNNr$   )Nr   )TFrS   )F)TN)'__name__
__module____qualname____doc__r   r
   r&   r,   r0   r4   r   r8   r   r   r   r   r   r   propertyr(   r-   r1   r5   r9   rH   rN   rR   r\   r`   rd   rh   rm   rp   rF   r   r   r   r   __classcell__)r   s   @r   r   r      s         $/00$/00$/00 D!122t.//XDQUVVVF W- - -
    / / / / / # # X#
 # # X#
 # # X#
 % % X%
     X  Z^' ' ' '"' ' ' '' ' ' '' ' ' '' ' ' '' ' '' ' ' '+ + +' ' ': : :&: : : :: : : :: : : :< < < < < < < <r   r   )r   rw   jupyter_client.clientr   jupyter_client.clientabcr   jupyter_core.utilsr   	traitletsr   r   r   channelsr
   r   r   registerrY   r   r   <module>r      s    & &  . . . . . . 4 4 4 4 4 4 ' ' ' ' ' ' . - - - - - - - - - ; : : : : : : :y< y< y< y< y<L y< y< y<@  . / / / / /r   