o
    i                    @   s(  d dl Z d dlZd dlmZ d dl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 d dlmZmZ d dlmZmZmZmZmZ d dlZd dlm Z  d dl!Z!e!j"d	d
 Z#dd Z$e!j%&de' e'ddde'dddde'e'dddgdd Z(e!j%&dddge!j%&dd dgddgddgge!j%&dd dgddgddggdd Z)d d! Z*e!j%&d"dd#gd$d%ggd&d' Z+d(d) Z,d*d+ Z-d,d- Z.e!j%&d.dd$gd/d0 Z/e!j%&d.dd$gd1d2 Z0d3d4 Z1e!j%&d5ej2ej3gd6d7 Z4d8d9 Z5e!j%&d:d$dgd;d< Z6d=d> Z7d?d@ Z8e!j%&dAdd$gdBdC Z9e!j%&dDdd$gdEdF Z:e!j%&dGdHd$e'dddIfdJde'ddKfdHd$e'e'dddfdHd$e'ddLfgdMdN Z;e!j%&dAdd$gdOdP Z<e!j%&dDdd$gdQdR Z=e!j%&dSdd$gdTdU Z>dVdW Z?dXdY Z@e!j%&dZd[d\gd]d^ ZAe!j%&dZd[d\gd_d` ZBdadb ZCdcdd ZDe!j%&dedfdgdh ZEe!j%jFdiddjdkdl ZGdmdn ZHdodp ZIe!j%&de' e'd$e'dqdrdse'dddgdtdu ZJdvdw ZKdxdy ZLe!j%&dzg d{d|d} ZMed~gddddd ZNedgddd ZOedgddd ZPdd ZQedgddd ZRedgddd ZSedgddd ZTedgddd ZUedgddd ZVdd ZWdd ZXdd ZYdd ZZdd Z[dd Z\e!j%&ddHdJgdd Z]e!j%&ddHdJgdd Z^dd Z_dd Z`dd Zae!j%&dd$dgdd Zbe!j%&dd$dgdd Zce dd Zde!j%&dg de!j%&dd$dgdd Zee!j%&dd$dgdd Zfe!j%&dd$dgdd Zge!j%&dd$dgedgddd Zhdd Zidd Zje!j%&dd$dge!j%&dd$dgddĄ ZkdS )    N)mock)
MouseEvent)	Rectangle)Line2D)check_figures_equalimage_comparison)click_and_dragdo_eventget_ax
mock_eventnoop)assert_allclosec                   C   s   t  S N)r
    r   r   l/var/www/html/eduruby.in/lip-sync/lip-sync-env/lib/python3.10/site-packages/matplotlib/tests/test_widgets.pyax   s   r   c            
   	   C   sP  ddl m} m} ddlm} | dvrtd tjdddddgd	\}}||d
 ddg}||d ddgddgddgdddgddgdd}| |d ddgddgd}| |d ddgddgddgddgdddgddgddddgid}|d
 	d |d 	d  |j
  t }	|j|	d!d" W d    d S 1 sw   Y  d S )#Nr   )CheckButtonsRadioButtons)"_get_running_interactive_framework)ZheadlessNz-Callback exceptions are not raised otherwise.   )   r      )ZnrowsZncolsZfigsizeZwidth_ratiosr   r   ZApplesZOrangesr   r   redZorange      colorfontsize	mistyroseZ	peachpuff	edgecolor	facecolorlabel_propsradio_props)r   r   T)actives)r   r   r   ZdarkredZ
darkorange)r'   r%   frame_propscheck_propsZDefaultZStylizedZpdf)format)matplotlib.widgetsr   r   Zmatplotlib.cbookr   pytestZxfailpltsubplots	set_titlecanvasdrawioBytesIOZsavefig)
r   r   r   figr   Z
default_rbZ	styled_rbZ
default_cbZ	styled_cbZresult_afterr   r   r   test_save_blitted_widget_as_pdf   sJ   






"r5   kwargsTr   )useblitbutton
   pixels)minspanxminspany
