
    kKj!                        d Z ddlm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 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       y)z A client for in-process kernels.    )annotationsN)Any)KernelClient)KernelClientABC)KernelConnectionInfo)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dd fdZ fdZed	        Zed
        Zed        Zed        Zed        Z	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 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     k/Users/ahmed/devFolder/Ultron/claude-voice/.venv/lib/python3.12/site-packages/ipykernel/inprocess/client.py_default_blocking_classz-InProcessKernelClient._default_blocking_class9   s    ;,,    c                F    t         |   |      }| j                  |d<   |S )z'Get the connection info for the client.)sessionkernel)superget_connection_infor   )r   r   d	__class__s      r   r   z)InProcessKernelClient.get_connection_info?   s'    G''8kk(r   c                    t         |           | j                  r&| j                  j                  j	                  |        yy)z!Start the channels on the client.N)r   start_channelsr   	frontendsappend)r   argskwargsr    s      r   r"   z$InProcessKernelClient.start_channelsE   s2     ;;KK!!((. r   c                ^    | j                   | j                  |       | _         | j                   S N)_shell_channelshell_channel_classr   s    r   shell_channelz#InProcessKernelClient.shell_channelK   -    &"&":":4"@D"""r   c                ^    | j                   | j                  |       | _         | j                   S r(   )_iopub_channeliopub_channel_classr+   s    r   iopub_channelz#InProcessKernelClient.iopub_channelQ   r-   r   c                ^    | j                   | j                  |       | _         | j                   S r(   )_stdin_channelstdin_channel_classr+   s    r   stdin_channelz#InProcessKernelClient.stdin_channelW   r-   r   c                ^    | j                   | j                  |       | _         | j                   S r(   )_control_channelcontrol_channel_classr+   s    r   control_channelz%InProcessKernelClient.control_channel]   s-      ($($>$>t$DD!$$$r   c                ^    | j                   | j                  |       | _         | j                   S r(   )_hb_channelhb_channel_classr+   s    r   
hb_channelz InProcessKernelClient.hb_channelc   s-    ##44T:Dr   c                    || j                   }t        ||||xs i |      }| j                  j                  d|      }| j	                  |       |d   d   }	t        |	t              sJ |	S )zExecute code on the client.)codesilentstore_historyuser_expressionsallow_stdinexecute_requestheadermsg_id)rC   dictr   msg_dispatch_to_kernel
isinstancestr)
r   r?   r@   rA   rB   rC   stop_on_errorcontentrH   ress
             r   executezInProcessKernelClient.executel   s}     **K'-3#
 ll0':  %(mH%#s###
r   c                    |t        |      }t        ||      }| j                  j                  d|      }| j	                  |       |d   d   S )zGet code completion.)r?   
cursor_poscomplete_requestrE   rF   lenrG   r   rH   rI   )r   r?   rQ   rM   rH   s        r   completezInProcessKernelClient.complete   sQ    TJDZ8ll17;  %8}X&&r   c                    |t        |      }t        |||      }| j                  j                  d|      }| j	                  |       |d   d   S )zGet code inspection.)r?   rQ   detail_levelinspect_requestrE   rF   rS   )r   r?   rQ   rW   rM   rH   s         r   inspectzInProcessKernelClient.inspect   sZ    TJ!%

 ll0':  %8}X&&r   c                    t        d|||d|}| j                  j                  d|      }| j                  |       |d   d   S )zGet code history.)rawoutputhist_access_typehistory_requestrE   rF    rG   r   rH   rI   )r   r[   r\   r]   kwdsrM   rH   s          r   historyzInProcessKernelClient.history   sN    Y3v@PYTXYll0':  %8}X&&r   c                    d}t        |      )zHandle shutdown.z!Cannot shutdown in-process kernel)NotImplementedError)r   restartrH   s      r   shutdownzInProcessKernelClient.shutdown   s     2!#&&r   c                j    | j                   j                  d      }| j                  |       |d   d   S )zRequest kernel info.kernel_info_requestrE   rF   r   rH   rI   )r   rH   s     r   kernel_infoz!InProcessKernelClient.kernel_info   s4    ll45  %8}X&&r   c                    |i nt        |      }| j                  j                  d|      }| j                  |       |d   d   S )z6Request a dictionary of valid comms and their targets.)target_namecomm_info_requestrE   rF   r`   )r   rl   rM   rH   s       r   	comm_infozInProcessKernelClient.comm_info   sG    #+"+1Nll2G<  %8}X&&r   c                X    | j                   d}t        |      || j                   _        y)zHandle kernel input.Nz*Cannot send input reply. No kernel exists.)r   RuntimeErrorraw_input_str)r   stringrH   s      r   inputzInProcessKernelClient.input   s(    ;;>Cs##$*!r   c                p    | j                   j                  dd|i      }| j                  |       |d   d   S )zHandle an is_complete request.is_complete_requestr?   rE   rF   ri   )r   r?   rH   s      r   is_completez!InProcessKernelClient.is_complete   s:    ll4vtnE  %8}X&&r   c                   | j                   }|d}t        |      |j                  }| j                  j	                  ||       |j                         }t        t        |j                        } ||       n4t        j                         }|j                  |j                  |             | j                  j                  |d      \  }}| j                  j                  |       y)z0Send a message to the kernel and handle a reply.Nz&Cannot send request. No kernel exists.F)copy)r   rp   shell_streamr   sendrecv_multipartr   dispatch_shellasyncioget_event_looprun_until_completerecvr,   call_handlers_later)	r   rH   r   stream	msg_partsr|   loop_idents	reply_msgs	            r   rI   z)InProcessKernelClient._dispatch_to_kernel   s    >:Cs##$$&#&))+	%f&;&;<N9%))+D##F$9$9)$DE!\\..vE.B..y9r   c                :    | j                   j                  ||      S )zGet a shell message.)r,   get_msgr   blocktimeouts      r   get_shell_msgz#InProcessKernelClient.get_shell_msg       !!))%99r   c                :    | j                   j                  ||      S )zGet an iopub message.)r1   r   r   s      r   get_iopub_msgz#InProcessKernelClient.get_iopub_msg   r   r   c                :    | j                   j                  ||      S )zGet a stdin message.)r5   r   r   s      r   get_stdin_msgz#InProcessKernelClient.get_stdin_msg   r   r   c                :    | j                   j                  ||      S )zGet a control message.)r9   r   r   s      r   get_control_msgz%InProcessKernelClient.get_control_msg   s    ##++E7;;r   )F)r   boolreturnr   )FTNNT)r?   rK   r@   r   rA   r   rB   zdict[str, Any] | NonerC   zbool | NonerL   r   r   rK   r(   )Nr   )TFrange)TN)'__name__
__module____qualname____doc__r
   r   r*   r0   r4   r8   r   r<   r	   r   r   r   r   r"   propertyr,   r1   r5   r9   r=   rO   rU   rY   rb   rf   rj   rn   rs   rv   rI   r   r   r   r   __classcell__)r    s   @r   r   r   "   sw    /0/0/0 !12./DQUVF - -
/ # #
 # #
 # #
 % %
     "26#'"  	
 0 !  
2''''''+':&:::<r   r   )r   
__future__r   r}   typingr   jupyter_client.clientr   jupyter_client.clientabcr   jupyter_client.connectr   jupyter_core.utilsr   	traitletsr	   r
   r   channelsr   r   r   registerr_   r   r   <module>r      sN    & #   . 4 7 ' . - ;A<L A<P   . /r   