
    ^h*                     n    S SK r S SKJr  S SKJr  S SKJrJr  S SKJ	r	   " S S\5      r
S rS	 rS
 rS rg)    N)TestCase)contextmanager)MarkdownImage)widget_outputc                   N    \ rS rSr\S 5       rS rS rS rS r	S r
S rS	 rS
rg)TestOutputWidget	   c              #      #    [         R                  n[         R                  nU[         l        U[         l         Sv   U[         l        U[         l        g! U[         l        U[         l        f = f7f)z@Context manager that monkeypatches get_ipython and clear_output N)r   clear_outputget_ipython)selfr   r   original_clear_outputoriginal_get_ipythons        e/home/james-whalen/.local/lib/python3.13/site-packages/ipywidgets/widgets/tests/test_widget_output.py_mocked_ipython TestOutputWidget._mocked_ipython   sZ      !. : :,88$/!%1"	=)>M&(<M% *?M&(<M%s   7A0A A0A--A0c                 d    [        S[        4SSSU0005      nS n[        S[        4X#S.5      nU$ )z8Returns a mock IPython application with a mocked kernel mock_kernel_parent_headerheadermsg_idc                     Uu  pEnU" U5      eN )self_	exc_tupleargskwargsetypeevaluetbs          r   showtraceback9TestOutputWidget._mock_get_ipython.<locals>.showtraceback"   s     )E2-    mock_ipython)kernelr#   )typeobject)r   r   r'   r#   ipythons        r   _mock_get_ipython"TestOutputWidget._mock_get_ipython   sL    J8V*<=>
	  J>

 r%   c                 &   ^ / mU4S jnTUl         U$ )z'Mock function that records calls to it c                  *   > TR                  X45        g r   )append)r   r   callss     r   r   9TestOutputWidget._mock_clear_output.<locals>.clear_output1   s    LL$(r%   )r0   )r   r   r0   s     @r   _mock_clear_output#TestOutputWidget._mock_clear_output-   s    	)"r%   c                 r   SnU R                  U5      nU R                  5       nU R                  X#5         [        R                  " 5       nUR
                  S:X  d   eU   UR
                  U:X  d   e S S S 5        UR
                  S:X  d   e S S S 5        g ! , (       d  f       N*= f! , (       d  f       g = f)Nmsg-id )r+   r2   r   r   Outputr   r   r   r   r   widgets        r   test_set_msg_id_when_capturing/TestOutputWidget.test_set_msg_id_when_capturing7   s    ,,V4..0!!+<"))+F==B&&&}}... ==B&&& =<  =<s#   *B(B3B(