spancoords)fillpropsc                 C   s   t jtd d}tj| |fi |}t|ddddd t|ddddd t|dd	d	dd |d
d dvrCt|jg dg dg|jd |	  |j
\\}}}|jdksUJ |jdks\J |jdkscJ |jdksjJ |i kspJ d S )Nspecreturn_valuepressd   r   xdataydatar8   onmove   release   Zdrawtype)linenone)      Y@rE   rJ   rJ   rE   )rE   rJ   rJ   rE   rE   )err_msg)r   Mockr   widgetsRectangleSelectorr	   getr   geometryassert_called_once	call_argsrG   rH   )r   r6   onselecttoolepressereleaser   r   r   test_rectangle_selectorB   s&   r\   r=   datazminspanx, x1      %@   zminspany, y1c                 C   s&  t jtd d}d\}}|dkr!| j||f| j||f \}}tj| |d|||d}	t|	||f||fd |	jr<J |	  t|	ddd |	jsLJ |
  |  t|	||f||fd |	jrdJ |
  |j\\}
}}|
j|ksvJ |
j|ks}J |j|ksJ |j|ksJ |i ksJ d S )	NrA   r9   r9   r:   T)interactiver=   r;   r<   startendr   r      rg   )r   rQ   r   	transData	transformrR   rS   r   _selection_completedassert_not_calledrV   
reset_mockrW   rG   rH   )r   r=   r;   x1r<   y1rX   Zx0Zy0rY   rZ   r[   r6   r   r   r   test_rectangle_minspana   s4   



ro   c                 C   sX   t | dd }| sJ tjtjdd |j W d    d S 1 s%w   Y  d S )Nc                  W      d S r   r   argsr   r   r   <lambda>       z=test_deprecation_selector_visible_attribute.<locals>.<lambda>z was deprecated in Matplotlib 3.8match)rR   rS   get_visibler,   warnsmplZMatplotlibDeprecationWarningvisibler   rY   r   r   r   +test_deprecation_selector_visible_attribute   s   "r|   zdrag_from_anywhere, new_center)<   K   Frg   r   c                 C   sj   t j| td|d}t|ddd |jdksJ t|ddd |j|ks%J t|d	d
d |jdks3J d S )NT)rX   ra   drag_from_anywherer   r9   rE   x   rb   )2   A         #   r         r      )      )rR   rS   r   r   center)r   r   Z
new_centerrY   r   r   r   test_rectangle_drag   s   
r   c                 C   s   t j| tdtdddtddd}t|dd	d
 |j}| tjdddks(J |j	ddd | tjdddks<J |j
D ]}| dksIJ | dksQJ q?|jddd |j
D ]}| dksfJ | dksnJ q\d S )NTb皙?r#   alpha      ?r   )rX   ra   r@   handle_propsr   r   rb   r333333?black)markeredgecolorr   )rR   rS   r   dictr   _selection_artistget_facecolormcolorsto_rgba	set_props_handles_artistsget_markeredgecolor	get_alphaset_handle_propsr   rY   artistr   r   r   .test_rectangle_selector_set_props_handle_props   s"   



r   c                 C   s  t j| tdd}t|ddd |jdksJ |j}|d |d }}|d	 |d
 }}t|||f||fd |j|d ||d |fksEJ |j}|d |d |d |d  d  }}|d	 |}}t|||f||fd |j|d ||d |d fks~J |j}|d |d |d |d  d  }}|d |}}t|||f||fd |j||d |d |d fksJ |j}|d |d }}|d |d }}t|||f||fd |j||d ||d fksJ d S )NTrX   ra   r   r   rb   )        rO         $@      ^@r      r9   r   r   r   r   r   r   )rR   rS   r   r   extents)r   rY   r   rG   rH   	xdata_new	ydata_newr   r   r   test_rectangle_resize   s.   &"&""r   c                 C   s   t j| tdd}t|ddd tt |d W d    n1 s$w   Y  tt |d W d    n1 s>w   Y  |d |d	 |d
 d S )NTr   F   r   }      rb   unsupported_stateclearmovesquarer   )rR   rS   r   r   r,   raises
ValueError	add_stater{   r   r   r   test_rectangle_add_state   s   

r   r   c                 C   s  t j| tdd}t|ddd |jdksJ |r |d d }nd}|j}|d	 |d
 }}d\}}|| || }	}
t|||f|	|
f|d |j|d | |	|d | |
fksZJ |j}|d	 |d |d
 |d  d  }}d}|| |}	}
t|||f|	|
f|d |j|d | |	|d |d
 fksJ |j}|d	 |d |d
 |d  d  }}d}|| |}	}
t|||f|	|
f|d |j|d | |	|d |d
 fksJ |j}|d |d |d
 |d  d  }}d}|| |}	}
t|||f|	|
f|d |j|	|d	 | |d |d
 fksJ |j}|d |d |d
 |d  d  }}d}|| |}	}
t|||f|	|
f|d |j|	|d	 | |d |d
 fksTJ |j}|d |d }}d\}}|| || }	}
