
    hMh*                     v    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dS )    N)TestCase)contextmanager)MarkdownImage)widget_outputc                   N    e Zd Zed             Zd Zd Zd Zd Zd Z	d Z
d Zd	S )
TestOutputWidgetc              #      K   t           j        }t           j        }|t           _        |t           _        	 dV  |t           _        |t           _        dS # |t           _        |t           _        w xY 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        k/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/ipywidgets/widgets/tests/test_widget_output.py_mocked_ipythonz TestOutputWidget._mocked_ipython   sm       !. :,8$/!%1"	=EEE)>M&(<M%%% *?M&(<M%<<<<s   A A,c                 z    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   se    J8V*<=>
 
	  	  	  J>>
 

 r"   c                 $    g fd}|_         |S )z( Mock function that records calls to it c                  6                         | |f           d S 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                 f   d}|                      |          }|                                 }|                     ||          5  t          j                    }|j        dk    sJ |5  |j        |k    sJ 	 d d d            n# 1 swxY w Y   |j        dk    sJ 	 d d d            d S # 1 swxY w Y   d S )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   sM   ,,V44..00!!+|<< 	' 	'")++F=B&&&& / /}...../ / / / / / / / / / / / / / /=B&&&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	's6   #B&%B 4B& B	B&B	B&&B*-B*c                 l   d}|                      |          }|                                 }|                     ||          5  t          j                    }|                    d           d d d            n# 1 swxY w Y   t          |j                  dk    sJ |j        d         dddifk    sJ d S )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4..00!!+|<< 	+ 	+")++FT***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ <%&&!++++!!$fd^(<<<<<<<s   *A88A<?A<c                    d|                                }|                                 }d}d}g |                     ||          5  t          j                    j        dk    sJ                                 fd            } |||           j        dk    sJ  |             d d d            n# 1 swxY w Y   t                    dk    sJ d         |fd	|ifk    sJ d
         di fk    sJ d S )Nr/   argTr0   c                  P    j         k    sJ                     | |f           d S r   )r   r+   )r   r   captee_callsr   r3   s     r   capteez7TestOutputWidget.test_capture_decorator.<locals>.captee[   s8     }.... ##T6N3333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4..00!$(!!!+|<< 	 	")++F=B&&&&^^4 4 4 4 4 4 4 F!4MO O O O=B&&&&FHHH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	" <  A%%%%A!!:;#
 
 
 
 
 A2r(******s   A&B==CCc                    d|                                }|                                 }|                     ||          5  t          j                                        dd          fd            } |              |             d d d            n# 1 swxY w Y   t          |j                  dk    sJ |j        d         |j        d         cxk    r
dd	difk    sn J d S )
Nr/   T)r   r6   c                  "    j         k    sJ d S 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   sr   ,,V44..00!!+|<< 		 		")++F^^D^99/ / / / / :9/ FHHHFHHH		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 <%&&!++++!!$(:1(= ! ! ! !&$ ! ! ! ! ! ! ! !s   ABB"Bc                    d|                                }|                                 }|                     ||          5  t          j                                        d          fd            } |              |             d d d            n# 1 swxY w Y   t          |j                  dk    sJ d S )Nr/   F)r   c                  "    j         k    sJ d S 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4..00!!+|<< 		 		")++F^^^/// / / / / 0// FHHHFHHH		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 <%&&!++++++s   A
BB!BN)__name__
__module____qualname__r   r   r(   r-   r4   r9   rD   rL   rO   r   r"   r   r	   r	   	   s        
= 
= ^
=  *  
' 
' 
'
= 
= 
=+ + +@! ! !(, , , , ,r"   r	   c                     d|| dS )Nstream)output_typenametextr   )rW   rV   s     r   _make_stream_outputrX      s      r"   c                  f   t          j                    } |                     d           t          dd          f}| j        |k    sJ t          | j                              |                     d           |t          dd          fz  }| j        |k    sJ t          | j                              d S )Nsnakes!stdoutmore snakes!)r   r1   append_stdoutrX   outputsreprr3   expecteds     r   test_append_stdoutrb          !##F ####Ix88:H>X%%%tFN';';%%% ((($^X>>@@H>X%%%tFN';';%%%%%r"   c                  f   t          j                    } |                     d           t          dd          f}| j        |k    sJ t          | j                              |                     d           |t          dd          fz  }| j        |k    sJ t          | j                              d S )NrZ   stderrr\   )r   r1   append_stderrrX   r^   r_   r`   s     r   test_append_stderrrg      rc   r"   c                     t          j                    } |                     t          d                     ddddi df}| j        |k    sJ t          | j                              d}|                     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 d S d S )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      se   !##F x44555 *F!,  	
 	
	H >X%%%tFN';';%%% J
uZs3GGGHHH))C 
  ! 	
 	
 I  )'C 
  ! 	
 	
 I >Y&&&.I*E*E*E*E&&*E*Er"   )sysunittestr   
contextlibr   IPython.displayr   r   
ipywidgetsr   r	   rX   rb   rg   rv   r   r"   r   <module>r|      s    



       % % % % % % + + + + + + + + $ $ $ $ $ $J, J, J, J, J,x J, J, J,Z  < < << < <5F 5F 5F 5F 5Fr"   