
    Xh*                     n    d dl Z d dlmZ d dlmZ d dlmZmZ d dlm	Z	  G d de      Z
d Zd	 Zd
 Zd Zy)    N)TestCase)contextmanager)MarkdownImage)widget_outputc                   F    e Zd Zed        Zd Zd Zd Zd Zd Z	d Z
d Zy	)
TestOutputWidgetc              #      K   t         j                  }t         j                  }|t         _        |t         _        	 d |t         _        |t         _        y# |t         _        |t         _        w xY ww)zA Context manager that monkeypatches get_ipython and clear_output N)r   clear_outputget_ipython)selfr   r   original_clear_outputoriginal_get_ipythons        _/var/www/html/myenv/lib/python3.12/site-packages/ipywidgets/widgets/tests/test_widget_output.py_mocked_ipythonz TestOutputWidget._mocked_ipython   s[      !. : :,88$/!%1"	=)>M&(<M% *?M&(<M%s   7A0A A0A--A0c                 f    t        dt        fddd|iii      }d }t        dt        f||d      }|S )z9 Returns a mock IPython application with a mocked kernel mock_kernel_parent_headerheadermsg_idc                     |\  }}} ||      N )self_	exc_tupleargskwargsetypeevaluetbs          r   showtracebackz9TestOutputWidget._mock_get_ipython.<locals>.showtraceback"   s     )E62-    mock_ipython)kernelr!   )typeobject)r   r   r$   r!   ipythons        r   _mock_get_ipythonz"TestOutputWidget._mock_get_ipython   sN    J8V*<=>
	  J>

 r"   c                 $    g fd}|_         |S )z( Mock function that records calls to it c                  ,    j                  | |f       y r   )append)r   r   callss     r   r   z9TestOutputWidget._mock_clear_output.<locals>.clear_output1   s    LL$(r"   )r,   )r   r   r,   s     @r   _mock_clear_outputz#TestOutputWidget._mock_clear_output-   s    	)"r"   c                 X   d}| j                  |      }| j                         }| j                  ||      5  t        j                         }|j
                  dk(  sJ |5  |j
                  |k(  sJ 	 d d d        |j
                  dk(  sJ 	 d d d        y # 1 sw Y   $xY w# 1 sw Y   y xY w)Nmsg-id )r(   r-   r   r   Outputr   r   r   r   r   widgets        r   test_set_msg_id_when_capturingz/TestOutputWidget.test_set_msg_id_when_capturing7   s    ,,V4..0!!+|< 	'"))+F==B&&& /}}.../==B&&&	' 	'/ /	' 	's#   (B B1B B	B  B)c                 H   d}| j                  |      }| j                         }| j                  ||      5  t        j                         }|j                  d       d d d        t        |j                        dk(  sJ |j                  d   dddifk(  sJ y # 1 sw Y   <xY w)Nr/   T)wait   r   r   r6   )r(   r-   r   r   r1   r   lenr,   r2   s        r   test_clear_outputz"TestOutputWidget.test_clear_outputC   s    ,,V4..0!!+|< 	+"))+FT*	+ <%%&!+++!!!$fd^(<<<<	+ 	+s   'BB!c                    d| j                        }| j                         }d}d}g | j                  ||      5  t        j                         j
                  dk(  sJ j                         fd       } |||       j
                  dk(  sJ  |        d d d        t              dk(  sJ d   |fd	|ifk(  sJ d
   di fk(  sJ y # 1 sw Y   5xY w)Nr/   argTr0   c                  N    j                   k(  sJ j                  | |f       y r   )r   r+   )r   r   captee_callsr   r3   s     r   capteez7TestOutputWidget.test_capture_decorator.<locals>.captee[   s+     }}... ##T6N3r"   )keyword_argument   r   r?   r7   r   )r(   r-   r   r   r1   r   capturer8   )	r   r   r   expected_argumentexpected_keyword_argumentr>   r=   r   r3   s	         @@@r   test_capture_decoratorz'TestOutputWidget.test_capture_decoratorO   s   ,,V4..0!$(!!!+|< 	"))+F==B&&&^^4 4 !4MO==B&&&H	" < A%%%A!!:;#
 
 	
 
 A2r(***-	 	s   A"CCc                    d| j                        }| j                         }| j                  ||      5  t        j                         j                  dd      fd       } |         |        d d d        t        |j                        dk(  sJ |j                  d   |j                  d   cxk(  r
dd	difk(  sJ  J y # 1 sw Y   RxY w)
Nr/   T)r   r6   c                  (    j                   k(  sJ y r   r   r   r   r   r3   s     r   r>   zDTestOutputWidget.test_capture_decorator_clear_output.<locals>.capteew        }}...r"   r@   r   r7   r   r6   r(   r-   r   r   r1   rA   r8   r,   r   r   r   r>   r   r3   s       @@r   #test_capture_decorator_clear_outputz4TestOutputWidget.test_capture_decorator_clear_outputo   s    ,,V4..0!!+|< 		"))+F^^D^9/ :/ HH		 <%%&!+++!!!$(:(:1(= !&$ ! 	! ! 	! !		 		s   ?CCc                 J   d| j                        }| j                         }| j                  ||      5  t        j                         j                  d      fd       } |         |        d d d        t        |j                        dk(  sJ y # 1 sw Y   $xY w)Nr/   F)r   c                  (    j                   k(  sJ y r   rG   rH   s     r   r>   zGTestOutputWidget.test_capture_decorator_no_clear_output.<locals>.captee   rI   r"   r   rJ   rK   s       @@r   &test_capture_decorator_no_clear_outputz7TestOutputWidget.test_capture_decorator_no_clear_output   s    ,,V4..0!!+|< 		"))+F^^^// 0/ HH		 <%%&!+++		 		s   >BB"N)__name__
__module____qualname__r   r   r(   r-   r4   r9   rD   rL   rO   r   r"   r   r	   r	   	   s8    
= 
=*
'
=+@!(,r"   r	   c                     d|| dS )Nstream)output_typenametextr   )rW   rV   s     r   _make_stream_outputrX      s     r"   c                  N   t        j                         } | j                  d       t        dd      f}| j                  |k(  sJ t        | j                               | j                  d       |t        dd      fz  }| j                  |k(  sJ t        | j                               y )Nsnakes!stdoutmore snakes!)r   r1   append_stdoutrX   outputsreprr3   expecteds     r   test_append_stdoutrb          !!#F ##Ix8:H>>X%;tFNN';;% ($^X>@@H>>X%;tFNN';;%r"   c                  N   t        j                         } | j                  d       t        dd      f}| j                  |k(  sJ t        | j                               | j                  d       |t        dd      fz  }| j                  |k(  sJ t        | j                               y )NrZ   stderrr\   )r   r1   append_stderrrX   r^   r_   r`   s     r   test_append_stderrrg      rc   r"   c                     t        j                         } | j                  t        d             ddddi df}| j                  |k(  sJ t        | j                               d}| j                  t        |dd	             |dd
dddddd	idfz   }|dddddddd	idfz   }| j                  |k(  s| j                  |k(  sJ y y )Nz	# snakes!display_dataz&<IPython.core.display.Markdown object>)
text/plainztext/markdown)rU   datametadatas   foobar{   i  )widthheightz	Zm9vYmFy
z#<IPython.core.display.Image object>)	image/pngrj   rp   Zm9vYmFy)r   r1   append_display_datar   r^   r_   r   )r3   ra   
image_data	expected1	expected2s        r   test_append_display_datarv      s   !!#F x45 *F!, 	
	H >>X%;tFNN';;% J
uZs3GH))C
  !	
 I  )'C
  !	
 I >>Y&&..I*EEE*E&r"   )sysunittestr   
contextlibr   IPython.displayr   r   
ipywidgetsr   r	   rX   rb   rg   rv   r   r"   r   <module>r|      s8    
  % + $J,x J,Z<<5Fr"   