t|||f|	|
f|d |j|	|d	 | |
|d
 | fksJ d S )NTr   r   r   rb   )     Q@     @_@     @P@g     @`@r   controlr   r   r9   r   rc   rd   keyr   r   r9   r   r   r   rR   rS   r   r   r   r   r   r   rY   Zuse_keyr   rG   rH   xdiffydiffr   r   r   r   r   test_rectangle_resize_center   s   

&
&
&&r   c                 C   s  t j| tdd}t|ddd |jdksJ |r |d d }nd}|j}|d	 |d
 }}d\}}|| || }	}
t|||f|	|
f|d |j|d |	|d |d
 | fksZJ |j}|d	 |d |d
 |d  d  }}d}|| |}	}
t|||f|	|
f|d |j|d |	|d |d
 | fksJ |j}|d	 |d |d
 |d  d  }}d}|| |}	}
t|||f|	|
f|d |j|d |	|d |d
 | fksJ |j}|d |d |d
 |d  d  }}d}|| |}	}
t|||f|	|
f|d |j|	|d	 |d |d
 | fksJ |j}|d |d |d
 |d  d  }}d}|| |}	}
t|||f|	|
f|d |j|	|d	 |d |d
 | fksTJ |j}|d |d }}d\}}|| || }	}
t|||f|	|
f|d |j|d | |d	 |
|d
 fksJ d S )NTr   r   r   s   rb   r   r   r   g     \@r   shiftr   r   r   r   r   r   r9   r   r   r   r   r   r   r   r   r   test_rectangle_resize_square:  s   

&
&
&&r   c           	      C   s*  t j| tdd}t|ddd |d |d t|jd |j}|d	 |d
 }}d\}}|| || }}t|||f||fd t|j|d | ||d | |d
 | f |j}|d	 |d |d
 |d  d  }}d}|| |}}t|||f||fd t|j|d | ||d | |d
 | f |j}|d	 |d |d
 |d  d  }}d}|| |}}t|||f||fd t|j|d | ||d | |d
 | f |j}|d |d |d
 |d  d  }}d}|| |}}t|||f||fd t|j||d	 | |d | |d
 | f |j}|d |d |d
 |d  d  }}d}|| |}}t|||f||fd t|j||d	 | |d | |d
 | f |j}|d |d }}d\}}|| || }}t|||f||fd t|j|d | |d	 | ||d
 | f d S )NTr   r   r   rb   r   r   r   r   r   r   r   r   r9   r   r   r   r   )rR   rS   r   r   r   r   r   )	r   rY   r   rG   rH   r   r   r   r   r   r   r   #test_rectangle_resize_square_center  sj   

&&&&
r   selector_classc                 C   sR  || t dd}t|ddd |jdksJ t|jdksJ t|dd	d
 |jdhks-J t|jdks6J t|ddd t|dd	d
 t|jdksMJ |jdksTJ t|jddd d|_|jdksfJ t|jt	
g dg dgdd t|ddd t|jddd |tjkrtt d|j_W d    d S 1 sw   Y  d S d S )NTr   rE   rE   r      rb   rE   r   rE   r   r   on_key_pressr   r   rotater   )r      g(\9@g{Gz?)Zatol-   )gR]@     xa@g=
ףp[@g     V@)g     W@g=
ףp]@g     b@g(\^@)n   r   )r      )rE   r   rE   g
ףp=b@Zunvalid_value)r   r   r   len_stater	   r   ZrotationcornersnparrayrR   rS   r,   r   r   r   Zrotation_point)r   r   rY   r   r   r   test_rectangle_rotate  s6   


"r   c                 C   s   t j| tdd}t|ddd |jdksJ t|jdksJ dD ]}|| t|jd	ks1J || t|jdks?J q!d S )
NTr   r   r   rb   r   r   )r   r   r   r   )	rR   rS   r   r   r   r   r   r   Zremove_state)r   rY   stater   r   r   test_rectangle_add_remove_set  s   

r   use_data_coordinatesc                 C   sb  |  d tj| td|d}t|ddd |jdksJ |d |d	 |rz|j}|d
 |d |d
 |d  }}}d|d |d |d  d  }}|| |}	}
|d | }t|||f|	|
fd t|j|d | |	|| || g d S |j}|d
 |d }}d}|| |}	}
|d
 |j }t|||f|	|
fd t|j|d | |	ddg d S )N皙?T)rX   ra   r   r   r   rb   r   r   r   r   r   r   r9   r   g      G@g     `@)	
set_aspectrR   rS   r   r   r   r   r   Z_aspect_ratio_correction)r   r   rY   r   rG   rH   widthr   Zycenterr   r   Zychanger   r   r   *test_rectangle_resize_square_center_aspect  s6   



$"

r   c                 C   s   t j| tddd}d|_t|ddd |jdksJ t|d	dd
d |jdks)J t|dddd dd |jD }|g dksAJ t|d	ddd dd |jD }|g dksYJ |jjdksaJ t|jdddf ddg dS )z'For ellipse, test out the key modifiersr9   T)rX   
grab_rangera   rE      rE   r   r   r   )r   r   rb   )r      r   r   r   r   r   )r~   r   r~   r   r`   )r   rg   r   c                 S      g | ]}t |qS r   int.0er   r   r   
<listcomp>%      z test_ellipse.<locals>.<listcomp>)r9   r   r9   r   r   z
ctrl+shiftc                 S   r   r   r   r   r   r   r   r   *  r   )r   r   r   r   )r   I   Nr   r   rE   )rR   EllipseSelectorr   r   r   rU   shaper   )r   rY   r   r   r   r   test_ellipse  s     r  c                 C   s   t j| tdddddd}d|_t|jd |jdksJ t|jd	 |jdks*J t|d
dd |jdks8J t|ddd |jdksFJ t|dd
d |jdksTJ t	|j
jd  dsbJ t	|j
jd  dspJ d S )Nr9   Tr   r   )Zmarkerfacecolorr   )rX   r   ra   r   r   ))rE   r   r   rE   )rE   rE   r   r   ))rE   r   r   r   )r   rE   r   r   r   )r   r   rb   )r   r   r   r   )   r  )l      r  r  r`   )r9   rE   r9   rE   r   )rR   rS   r   r   r   r   Zedge_centersr   r   
same_colorZ_corner_handlesartistsZget_markerfacecolorr   r{   r   r   r   test_rectangle_handles1  s4   r  ra   c                 C   sd   t jtd d}tj| ||d}t|ddd |  |jdks!J |  t|ddd |  d S )NrA   ra   rE   r   r   r   rb   rO        b@g     [@r   r9   rE   )	r   rQ   r   rR   rS   r   rV   r   rl   r   ra   rX   rY   r   r   r    test_rectangle_selector_onselectR  s   r  ignore_event_outsidec                 C   s   t jtd d}tj| ||d}t|ddd |  |jdks!J |  t|ddd |r;|	  |jdks9J d S |  |jd	ksFJ d S )
NrA   )r  r	  r
  rb   r  r   r   r   r   )r        d@r  r  )
