
    ^hJ!                        S r SSKJr  SSKrSSKJr  SSKJr  SSKJ	r	  SSK
Jr  SSKJrJrJr  S	S
KJrJr   " S S\5      r\	R(                  " \5        g)z A client for in-process kernels.    )annotationsN)Any)KernelClient)KernelClientABC)run_sync)InstanceTypedefault   )InProcessChannelInProcessHBChannelc                    ^  \ rS rSrSr\" \5      r\" \5      r\" \5      r	\" \5      r
\" \5      r\" SSS9r\" S5      S 5       rSSU 4S jjjrU 4S	 jr\S
 5       r\S 5       r\S 5       r\S 5       r\S 5       r     S              S!S jjrS"S jrS#S jrS$S jrSS jrS rS"S jrS r S r!S r"S%S jr#S%S jr$S%S jr%S%S jr&Sr'U =r($ )&InProcessKernelClient!   a  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                    SSK Jn  U$ )Nr   )BlockingInProcessKernelClient)blockingr   )selfr   s     T/home/james-whalen/.local/lib/python3.13/site-packages/ipykernel/inprocess/client.py_default_blocking_class-InProcessKernelClient._default_blocking_class8   s    ;,,    c                @   > [         TU ]  US9nU R                  US'   U$ )z'Get the connection info for the client.)sessionkernel)superget_connection_infor   )r   r   d	__class__s      r   r   )InProcessKernelClient.get_connection_info>   s'    G''8kk(r   c                   > [         TU ]  5         U R                  (       a&  U R                  R                  R	                  U 5        gg)z!Start the channels on the client.N)r   start_channelsr   	frontendsappend)r   argskwargsr!   s      r   r$   $InProcessKernelClient.start_channelsD   s2     ;;KK!!((. r   c                `    U R                   c  U R                  U 5      U l         U R                   $ N)_shell_channelshell_channel_classr   s    r   shell_channel#InProcessKernelClient.shell_channelJ   -    &"&":":4"@D"""r   c                `    U R                   c  U R                  U 5      U l         U R                   $ r+   )_iopub_channeliopub_channel_classr.   s    r   iopub_channel#InProcessKernelClient.iopub_channelP   r1   r   c                `    U R                   c  U R                  U 5      U l         U R                   $ r+   )_stdin_channelstdin_channel_classr.   s    r   stdin_channel#InProcessKernelClient.stdin_channelV   r1   r   c                `    U R                   c  U R                  U 5      U l         U R                   $ r+   )_control_channelcontrol_channel_classr.   s    r   control_channel%InProcessKernelClient.control_channel\   s-      ($($>$>t$DD!$$$r   c                `    U R                   c  U R                  U 5      U l         U R                   $ r+   )_hb_channelhb_channel_classr.   s    r   
hb_channel InProcessKernelClient.hb_channelb   s-    ##44T:Dr   c                    Uc  U R                   n[        UUUU=(       d    0 US9nU R                  R                  SU5      nU R	                  U5        US   S   n	[        U	[        5      (       d   eU	$ )zExecute code on the client.)codesilentstore_historyuser_expressionsallow_stdinexecute_requestheadermsg_id)rK   dictr   msg_dispatch_to_kernel
isinstancestr)
r   rG   rH   rI   rJ   rK   stop_on_errorcontentrP   ress
             r   executeInProcessKernelClient.executek   s     **K'-3#
 ll0':  %(mH%#s####
