
    Chi                         S r SSKrSSKJrJr  SSKJr  SSKJr  SSK	J
r
   " S S	\5      r " S
 S\5      r " S S\
5      rg)zeImplements a fully blocking kernel client.

Useful for test suites and blocking terminal interfaces.
    N)EmptyQueue)Type   )InProcessChannel)InProcessKernelClientc                   H   ^  \ rS rSrSrU 4S jrS rS	S jrS rS r	Sr
U =r$ )
BlockingInProcessChannel   zA blocking in-process channel.c                 D   > [         TU ]  " U0 UD6  [        5       U l        g)zInitialize the channel.N)super__init__r   	_in_queue)selfargskwds	__class__s      oC:\Users\julio\OneDrive\Documentos\Trabajo\Ideas Frescas\venv\Lib\site-packages\ipykernel/inprocess/blocking.pyr   !BlockingInProcessChannel.__init__   s    $'$'(-    c                 :    U R                   R                  U5        g)z Call the handlers for a message.N)r   putr   msgs     r   call_handlers&BlockingInProcessChannel.call_handlers   s    3r   c                 B    Uc  SnU R                   R                  X5      $ )z-Gets a message if there is one that is ready.i:	 )r   get)r   blocktimeouts      r   get_msg BlockingInProcessChannel.get_msg#   s#    ? G~~!!%11r   c                 l    / n  UR                  U R                  SS95        M!  ! [         a     U$ f = f)z*Get all messages that are currently ready.F)r   )appendr!   r   )r   msgss     r   get_msgs!BlockingInProcessChannel.get_msgs+   sD    DLLuL56   s   % 
33c                 @    U R                   R                  5       (       + $ )z*Is there a message that has been received?)r   empty)r   s    r   	msg_ready"BlockingInProcessChannel.msg_ready5   s    >>'')))r   )r   )TN)__name__
__module____qualname____firstlineno____doc__r   r   r!   r&   r*   __static_attributes____classcell__)r   s   @r   r
   r
      s$    (0
 2* *r   r
   c                       \ rS rSrSrS rSrg)BlockingInProcessStdInChannel:   z$A blocking in-process stdin channel.c                     US   S   nUS:X  a  U R                   R                  R                  nUS   S   n[        US[        R
                  S9  [        R
                  R                  5         U R                   R                  U" 5       5        gg)	zVOverridden 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   r8   
_raw_inputr;   s        r   r   +BlockingInProcessStdInChannel.call_handlers=   sv    
 x=,&++::J^H-F&bs~~6NN  "KKjl+ 'r    N)r,   r-   r.   r/   r0   r   r1   rI   r   r   r4   r4   :   s
    .,r   r4   c                   N    \ rS rSrSr\" \5      r\" \5      r\" \	5      r
S rSrg)BlockingInProcessKernelClientK   z$A blocking in-process kernel client.c                     U R                  5          U R                  R                  SSS9nUS   S:X  a-   U R                  R                  SSS9  U R	                  U5        O Md    U R                  R                  SSS9n[        US   5        M+  ! [
         a     N:f = f! [
         a     NJf = f! [
         a     gf = f)z,Wait for kernel info reply on shell channel.Tr   )r   r    r8   kernel_info_replyg?N)kernel_infoshell_channelr!   iopub_channel_handle_kernel_info_replyr   rB   r   s     r   wait_for_ready,BlockingInProcessKernelClient.wait_for_readyS   s    ((00tQ0G z?&99**22s2K 66s; : $ ((00tS0Ic*o&  !   $  s4   B" B ((B2 
BB"
B/.B/2
B?>B?rI   N)r,   r-   r.   r/   r0   r   r
   shell_channel_classiopub_channel_classr4   stdin_channel_classrS   r1   rI   r   r   rK   rK   K   s0    . 7878<=r   rK   )r0   rC   queuer   r   	traitletsr   channelsr   r?   r   r
   r4   rK   rI   r   r   <module>r[      sI       ' ) */  *F,$< ,"!$9 !r   