r   rQ   r   rR   rS   r   rV   r   rl   rk   )r   r  rX   rY   r   r   r   &test_rectangle_selector_ignore_outsidec  s   r  z$orientation, onmove_callback, kwargs
horizontal)Zminspanr7   vertical)r8   r  c                 C   s   t jtd d}t jtd d}|r||d< | d |  }tj| ||fi |}t|ddddd t|dd	d	dd t|d
dddd |dd	 |rS|dd	 d S d S )NrA   onmove_callbackautorD   rE   r   rF   rI   rJ   rK   rL   )	r   rQ   r   r   ZtwinxrR   SpanSelectorr	   assert_called_once_with)r   orientationr  r6   rX   rI   ZtaxrY   r   r   r   test_span_selectorz  s   
r  c                 C   sf   t jtd d}tj| |d|d}t|ddd |  |jdks"J |  t|ddd |  d S )	NrA   r  r  r   )r   rE   rb   )rE   r   r  )	r   rQ   r   rR   r  r   rV   r   rl   r  r   r   r   test_span_selector_onselect  s   
r  c                 C   s   t jtd d}t jtd d}tj| |d||d}t|ddd |  |  |jdks.J |  |  t|dd	d |rP|	  |	  |jdksNJ d S |  |  |jd
ks_J d S )NrA   r  )r  r  r   r   rb   )rE   r   r  r  )r   r   )
r   rQ   r   rR   r  r   rV   r   rl   rk   )r   r  rX   rI   rY   r   r   r   !test_span_selector_ignore_outside  s(   
r  r   c                 C   s   t j| tdd|d}t|ddd |jdksJ t|dd	d |r)|jd
ks(J n|jdks0J t|ddd |jdks>J d S )Nr  T)rX   	directionra   r   r`   r   rb   r  r   r   )r   r   )r   r   r   r   )rR   r  r   r   r   )r   r   rY   r   r   r   test_span_selector_drag  s   
r   c                 C   s   t j| tddd}|jdksJ |jjdksJ tt t j| tdd}W d    n1 s0w   Y  d|_|jdks?J |jjdksGJ tt d|_W d    d S 1 s[w   Y  d S )Nr  T)rX   r  ra   Zinvalid_direction)rX   r  r  Zinvalid_string)rR   r  r   r  _edge_handlesr,   r   r   r{   r   r   r   test_span_selector_direction  s    
"r"  c              	   C   s   t j| tddtdddtddd}t|d	d
d |j}| tjdddks)J |j	ddd | tjdddks=J |j
D ]}| dksJJ | dksRJ q@|jddd |j
D ]}| dksgJ | dksoJ q]d S )Nr  Tr   r   r   r   r   )rX   r  ra   r@   r   r   r   rb   r   r   r   r   )rR   r  r   r   r   r   r   r   r   r   r   	get_colorr   r   r   r   r   r   )test_span_selector_set_props_handle_props  s$   



r%  selectorspan	rectanglec                 C   s   t | tdd}|dkrtj}d|d< ntj}|di |}t|ddd t|d	d	d |jr0J d|d
< |di |}|js@J t|ddd t|d	d	d |jsSJ t|ddd |jr_J d S )NT)r   rX   ra   r'  r  r  r`   r   rb   )r   r   r  r   escaper   r   )	r   r   rR   r  rS   r   rj   r  r	   )r   r&  r6   ZSelectorrY   r   r   r   test_selector_clear  s"   



r*  c                 C   s   |dkrt j| tdddd}nt j| tdd}t|ddd |js#J | s)J |dkr4|jd	ks4J |  |jr=J | rCJ t|dd
d |jsOJ | sUJ |dkr`|jdksbJ d S d S )Nr'  r  T)rX   r  ra   r  r   r`   r   rb   r  )r   r   )r9   r   )	rR   r  r   rS   r   rj   rw   r   r   )r   r&  rY   r   r   r   test_selector_clear_method$  s*   



r+  c                 C   s   t j| tddd}tt |d W d    n1 sw   Y  tt |d W d    n1 s8w   Y  tt |d W d    n1 sRw   Y  |d d S )Nr  Tr  r   r   r   r   )rR   r  r   r,   r   r   r   r{   r   r   r   test_span_selector_add_state>  s   
r,  c                 C   s   g d}t j| |ddd}|jD ]}| rJ | rJ q|d |d |jD ]}| s4J | s:J q,|j|ksBJ d S )N)r   rg   r   r  F)r7   T)rR   ZToolLineHandlesr  Zget_animatedrw   set_visibleZset_animated	positions)r   r.  Ztool_line_handler   r   r   r   test_tool_line_handleL  s   




