
     Ce                     `    d Z ddlmZmZmZmZ ddlmZ ddlm	Z	 ddl
mZ  G d d          Zd	S )
zAn output widget mimic.    )AnyDictListOptional)KernelClient)output_from_msg   )
json_cleanc                   *   e Zd ZdZdedeeef         dededdf
dZd	e	d
ede
ddfdZddZ	 	 	 ddedee         dee         dee	         deddfdZ	 	 	 ddee         dee         dee	         ddfdZd	e	d
edede
ddf
dZdeddfdZd
eddfdZdS )OutputWidgetz+This class mimics a front end output widgetcomm_idstatekernel_clientexecutorreturnNc                     || _         || _        || _        || _        d| j         z                      d          | _        | j        d         | _        d| _        dS )zInitialize the widget.zcomm-%sasciioutputsFN)r   r   r   r   encodetopicr   clear_before_next_output)selfr   r   r   r   s        6lib/python3.11/site-packages/nbclient/output_widget.py__init__zOutputWidget.__init__   sY     $%*
+8 &5==gFF
!Z	2.3%%%    outsmsg
cell_indexc                    |d         | _         |d         }|                    d          r	d| _        dS g | _        |                                  t          | j        d          r!| j        | j        j        | j                 d<   dS dS )zClear output.parent_headercontentwaitTwidget_stater   N)	r    getr   r   
sync_statehasattrr   r#   r   )r   r   r   r   r!   s        r   clear_outputzOutputWidget.clear_output   s     1i.;;v 	S,0D)))DLOOt}n55 SFJl*4<8CCCS Sr   c                 N    d| j         i}d|g d}|                     |           dS )zSync state.r   update)methodr   buffer_pathsN)r   send)r   r   r   s      r   r%   zOutputWidget.sync_state'   s0    DL)!E2FF		#r   msg_typedatametadatabufferskeysc                     |i n|}|i n|}t          t          d|| j        d|          }| j        j                            ||| j        |          }| j        j                            |           dS )z*Helper for sending a comm message on IOPubN)r.   r   )r!   parentr/    )	r
   dictr   r   sessionr   r    shell_channelr,   )r   r-   r.   r/   r0   r1   r!   r   s           r   _publish_msgzOutputWidget._publish_msg-   s     \rrt!)22xTJtT\JJTJJKK (,,gd.@8 - 
 
 	(--c22222r   c                 8    |                      d|||           dS )zSend a comm message.comm_msg)r.   r/   r0   N)r8   )r   r.   r/   r0   s       r   r,   zOutputWidget.send>   s'     	*4(GTTTTTr   
display_idc                    | j         rg | _        d| _         |d         | _        t          |          }| j        ri| j        d         }|d         dk    r5|d         dk    r)|d         |d         k    r|dxx         |d         z  cc<   n5| j                            |           n| j                            |           |                                  t          | j        d          r!| j        | j        j        | j	                 d	<   d
S d
S )zHandle output.Fr    output_typestreamnametextr#   r   N)
r   r   r    r   appendr%   r&   r   r#   r   )r   r   r   r;   r   outputlast_outputs          r   rC   zOutputWidget.outputG   s!   ( 	2DL,1D) 1 %%< 	(,r*KM*h66=)X55'6&>99F###vf~5######F++++L'''4=.11 	OBF,DM&t|4Y???	O 	Or   c                     d|v rd|                     d          }|r$| j                            ||            || _        dS | j                            | j        |            || _        dS dS )zSet the state.msg_idN)r$   r   register_output_hookrF   remove_output_hook)r   r   rF   s      r   	set_statezOutputWidget.set_statea   sv    uYYx((F %2264@@@$00dCCC$ r   c                     |d         }|d         }|| j         k    rt          d          |d         }d|v r|                     |d                    dS dS )zHandle a message.r!   r   zMismatched comm idr.   r   N)r   AssertionErrorrI   )r   r   r!   r   r.   s        r   
handle_msgzOutputWidget.handle_msgl   sf    i.)$dl"" !5666vd??NN4=))))) ?r   )r   N)NNN)__name__
__module____qualname____doc__strr   r   r   r   r   intr'   r%   r   r8   r,   rC   rI   rL   r4   r   r   r   r   
   s       55
4
4#'S>
4BN
4Z]
4	
4 
4 
4 
4S SD Sc Sd S S S S     $#'"&3 33 tn3 4.	3
 $3 3 
3 3 3 3&  $#'"&	U UtnU 4.U $	U
 
U U U UO4 Od O O OQU O O O O4	%t 	% 	% 	% 	% 	%*d *t * * * * * *r   r   N)rP   typingr   r   r   r   jupyter_client.clientr   nbformat.v4r   jsonutilr
   r   r4   r   r   <module>rW      s      , , , , , , , , , , , , . . . . . . ' ' ' ' ' '            j* j* j* j* j* j* j* j* j* j*r   