
    f                    d    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y)zAn output widget mimic.    )annotations)Any)KernelClient)NotebookNode)output_from_msg   )
json_cleanc                      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y)OutputWidgetz+This class mimics a front end output widgetc                    || _         || _        || _        || _        d| j                   z  j	                  d      | _        | j                  d   | _        d| _        y)zInitialize the widget.zcomm-%sasciioutputsFN)comm_idstatekernel_clientexecutorencodetopicr   clear_before_next_output)selfr   r   r   r   s        Q/var/www/cvtools/html/venv/lib/python3.12/site-packages/nbclient/output_widget.py__init__zOutputWidget.__init__   sT     $%*
+8 &5==gF
+/::i+@.3%    c                   |d   | _         |d   }|j                  d      rd| _        yg | _        | j	                          t        | j                  d      r1| j                  | j                  j                  | j                     d<   yy)zClear output.parent_headercontentwaitTwidget_stater   N)	r   getr   r   
sync_statehasattrr   r   r   )r   outsmsg
cell_indexr   s        r   clear_outputzOutputWidget.clear_output   sq     1i.;;v,0D)DLOOt}}n5FJll**4<<8C 6r   c                N    d| j                   i}d|g d}| j                  |       y)zSync state.r   update)methodr   buffer_pathsN)r   send)r   r   r#   s      r   r    zOutputWidget.sync_state*   s'    DLL)!E2F		#r   Nc                   |i n|}|i n|}t        t        d|| j                  d|      }| j                  j                  j                  ||| j                  |      }| j                  j                  j                  |       y)z*Helper for sending a comm message on IOPubN)datar   )r   parentmetadata )	r	   dictr   r   sessionr#   r   shell_channelr*   )r   msg_typer,   r.   bufferskeysr   r#   s           r   _publish_msgzOutputWidget._publish_msg0   s     \rt!)2xTJtT\\JTJK  ((,,gd.@.@8 - 
 	((--c2r   c                .    | j                  d|||       y)zSend a comm message.comm_msg)r,   r.   r4   N)r6   )r   r,   r.   r4   s       r   r*   zOutputWidget.sendA   s     	*4(GTr   c                   | j                   rg | _        d| _         |d   | _        t        |      }| j                  rW| j                  d   }|d   dk(  r$|d   dk(  r|d   |d   k(  r|dxx   |d   z  cc<   n7| j                  j	                  |       n| j                  j	                  |       | j                          t        | j                  d      r1| j                  | j                  j                  | j                     d	<   y
y
)zHandle output.Fr   output_typestreamnametextr   r   N)
r   r   r   r   appendr    r!   r   r   r   )r   r"   r#   
display_idr$   outputlast_outputs          r   rA   zOutputWidget.outputJ   s     ((DL,1D) 1 %<<,,r*KM*h6=)X5'6&>9F#vf~5###F+LL'4==.1BF,,DMM&&t||4Y? 2r   c                    d|v re|j                  d      }|r$| j                  j                  ||        || _        y| j                  j	                  | j                  |        || _        yy)zSet the state.msg_idN)r   r   register_output_hookrD   remove_output_hook)r   r   rD   s      r   	set_statezOutputWidget.set_statef   sZ    uYYx(F2264@$00dC$ r   c                    |d   }|d   }|| j                   k7  rt        d      |d   }d|v r| j                  |d          yy)zHandle a message.r   r   zMismatched comm idr,   r   N)r   AssertionErrorrG   )r   r#   r   r   r,   s        r   
handle_msgzOutputWidget.handle_msgq   sR    i.)$dll" !566vd?NN4=) r   )
r   strr   dict[str, Any]r   r   r   r   returnNone)r"   list[NotebookNode]r#   rL   r$   intrM   rN   )rM   rN   )NNN)r3   rK   r,   dict[str, Any] | Noner.   rQ   r4   list[Any] | Noner5   r   rM   rN   )r,   rQ   r.   rQ   r4   rR   rM   rN   )
r"   rO   r#   rL   r@   rK   r$   rP   rM   rN   )r   rL   rM   rN   )r#   rL   rM   rN   )__name__
__module____qualname____doc__r   r%   r    r6   r*   rA   rG   rJ   r/   r   r   r   r      s    5
4
4#1
4BN
4Z]
4	
4S '+*.$(33 $3 (	3
 "3 3 
3& '+*.$(	U#U (U "	U
 
UO&O-;OILOZ]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*r   