r/  r  )r  r  c                 C   s  t dd\}}|ddgddg |jj  | }| }tj	|t
| dd}| |ks1J | |ks9J | dkr?|n|}|jjt|ksKJ d}d	}|}	t|||d
 | |ks`J | |kshJ | dkrndnd}
||
 |	|
 g}|jj|ksJ d S )Nr   r9   r   rg   Tr  r  )r^   g      '@)r_      rb   r   )r-   r.   plotfigurer0   r1   Z
get_xboundZ
get_yboundrR   r  printr!  r.  listr   )r  r4   r   Zx_boundZy_boundrY   bound
press_data	move_datarelease_dataindexhandle_positionsr   r   r   test_span_selector_bound_  s&   r;  ZQtAgg)Zskip_on_importerrorc               	      s  t ddt j dt t \} }|jdd\}|jg dd\ td || | j	
| j  fdd}tj||d	|dddd
}ddg}ddg}t|d|d |d dd t|d|d |d dd | | fkswJ |jdu s~J  jsJ t  d |   jdu sJ ddg}ddg}ddg}t|d|d |d dd t|d|d |d dd |jdu sJ  jsJ t  d t|d|d |d dd  jdu sJ dS )zACheck that the animated artists changed in callbacks are updated.r   r   rE   T)Zanimated皙?c                    s<   t | |f\}}||  } t | d S r   )r   Zsearchsortedmeanset_dataZ	full_like)vminvmaxZindminZindmaxvZln2valuesxr   r   r=    s   z:test_span_selector_animated_artists_callback.<locals>.meanr  )r  r  ra   r   r7   r   rD   rF   rI   FgSG-?   r   gȄC(rK   N)r   linspacepisinr-   r.   r1  pauseZdraw_artistr0   ZblitZbboxrR   r  r	   Z_get_animated_artistsstaler   	get_ydataupdate)r4   r   lnr=  r'  r6  r7  r8  r   rB  r   ,test_span_selector_animated_artists_callback{  sJ   





rN  c                 C   s`   dd }t j| |dd}|j}tddd}tg d}tg d	}|||}t|| d S )
Nc                  W   rp   r   r   rq   r   r   r   rX     s   z4test_snapping_values_span_selector.<locals>.onselectr  )r  r   r   r_   )
gr<  r   r   333333?ffffff??g
ףp=
@      @      @)
r   r   r   r   r   r         ?rR  rR  rR  )rR   r  Z_snapr   rF  r   r   )r   rX   rY   Zsnap_functionsnap_valuesrC  expectr   r   r   "test_snapping_values_span_selector  s   
rW  c                    sl    fdd}t dd }tj |d|d}d|_|jdks J d |_|jd u s*J d|_|jdks4J d S )	Nc                    s
   d _ d S )NT)Z_got_onselect)r?  r@  r   r   r   rX     s   
z)test_span_selector_snap.<locals>.onselectr   rE  r  )r  rU  )   r   )r   $   )r   ZarangerR   r  r   rU  )r   rX   rU  rY   r   rX  r   test_span_selector_snap  s   
r[  r   )r   )r7   r@   c                 C   sj   t jtd d}tj| |fi |}t|ddddd t|ddddd t|dd	d	dd |g d
 d S )NrA   rD   rE   r   rF   rI   r   rK   r   )r   r   r  )r   rQ   r   rR   LassoSelectorr	   r  )r   r6   rX   rY   r   r   r   test_lasso_selector  s   r]  c                 C   s   t jtd d}tj| |tdddd}|j}t|	 ds J |
 dks(J |jddd t|	 ds9J |
 dksAJ d S )NrA   r   r   r#  r?   r   r   )r   rQ   r   rR   r\  r   r   r   r  r$  r   r   )r   rX   rY   r   r   r   r   test_lasso_selector_set_props  s   r^  c                 C   s\   t | dd}| g dksJ |d | g dks J |dd }|| d S )N)ar   c)TFTr   )FFTc                   S   rp   r   r   r   r   r   r   rs     rt   z#test_CheckButtons.<locals>.<lambda>)rR   r   Z
get_statusZ
set_activeZ
on_clickedZ
disconnect)r   checkZcidr   r   r   test_CheckButtons  s   
rb  toolbar)rN   Ztoolbar2Ztoolmanagerc                 C   s   t jd| tjtd d}tjtd d}t| d}|| |	| |j
dks,J t|d |d |j
dks=J |jdksDJ |  |  |jdksSJ t|dddd	 t|d
dd t|d
dd |jdkspJ d S )Nrc  rA    Z_clickzx**2r   r   r   rG   rH   Z	_keypress+r   5r   )r-   rcParams_setr   rQ   r   rR   ZTextBoxZ	on_submitZon_text_changetextr	   set_val
call_countZbegin_typingZstop_typing)r   rc  Zsubmit_eventZtext_change_eventrY   r   r   r   test_TextBox  s$   



rm  zcheck_radio_buttons.pngZmpl20)styleZremove_textc            
   	   C   s.  t  } | j}|jdd |d}t|d}tjtdd |j	 W d    n1 s,w   Y  |d}t
|dd	}tjtd
d |j W d    n1 sRw   Y  |d}tj|dg dg ddg dg ddd}|d}tj
|dd	g dg ddg dg dddg did}	d S )Nr   )left)皙?rP  r   333333?)zRadio 1zRadio 2zRadio 3z$The circles attribute was deprecatedru   )rp  r   r   rq  )zCheck 1zCheck 2zCheck 3)FTT'The rectangles attribute was deprecated)rp  r   r   rq  )      r   )r   greenblue)r   r   )r    Z	palegreenZ	lightbluer!   r$   )rp  r<  r   rq  r   r%   r(   r)   )r
   r2  Zsubplots_adjustZadd_axesrR   r   r,   rx   DeprecationWarningZcirclesr   
rectangles)
r   r4   Zrax1Zrb1Zrax2Zcb1Zrax3Zrb3Zrax4Zcb4r   r   r   test_check_radio_buttons_image  sP   