r   c                    Uc  [        U5      n[        XS9nU R                  R                  SU5      nU R	                  U5        US   S   $ )zGet code completion.)rG   
cursor_poscomplete_requestrM   rN   lenrO   r   rP   rQ   )r   rG   rZ   rU   rP   s        r   completeInProcessKernelClient.complete   sO    TJD8ll17;  %8}X&&r   c                    Uc  [        U5      n[        UUUS9nU R                  R                  SU5      nU R	                  U5        US   S   $ )zGet code inspection.)rG   rZ   detail_levelinspect_requestrM   rN   r\   )r   rG   rZ   ra   rU   rP   s         r   inspectInProcessKernelClient.inspect   sZ    TJ!%

 ll0':  %8}X&&r   c                    [        SXUS.UD6nU R                  R                  SU5      nU R                  U5        US   S   $ )zGet code history.)rawoutputhist_access_typehistory_requestrM   rN    rO   r   rP   rQ   )r   rf   rg   rh   kwdsrU   rP   s          r   historyInProcessKernelClient.history   sL    Y3@PYTXYll0':  %8}X&&r   c                    Sn[        U5      e)zHandle shutdown.z!Cannot shutdown in-process kernel)NotImplementedError)r   restartrP   s      r   shutdownInProcessKernelClient.shutdown   s     2!#&&r   c                j    U R                   R                  S5      nU R                  U5        US   S   $ )zRequest kernel info.kernel_info_requestrM   rN   r   rP   rQ   )r   rP   s     r   kernel_info!InProcessKernelClient.kernel_info   s4    ll45  %8}X&&r   c                    Uc  0 O[        US9nU R                  R                  SU5      nU R                  U5        US   S   $ )z6Request a dictionary of valid comms and their targets.)target_namecomm_info_requestrM   rN   rk   )r   rz   rU   rP   s       r   	comm_infoInProcessKernelClient.comm_info   sG    #+"+1Nll2G<  %8}X&&r   c                X    U R                   c  Sn[        U5      eXR                   l        g)zHandle kernel input.Nz*Cannot send input reply. No kernel exists.)r   RuntimeErrorraw_input_str)r   stringrP   s      r   inputInProcessKernelClient.input   s&    ;;>Cs##$*!r   c                p    U R                   R                  SSU05      nU R                  U5        US   S   $ )zHandle an is_complete request.is_complete_requestrG   rM   rN   rv   )r   rG   rP   s      r   is_complete!InProcessKernelClient.is_complete   s:    ll4vtnE  %8}X&&r   c                   U R                   nUc  Sn[        U5      eUR                  nU R                  R	                  X15        UR                  5       n[        b  [        UR                  5      nU" U5        O5[        R                  " 5       nUR                  UR                  U5      5        U R                  R                  USS9u  pxU R                  R                  U5        g)z0Send a message to the kernel and handle a reply.Nz&Cannot send request. No kernel exists.F)copy)r   r   shell_streamr   sendrecv_multipartr   dispatch_shellasyncioget_event_looprun_until_completerecvr/   call_handlers_later)	r   rP   r   stream	msg_partsr   loopidents	reply_msgs	            r   rQ   )InProcessKernelClient._dispatch_to_kernel   s    >:Cs##$$&&))+	%f&;&;<N9%))+D##F$9$9)$DE LL--f5-A..y9r   c                8    U R                   R                  X5      $ )zGet a shell message.)r/   get_msgr   blocktimeouts      r   get_shell_msg#InProcessKernelClient.get_shell_msg       !!))%99r   c                8    U R                   R                  X5      $ )zGet an iopub message.)r5   r   r   s      r   get_iopub_msg#InProcessKernelClient.get_iopub_msg   r   r   c                8    U R                   R                  X5      $ )zGet a stdin message.)r:   r   r   s      r   get_stdin_msg#InProcessKernelClient.get_stdin_msg   r   r   c                8    U R                   R                  X5      $ )zGet a control message.)r?   r   r   s      r   get_control_msg%InProcessKernelClient.get_control_msg   s    ##++E;;r   )r=   rB   r3   r,   r8   )F)r   boolreturnzdict[str, int | str | bytes])FTNNT)rG   rS   rH   r   rI   r   rJ   zdict[str, Any] | NonerK   zbool | NonerT   r   r   rS   r+   )Nr   )TFrange)TN))__name__
__module____qualname____firstlineno____doc__r	   r   r-   r4   r9   r>   r   rC   r   r   r
   r   r   r$   propertyr/   r5   r:   r?   rD   rW   r^   rc   rm   rr   rw   r|   r   r   rQ   r   r   r   r   __static_attributes____classcell__)r!   s   @r   r   r   !   s    /0/0/0 !12./DQUVF - -
 / # #
 # #
 # #
 % %
     "26#'"  	
 0 !  
2''''''+':&:::< <r   r   )r   
__future__r   r   typingr   jupyter_client.clientr   jupyter_client.clientabcr   jupyter_core.utilsr   	traitletsr   r	   r
   channelsr   r   r   registerrj   r   r   <module>r      sI    & #   . 4 ' . - ;A<L A<P   . /r   