
    Mhi                         d Z ddlZddlmZmZ ddlmZ ddlmZ ddl	m
Z
  G d d	e          Z G d
 de          Z G d de
          ZdS )zf Implements a fully blocking kernel client.

Useful for test suites and blocking terminal interfaces.
    N)EmptyQueue)Type   )InProcessChannel)InProcessKernelClientc                   <     e Zd ZdZ fdZd Zd	dZd Zd Z xZ	S )
BlockingInProcessChannelzA blocking in-process channel.c                 `     t                      j        |i | t                      | _        dS )zInitialize the channel.N)super__init__r   	_in_queue)selfargskwds	__class__s      \/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/ipykernel/inprocess/blocking.pyr   z!BlockingInProcessChannel.__init__   s.    $'$'''(-    c                 :    | j                             |           dS )z Call the handlers for a message.N)r   putr   msgs     r   call_handlersz&BlockingInProcessChannel.call_handlers   s    3r   TNc                 @    |d}| j                             ||          S )z-Gets a message if there is one that is ready.Ni:	 )r   get)r   blocktimeouts      r   get_msgz BlockingInProcessChannel.get_msg#   s&    ? G~!!%111r   c                     g }	 	 |                     |                     d                     n# t          $ r Y nw xY w<|S )z*Get all messages that are currently ready.TF)r   )appendr   r   )r   msgss     r   get_msgsz!BlockingInProcessChannel.get_msgs+   s`    	DLLuL556666   	
 s   )/ 
<<c                 6    | j                                          S )z*Is there a message that has been received?)r   empty)r   s    r   	msg_readyz"BlockingInProcessChannel.msg_ready5   s    >''))))r   )TN)
__name__
__module____qualname____doc__r   r   r   r"   r%   __classcell__)r   s   @r   r
   r
      s        ((0 0 0 0 0
     2 2 2 2  * * * * * * *r   r
   c                       e Zd ZdZd ZdS )BlockingInProcessStdInChannelz$A blocking in-process stdin channel.c                 (   |d         d         }|dk    r}| j         j        j        }|d         d         }t          |dt          j                   t          j                                         | j                              |                       dS dS )	zfOverridden for the in-process channel.

        This methods simply calls raw_input directly.
        headermsg_typeinput_requestcontentprompt )endfileN)clientkernel_sys_raw_inputprintsys
__stdout__flushinput)r   r   r/   
_raw_inputr2   s        r   r   z+BlockingInProcessStdInChannel.call_handlers=   s    
 x=,&&+:J^H-F&bs~6666N  """Kjjll+++++ '&r   N)r&   r'   r(   r)   r    r   r   r,   r,   :   s)        .., , , , ,r   r,   c                   Z    e Zd ZdZ ee          Z ee          Z ee          Z	d Z
dS )BlockingInProcessKernelClientz$A blocking in-process kernel client.c                    	 |                                   	 | j                            dd          }|d         dk    rC	 | j                            dd           |                     |           n"# t
          $ r Y nw xY wn# t
          $ r Y nw xY w	 	 | j                            dd          }t          |d                    n# t
          $ r Y dS w xY wE)z,Wait for kernel info reply on shell channel.Tr   )r   r   r/   kernel_info_replyg?N)kernel_infoshell_channelr   iopub_channel_handle_kernel_info_replyr   r9   r   s     r   wait_for_readyz,BlockingInProcessKernelClient.wait_for_readyS   s4   	(00tQ0GG z?&999*22s2KKK 66s;;;	 !   	 :    		$	(00tS0IIc*o&&&&   		s5   B  A2 2
A?>A?
BB1C 
CCN)r&   r'   r(   r)   r   r
   shell_channel_classiopub_channel_classr,   stdin_channel_classrH   r?   r   r   rA   rA   K   s^        .. $788$788$<==    r   rA   )r)   r:   queuer   r   	traitletsr   channelsr   r6   r   r
   r,   rA   r?   r   r   <module>rO      s     


               ' & & & & & ) ) ) ) ) ) *  *  *  *  */  *  *  *F, , , , ,$< , , ,"! ! ! ! !$9 ! ! ! ! !r   