rz  Zpng)
extensionsc                 C   s   t |  ddg |jg g d}|jddgddg|jtjd d d d	d
gd |jddd|jdd |jddd|jdd d S )NteacoffeeZxticksZyticksrq  UUUUUU?UUUUUU?	font.sizer   ZC0rN   )ri   sr`        ?r   ri   va)	rR   r   r.   add_subplotscatter	transAxesr-   rh  rj  fig_testfig_refr   r   r   r   test_radio_buttons?  s   r  c                 C   sl   dgdgd}dddd}t j| dd	g||d
 t |  dd	g}|| |i |ddi d S )Nr      r   ru  rv  r   r#   r"   	linewidthr|  r}  r$   r        b@)rR   r   r.   set_label_propsZset_radio_props)r  r  r%   r&   cbr   r   r   test_radio_buttons_propsI  s   
r  c                 C   sf   t jtdd tj| ddgdddid}W d    n1 sw   Y  t|j dd	gs1J d S )
Nz"Both the \*activecolor\* parameterru   r|  r}  r   r#   ru  )activecolorr&   rN   )	r,   rx   UserWarningrR   r   r   r  Z_buttonsr   )r   rbr   r   r   !test_radio_button_active_conflictX  s   r  c                 C   s:   t j| ddgdd t j|  ddgdd}d|_d S )Nr|  r}  ru  )r  r   )rR   r   r.   r  )r  r  r  r   r   r   %test_radio_buttons_activecolor_changea  s   
r  c                 C   s   t |  ddgddg |jg g d}|jddgddgd|jtjd	 d
 d
 ddgd |jddgddgd|jtjd	 d
 d
 ddgd |jddd|jdd |jddd|jdd d S )Nr|  r}  Tr~  rq  r  r  r  r  r   rN   )markerri   r  r`  rD  kr  r   r  )	rR   r   r.   r  r  r  r-   rh  rj  r  r   r   r   test_check_buttonsl  s   r  c                 C   s   dgdgd}dddd}ddd}t j| d	d
gddg|||d t |  d	d
gddg}|| |i |ddi |d|d< |i |ddi d S )Nr   r  r   ru  rv  r   r  )r#   r  r|  r}  Trw  r  r  r#   r"   )rR   r   r.   r  Zset_frame_propspopZset_check_props)r  r  r%   r(   r)   r  r   r   r   test_check_button_propsx  s   

r  c                    s   t |  ddgddg}tjtdd |j W d    n1 s"w   Y  |jg g d ddgd}|d |d  fd	d
tD }|D ]} 	| qMd S )Nrd  Frr  ru   r~  r  r  r   c              
      s6   g | ]\}}t d | d  fdd jdqS )rp  r   r   rN   )Zxyr   heightr"   r#   ri   )r   r  )r   iyr   hwysr   r   r     s    z1test_check_buttons_rectangles.<locals>.<listcomp>)
rR   r   r.   r,   rx   rx  ry  r  	enumerateZ	add_patch)r  r  r  dyry  r(  r   r  r   test_check_buttons_rectangles  s$   r  c                 C   s4  t |  ddgddg}tjtdd |j W d    n1 s"w   Y  |jD ]}|d q*|j	g g d}ddg}d}|d	 |d	 }}d
d|j
dd}	t|D ]C\}
}d||d	  }}t||| g|| |gfi |	}t||| g||| gfi |	}|d |d || || qTd S )Nrd  Tz"The lines attribute was deprecatedru   Fr~  r  r  r   r  g      ?Zbutt)r   r  ri   Zsolid_capstylerp  )rR   r   r.   r,   rx   rx  linesZ_rectanglesr-  r  r  r  r   add_line)r  r  r  r(  r   r  r  r  r  Z
lineparamsr  r  rD  l1l2r   r   r   test_check_buttons_lines  s2   
""


r  c                  C   s   t  \} }tt tj|ddddd W d    n1 s w   Y  tt tj|ddddd W d    d S 1 s@w   Y  d S )Nrd  r         8@r   )r   labelvalminvalmax	slidermin)r   r  r  r  	slidermax)r-   r.   r,   r   r   rR   Slider)r4   r   r   r   r   'test_slider_slidermin_slidermax_invalid  s   "r  c                  C   sp   t  \} }tj|ddddd}tj|dddd|d}|j|jks#J tj|dddd|d	}|j|jks6J d S )
Nrd  r   r  rR  r   r  r  r  valinitrT  )r   r  r  r  r  r  r   )r   r  r  r  r  r  r-   r.   rR   r  val)r4   r   Zslider_sliderr   r   r   test_slider_slidermin_slidermax  s   r  c                  C   sX   t  \} }tj|ddddd}|j|jksJ tj|ddddd}|j|jks*J d S )Nrd  r   r  g      $r  g      9@)r-   r.   rR   r  r  r  r  r4   r   r  r   r   r   test_slider_valmin_valmax  s   r  c                  C   s\   t  \} }tj|dddddd}|jdksJ tj|ddddg dd}|jd	ks,J d S )
Nrd  r   r  g&@r   )r   r  r  r  r  Zvalstepr_   )r   r   rS  g333333@rS  r  r  r   r   r   test_slider_valstep_snapping  s   r  c                  C   s   t  \} }tj|dddddd}|d |jdksJ |j |j	
 }t|jg d t  \} }tj|ddddd	d}|d |jdksMJ |j |j	
 }t|jg d
 d S )Nrd  r   r  rt  r  )r   r  r  r  r  r  r9   )r   r  竪?r   r  )r  r   r   r  )r-   r.   rR   r  rk  r  polyget_extentstransformedr  invertedr   Zbounds)r4   r   r  boxr   r   r   test_slider_horizontal_vertical  s    

