
    Mh                    l    d 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  G d	 d
          ZdS )zAn output widget mimic.    )annotations)Any)KernelClient)NotebookNode)output_from_msg   )
json_cleanc                  b    e Zd ZdZd"dZd#dZd$dZ	 	 	 d%d&dZ	 	 	 d%d'dZd(dZ	d)d Z
d*d!ZdS )+OutputWidgetz+This class mimics a front end output widgetcomm_idstrstatedict[str, Any]kernel_clientr   executorr   returnNonec                    || _         || _        || _        || _        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        V/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/nbclient/output_widget.py__init__zOutputWidget.__init__   sY     $%*
+8 &5==gFF
+/:i+@.3%%%    outslist[NotebookNode]msg
cell_indexintc                   |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   Nmsg_typedatadict[str, Any] | Nonemetadatabufferslist[Any] | None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)r2   r   )r%   parentr4    )	r	   dictr   r   sessionr    r$   shell_channelr0   )r   r1   r2   r4   r5   r7   r%   r    s           r   _publish_msgzOutputWidget._publish_msg0   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)r2   r4   r5   N)r>   )r   r2   r4   r5   s       r   r0   zOutputWidget.sendA   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    rA   r!   outputlast_outputs          r   rI   zOutputWidget.outputJ   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_hookrL   remove_output_hook)r   r   rL   s      r   	set_statezOutputWidget.set_statef   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 idr2   r   N)r   AssertionErrorrO   )r   r    r%   r   r2   s        r   
handle_msgzOutputWidget.handle_msgq   sf    i.)$dl"" !5666vd??NN4=))))) ?r   )
r   r   r   r   r   r   r   r   r   r   )r   r   r    r   r!   r"   r   r   )r   r   )NNN)r1   r   r2   r3   r4   r3   r5   r6   r7   r   r   r   )r2   r3   r4   r3   r5   r6   r   r   )
r   r   r    r   rA   r   r!   r"   r   r   )r   r   r   r   )r    r   r   r   )__name__
__module____qualname____doc__r   r+   r)   r>   r0   rI   rO   rR   r:   r   r   r   r      s        55
4 
4 
4 
4S S S S    '+*.$(3 3 3 3 3& '+*.$(	U U U U UO O O O8	% 	% 	% 	%* * * * * *r   r   N)rV   
__future__r   typingr   jupyter_client.clientr   nbformatr   nbformat.v4r   jsonutilr	   r   r:   r   r   <module>r]      s      " " " " " "       . . . . . . ! ! ! ! ! ! ' ' ' ' ' '            l* l* l* l* l* l* l* l* l* l*r   