B%	!B((
B6c                 P   SnU R                  U5      nU R                  5       nU R                  X#5         [        R                  " 5       nUR                  SS9  S S S 5        [        UR                  5      S:X  d   eUR                  S   SSS04:X  d   eg ! , (       d  f       NC= f)Nr5   T)wait   r   r   r=   )r+   r2   r   r   r7   r   lenr0   r8   s        r   test_clear_output"TestOutputWidget.test_clear_outputC   s    ,,V4..0!!+<"))+FT* = <%%&!+++!!!$fd^(<<<< =<s   %B
B%c                   ^^^ SmU R                  T5      nU R                  5       nSnSn/ mU R                  X5         [        R                  " 5       mTR
                  S:X  d   eTR                  5       UUU4S j5       nU" X4S9  TR
                  S:X  d   eU" 5         S S S 5        [        T5      S:X  d   eTS   U4S	U04:X  d   eTS
   S0 4:X  d   eg ! , (       d  f       N== f)Nr5   argTr6   c                  N   > TR                   T:X  d   eTR                  X45        g r   )r   r/   )r   r   captee_callsr   r9   s     r   captee7TestOutputWidget.test_capture_decorator.<locals>.captee[   s)     }}... ##TN3r%   )keyword_argument   r   rH   r>   r   )r+   r2   r   r   r7   r   capturer?   )	r   r   r   expected_argumentexpected_keyword_argumentrF   rE   r   r9   s	         @@@r   test_capture_decorator'TestOutputWidget.test_capture_decoratorO   s   ,,V4..0!$(!!!+<"))+F==B&&&^^4 4 !O==B&&&H =" < A%%%A!!:;#
 
 	
 
 A2r(***- =<s   A"C
C%c                   ^^ SmU R                  T5      nU R                  5       nU R                  X5         [        R                  " 5       mTR                  SSS9UU4S j5       nU" 5         U" 5         S S S 5        [        UR                  5      S:X  d   eUR                  S   UR                  S   s=:X  a  SS	S04:X  d   e   eg ! , (       d  f       NZ= f)
Nr5   T)r   r=   c                  *   > TR                   T:X  d   eg r   r   r   r   r   r9   s     r   rF   DTestOutputWidget.test_capture_decorator_clear_output.<locals>.capteew        }}...r%   rI   r   r>   r   r=   r+   r2   r   r   r7   rJ   r?   r0   r   r   r   rF   r   r9   s       @@r   #test_capture_decorator_clear_output4TestOutputWidget.test_capture_decorator_clear_outputo   s    ,,V4..0!!+<"))+F^^D^9/ :/ HH = <%%&!+++!!!$(:(:1(= !&$ ! 	! ! 	! ! =<s   >C		
Cc                 R  ^^ SmU R                  T5      nU R                  5       nU R                  X5         [        R                  " 5       mTR                  SS9UU4S j5       nU" 5         U" 5         S S S 5        [        UR                  5      S:X  d   eg ! , (       d  f       N*= f)Nr5   F)r   c                  *   > TR                   T:X  d   eg r   rQ   rR   s     r   rF   GTestOutputWidget.test_capture_decorator_no_clear_output.<locals>.captee   rT   r%   r   rU   rV   s       @@r   &test_capture_decorator_no_clear_output7TestOutputWidget.test_capture_decorator_no_clear_output   s    ,,V4..0!!+<"))+F^^^// 0/ HH = <%%&!+++ =<s   =B
B&r   N)__name__
__module____qualname____firstlineno__r   r   r+   r2   r:   r@   rM   rW   r\   __static_attributes__r   r%   r   r	   r	   	   s8    
= 
=*
'
=+@!(,r%   r	   c                     SUU S.$ )Nstream)output_typenametextr   )rg   rf   s     r   _make_stream_outputrh      s     r%   c                  T   [         R                  " 5       n U R                  S5        [        SS5      4nU R                  U:X  d   [        U R                  5      5       eU R                  S5        U[        SS5      4-  nU R                  U:X  d   [        U R                  5      5       eg )Nsnakes!stdoutmore snakes!)r   r7   append_stdoutrh   outputsreprr9   expecteds     r   test_append_stdoutrr          !!#F ##Ix8:H>>X%;tFNN';;% ($^X>@@H>>X%;tFNN';;%r%   c                  T   [         R                  " 5       n U R                  S5        [        SS5      4nU R                  U:X  d   [        U R                  5      5       eU R                  S5        U[        SS5      4-  nU R                  U:X  d   [        U R                  5      5       eg )Nrj   stderrrl   )r   r7   append_stderrrh   rn   ro   rp   s     r   test_append_stderrrw      rs   r%   c                     [         R                  " 5       n U R                  [        S5      5        SSSS.0 S.4nU R                  U:X  d   [        U R                  5      5       eSnU R                  [        USSS	95        USS
SS.SSSS	.0S.4-   nUSSSS.SSSS	.0S.4-   nU R                  U:X  d  U R                  U:X  d   eg g )Nz	# snakes!display_dataz&<IPython.core.display.Markdown object>)
text/plainztext/markdown)re   datametadatas   foobar{   i  )widthheightz	Zm9vYmFy
z#<IPython.core.display.Image object>)	image/pngrz   r   Zm9vYmFy)r   r7   append_display_datar   rn   ro   r   )r9   rq   
image_data	expected1	expected2s        r   test_append_display_datar      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	   rh   rr   rw   r   r   r%   r   <module>r      s8    
  % + $J,x J,Z<<5Fr%   