r  c                  C   sD   t  \} }tj|ddddd}|d |  |jdks J d S )Nrd  r   r   r   r        ?)r-   r.   rR   r  rk  resetr  r  r   r   r   test_slider_reset  s
   
r  r  c                    sJ   dkr	g d}ng d}t  \}}tj|ddd ddgd	}|j |j }t	|
  | g d
 t	|jd  fdd}|d t	|jd t	||d |j |j }t	|
  | g d |d t	|jd t	||d |d t	|jd t	||d |  t	|jd t	||d d S )Nr  r   r   r   r   r   r   r   r   rd  r   rT  r<  (\?r   r  r  r  r  r  )r<  r  r  r  )r<  r  c                    s(    dkrdd | j D S dd | j D S )Nr  c                 S      g | ]}|  d  qS r   )rK  r   r  r   r   r   r   "      z?test_range_slider.<locals>.handle_positions.<locals>.<listcomp>c                 S   r  r  )	get_xdatar  r   r   r   r   $  r  )Z_handles)r  r  r   r   r:     s   z+test_range_slider.<locals>.handle_positions)皙?rO  )r  r  rO  r  )r   r<  )r<  r   )r9   r   )r-   r.   rR   RangeSliderr  r  r  r  r  r   
get_pointsflattenr  rk  r  )r  idxr4   r   r  r  r:  r   r  r   test_range_slider  s4   




r  c                 C   st   | dkr	g d}ng d}t  \}}tj|ddd| ddgd}|j |j }t	|
  | g d	 d S )
Nr  r  r  rd  r   rT  r   r  )r   r  r   r  )r-   r.   rR   r  r  r  r  r  r  r   r  r  )r  r  r4   r   r  r  r   r   r   "test_range_slider_same_init_values:  s   

r  c           	      K   sn   t  }tjtdd}tj||fi |}| D ]\}}t||fi | q|j|ks+J |j|fi fks5J dS )a4  
    Helper function to test Polygon Selector.

    Parameters
    ----------
    event_sequence : list of tuples (etype, dict())
        A sequence of events to perform. The sequence is a list of tuples
        where the first element of the tuple is an etype (e.g., 'onmove',
        'press', etc.), and the second element of the tuple is a dictionary of
         the arguments for the event (e.g., xdata=5, key='shift', etc.).
    expected_result : list of vertices (xdata, ydata)
        The list of vertices that are expected to result from the event
        sequence.
    selections_count : int
        Wait for the tool to call its `onselect` function `selections_count`
        times, before comparing the result to the `expected_result`
    **kwargs
        Keyword arguments are passed to PolygonSelector.
    NrA   )	r
   r   rQ   r   rR   PolygonSelectorr	   rl  rW   )	event_sequenceexpected_resultZselections_countr6   r   rX   rY   etype
event_argsr   r   r   check_polygon_selectorK  s   r  c                 C   s.   dt | |dfdt | |dfdt | |dfgS )NrI   re  rD   rK   r   re  r   r   r   polygon_place_vertexm  s   r  c                 C   s2   dt | |dfdt | |ddfdt | |ddfgS )NrI   re  rD   r   rF   rK   r  re  r   r   r   polygon_remove_vertexs  s   r  draw_bounding_boxc                 C   s  t jt| d}g d}g tddtddtddtdd}|||d g d}g tddtdddtdd	fd
tdddfdtdddfd
tdddfdtdddfdtdd	ftddtdd}|||d g d}g tddtdddtdd	fd
tdddfdtdddfd
tdddfdtdddfdtdd	ftddtdd}|||d g d}g tddtddtddtddd
tdddfdtdddfd
tdddfdtdddf}|||d g d}g tddtddtddtdddtdd	fd
tdddfdtdddfd
tdddfdtdddfdtdd	f}|||d g d}dtdd	fd
tdddfdtdddfd
tdddfdtdddfdtdd	fdtdd	fd
tdddfdtdddfd
tdddfdtdddfdtdd	fgtddtddtddtdd}|||d g d}g tddtdddtdd	fdtdd	ftddtddtddtdd}|||d d S )Nr  r   r   r   r   r   r   r   r   r   ))r~   r   r  r  r   r   r   rI   re  rD   r~   rK   Zon_key_release))r   r~   )r   r~   r  r   rE   r   r   ))r~   r~   )r   r~   )r~   r   rL   r)  )	functoolspartialr  r  r   )r  Zcheck_selectorr  r  r   r   r   test_polygon_selectory  s   	
	

	

r  c                 C   s,  t j| ttdddtdd|d}g tddtddtddtdd}|D ]\}}t||fi | q)|j}| dksBJ | dksJJ |j	d	d
d | d	ksYJ | d
ksaJ |j
D ]}| dksnJ | dksvJ qd|jd	d
d |j
D ]}| d	ksJ | d
ksJ qd S )Nr   r   r#  r   r   )rX   r@   r   r  r   r   r   r   )rR   r  r   r   r  r	   r   r$  r   r   r   r   )r   r  rY   r  r  r  r   r   r   r   ,test_polygon_selector_set_props_handle_props  s<   


r  c                 C   s.   |   }|  }tj|tddid}d|_d S )Nrz   F)rX   r@   )r   r   r   rP  )r.   rR   rS   r   r   )r  r  ax_test_rY   r   r   r   test_rect_visibility  s   
r  r  )r   r   r   c                 C   st   g d}t |d  t |d  t |d  t |d  g}|| t dd |tdd t|g }t||d|d d S )Nr  r   r   r      r  )r  insertappendr  sumr  )r  r  vertsr  r   r   r   test_polygon_selector_remove  s   





r  c                 C   sd   g d}g t |d  t |d  t |d  t |d  t|d  }t||dd  d| d d S )Nr  r   r   r   r  )r  r  r  )r  r  r  r   r   r   (test_polygon_selector_remove_first_point+  s   





r  c                 C   s   g d}g t |d  t |d  t |d  t |d  t|d  t|d  t |d  }tj| t|d}|D ]\}}t||fi | q:|j|dd ksSJ d S )Nr  r   r   r   rX   r  )r  r  rR   r  r   r	   r  )r   r  r  r  rY   r  r  r   r   r   test_polygon_selector_redraw9  s,   






	r  c                 C   s   g d}|   }tj|t|d}||_|j|ksJ |  }tj|t|d}g t|d  t|d  t|d  t|d  }|D ]\}	}
t||	fi |
 qBd S )N))r<  r  )r   rQ  )r   r   r  r   r   r   )r  rR   r  r   r  r  r	   )r  r  r  r  r  Z	tool_testZax_refZtool_refr  r  r  r   r   r   "test_polygon_selector_verts_setterQ  s.   



r  c                 C   s  | j ddd g d}g t|d  t|d  t|d  t|d  t|d  }tj| tdd	}|D ]\}}t||fi | q5| j}| jj}t	d
|g|
ddR    t	d|g|
dR    t	d|g|
ddR    tj|jg d t	d
|g|
ddR    t	d|g|
dR    t	d|g|
ddR    tj|jg d tj|jjd t	d
|g|
ddR    t	d|g|
ddR    tj|jg d tj|jjd d S )N)ir   )ZxlimZylim))r   r   )r   r   )r   (   )r  r   r   r   r   r   Tr  Zbutton_press_event)r  r  Zmotion_notify_eventre   Zbutton_release_event))r9   r   r   )r9   r   )r   r9   r`   rf   )r   r   rg   rg   r  r  rg   )      4@      D@r  r  r   )r  r  r  )r  r  g      >@r  )setr  rR   r  r   r	   rh   r2  r0   r   ri   Z_processr   testingr   r  _boxr   )r   r  r  rY   r  r  tr0   r   r   r   test_polygon_selector_boxi  s   




	


r  c           	      C   s   t jtd d}t| |}g dg dfD ]Z}|D ]\}}t||D ]\}}t||fi | q"q|j}|js9J |	 s?J |	 sEJ t
j| | |j|d d fi fks\J |  |jreJ t
j| dg qd S )NrA   )r  r  r  r  )r  )rE   r   r  r  r  r   )r   rQ   r   rR   r  r  r	   r   rj   rw   r   r  Zassert_equalZ
get_xydatarW   r   )	r   rX   rY   resultrD  r  r  r  r   r   r   r   "test_polygon_selector_clear_method  s&   

r  horizOnvertOnc                 C   s  t  jddd\}}t   }tjd ||fd| |d}t|jdks&J t|jdks/J t|ddd}|	| |jj
  |jD ]
}| d	ksNJ qD|jD ]
}| d
ks\J qRtdd |jD |rjdndksoJ tdd |jD | r|dndksJ |j |_|j |_t|ddd}|	| tdd |jD |rdndksJ tdd |jD | rdndksJ t|ddd}|	| |jD ]
}| d	ksJ q|jD ]
}| d
ksJ qd S )Nr   T)ZsharexF)r7   r  r  r   r  re  )r   r   )r  r  c                 S      g | ]}|  r|qS r   rw   r   rM   r   r   r   r     r  z$test_MultiCursor.<locals>.<listcomp>r   c                 S   r	  r   r
  r  r   r   r   r     r  c                 S   r	  r   r
  r  r   r   r   r     r  c                 S   r	  r   r
  r  r   r   r   r     r  r  )r-   r2  r.   rR   ZMultiCursorr   ZvlinesZhlinesr   rI   r0   r1   r  rK  r  r  )r  r  Zax1Zax3Zax2multieventlr   r   r   test_MultiCursor  sJ   












r  )lr  r2   Zunittestr   Z
matplotlibry   Zmatplotlib.backend_basesr   Zmatplotlib.colorscolorsr   r+   rR   Zmatplotlib.pyplotZpyplotr-   Zmatplotlib.patchesr   Zmatplotlib.linesr   Zmatplotlib.testing.decoratorsr   r   Zmatplotlib.testing.widgetsr   r	   r
   r   r   numpyr   Znumpy.testingr   r,   Zfixturer   r5   markZparametrizer   r\   ro   r|   r   r   r   r   r   r   r   rS   r   r   r   r   r  r  r  r  r  r  r  r   r"  r%  r*  r+  r,  r/  r;  backendrN  rW  r[  r]  r^  rb  rm  rz  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   <module>   s"   
'

#

#
I
I?

!
!!









8





$

	

	










,
"
q
 



8