o
    li                     @   s  d dl 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 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d0d1 Z/e!j%&d/dd%gd2d3 Z0d4d5 Z1e!j%&d6ej2ej3gd7d8 Z4d9d: Z5e!j%&d;d%dgd<d= Z6d>d? Z7d@dA Z8e!j%&dBdd%gdCdD Z9e!j%&dEdd%gdFdG Z:e!j%&dHdId%e'dddJfdKde'ddLfdId%e'e'dddfdId%e'ddMfgdNdO Z;e!j%&dBdd%gdPdQ Z<e!j%&dEdd%gdRdS Z=e!j%&dTdd%gdUdV Z>dWdX Z?dYdZ Z@e!j%&d[d\d]gd^d_ ZAe!j%&d[d\d]gd`da ZBdbdc ZCddde ZDe!j%&dfdgdhdi ZEe!j%jFdjddkdldm ZGdndo ZHdpdq ZIe!j%&de' e'd%e'drdsdte'dddgdudv ZJdwdx ZKe!j%&dyg dzd{d| ZLed}gd~dddd ZMedgddd ZNedgddd ZOdd ZPedgddd ZQedgddd ZRedgddd ZSedgddd ZTedgddd ZUdd ZVdd ZWdd ZXdd ZYdd ZZdd Z[e!j%&ddIdKgdd Z\e!j%&ddIdKgdd Z]dd Z^dd Z_dd Z`e!j%&dd%dgdd Zae!j%&dd%dgdd Zbe dd Zce!j%&dg de!j%&dd%dgdd Zde!j%&dd%dgdd Zee!j%&dd%dgdd Zfe!j%&dd%dgedgddd Zgdd Zhe!j%&dd%dge!j%&dd%dgdd ZidS )    N)mock)MatplotlibDeprecationWarning)
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   [/home/ubuntu/SoloSpeech/.venv/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)headlessNz-Callback exceptions are not raised otherwise.   )   r      )nrowsncolsfigsizewidth_ratios)r   r   ApplesOrangesr   r   redorange      colorfontsize	mistyrose	peachpuff	edgecolor	facecolorlabel_propsradio_props)r   r   T)actives)r   r   r&   darkred
darkorange)r0   r.   frame_propscheck_propsDefaultStylizedpdf)format)matplotlib.widgetsr   r   matplotlib.cbookr   pytestxfailpltsubplots	set_titlecanvasdrawioBytesIOsavefig)
r   r   r   figr   
default_rb	styled_rb
default_cb	styled_cbresult_afterr   r   r   test_save_blitted_widget_as_pdf   sJ   






"rK   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ydatarN   onmove   release   drawtype)linenone)      Y@rZ   r_   r_   rZ   )rZ   r_   r_   rZ   rZ   )err_msg)r   Mockr   widgetsRectangleSelectorr
   getr   geometryassert_called_once	call_argsr\   r]   )r   rL   onselecttoolepressereleaser   r   r   test_rectangle_selectorB   s&   rr   rS   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 )	NrV   rO   rO   rP   T)interactiverS   rQ   rR   startendr$   r$      r}   )r   rg   r   	transData	transformrh   ri   r	   _selection_completedassert_not_calledrl   
reset_mockrm   r\   r]   )r   rS   rQ   x1rR   y1rn   x0y0ro   rp   rq   rL   r   r   r   test_rectangle_minspana   s4   



r   c                 C   s`   t | dd }| sJ tjtdd d|_W d    n1 s#w   Y  | r.J 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.6matchF)rh   ri   get_visibler;   warnsr   visibler   ro   r   r   r   +test_deprecation_selector_visible_attribute   s   r   zdrag_from_anywhere, new_center)<   K   Fr}   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)rn   rw   drag_from_anywherer   rO   rZ   x   rx   )2   A         #   r         r      )      )rh   ri   r   r	   center)r   r   
new_centerro   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   )rn   rw   rU   handle_propsr   r   rx   r333333?black)markeredgecolorr   )rh   ri   r   dictr	   _selection_artistget_facecolormcolorsto_rgba	set_props_handles_artistsget_markeredgecolor	get_alphaset_handle_propsr   ro   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rn   rw   r   r   rx   )        re         $@      ^@r      rO   r   r   r   r   r$   r   )rh   ri   r   r	   extents)r   ro   r   r\   r]   	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   }      rx   unsupported_stateclearmovesquarer   )rh   ri   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   rx   )     Q@     @_@     @P@g     @`@r   controlr   r   rO   r   ry   rz   keyr   r   rO   r   r$   r   rh   ri   r   r	   r   r   r   r   ro   use_keyr   r\   r]   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   rx   r   r   r   g     \@r   shiftr   r   r   r   r   r   rO   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   rx   r   r   r   r   r   r   r   r   rO   r   r   r   r   )rh   ri   r   r	   r   r   r   )	r   ro   r   r\   r]   r   r   r   r   r   r   r   #test_rectangle_resize_square_center  sj   

&&&&
r   selector_classc                 C   sV  || t dd}t|ddd |jdksJ t|jdksJ t|dd	d
 |jtdgks/J t|jdks8J t|ddd t|dd	d
 t|jdksOJ |jdksVJ t|jddd d|_|jdkshJ 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   rZ   rZ   r      rx   rZ   r   rZ   r   r   on_key_pressr   r   rotater   )r      g(\9@g{Gz?)atol-   )gR]@     xa@g=
ףp[@g     V@)g     W@g=
ףp]@g     b@g(\^@)n   r   )r      )rZ   r   rZ   g
ףp=b@unvalid_value)r   r	   r   len_stater
   setr   rotationcornersnparrayrh   ri   r;   r   r   r   rotation_point)r   r   ro   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   rx   r   r   )r   r   r   r   )	rh   ri   r   r	   r   r   r   r   remove_state)r   ro   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)rn   rw   r  r   r   rx   r   r   r   r   r   r   rO   r   g      G@g     `@)	
set_aspectrh   ri   r   r	   r   r   r   _aspect_ratio_correction)r   r  ro   r   r\   r]   widthr   ycenterr   r   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 modifiersrO   T)rn   
grab_rangerw   rZ      rZ   r  r   r   )r   r   rx   )r      r   r  r   r   r   )r   r   r   r   rv   )r   r}   r   c                 S      g | ]}t |qS r   int.0er   r   r   
<listcomp>'      z test_ellipse.<locals>.<listcomp>)rO   r   rO   r   r   z
ctrl+shiftc                 S   r  r   r  r  r   r   r   r  ,  r  )r   r   r   r   )r   I   Nr   r   rZ   )rh   EllipseSelectorr   r   r	   rk   shaper   )r   ro   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 )NrO   Tr   r   )markerfacecolorr   )rn   r  rw   r   r  ))rZ   r  r  rZ   )rZ   rZ   r  r  ))rZ   r   r  r   )r   rZ   r   r  r   )r   r   rx   )r   r  r   r  )   r%  )l      r&  r'  rv   )rO   rZ   rO   rZ   r   )rh   ri   r   r   r   r  edge_centersr	   r   
same_color_corner_handlesartistsget_markerfacecolorr   r   r   r   r   test_rectangle_handles3  s4   r-  rw   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 )NrV   rw   rZ   r   r  r   rx   re        b@g     [@r   rO   rZ   )	r   rg   r   rh   ri   r	   rl   r   r   r   rw   rn   ro   r   r   r    test_rectangle_selector_onselectT  s   r5  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 )
NrV   )r6  r/  r0  rx   r1  r  r  r   r   )r2        d@r2  r9  )
r   rg   r   rh   ri   r	   rl   r   r   r   )r   r6  rn   ro   r   r   r   &test_rectangle_selector_ignore_outsidee  s   r:  z$orientation, onmove_callback, kwargs
horizontal)minspanrM   vertical)rN   r.  c                 C   s   t jtd d}t jtd d}|r||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 |rJ|dd d S d S )NrV   onmove_callbackrY   rZ   r   r[   r^   r_   r`   ra   )r   rg   r   rh   SpanSelectorr
   assert_called_once_with)r   orientationr>  rL   rn   r^   ro   r   r   r   test_span_selector|  s   rB  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 )	NrV   r;  r.  r   )r  rZ   rx   )rZ   r  r3  )	r   rg   r   rh   r?  r	   rl   r   r   r4  r   r   r   test_span_selector_onselect  s   
rC  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 )NrV   r;  )r>  r6  r   r  rx   )rZ   r   r7  r8  )r  r   )
r   rg   r   rh   r?  r	   rl   r   r   r   )r   r6  rn   r^   ro   r   r   r   !test_span_selector_ignore_outside  s(   
rD  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)rn   	directionrw   r   rv   r   rx   r3  r   r   )r$   r   )r   r   r   r   )rh   r?  r   r	   r   )r   r   ro   r   r   r   test_span_selector_drag  s   
rF  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)rn   rE  rw   invalid_direction)rn   rE  r=  invalid_string)rh   r?  r   rE  _edge_handlesr;   r   r   r   r   r   r   test_span_selector_direction  s    
"rJ  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   )rn   rE  rw   rU   r   r   r   rx   r   r   r&   r   )rh   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$   



rM  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   rn   rw   rO  r;  rE  rv   r   rx   )r   r   r6  r   escaper   r   )	r   r   rh   r?  ri   r	   r   r6  r
   )r   rN  rL   Selectorro   r   r   r   test_selector_clear  s"   



rS  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 )NrO  r;  T)rn   rE  rw   r6  r   rv   r   rx   r3  )r   r   )rO   r   )	rh   r?  r   ri   r	   r   r   r   r   )r   rN  ro   r   r   r   test_selector_clear_method  s*   



rT  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   )rh   r?  r   r;   r   r   r   r   r   r   r   test_span_selector_add_state9  s   
rU  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$   r}   r   r;  F)rM   T)rh   ToolLineHandlesr+  get_animatedr   set_visibleset_animated	positions)r   rZ  tool_line_handler   r   r   r   test_tool_line_handleG  s   




r\  rE  )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	g}d
dg}|}	t|||d | |ksdJ | |kslJ | dkrrdnd}
||
 |	|
 g}|jj|ksJ d S )Nr   rO   r$   r}   Tr.  r;  rt   g      '@ru      rx   r   )r=   r>   plotfigurer@   rA   
get_xbound
get_yboundrh   r?  printrI  rZ  listr	   )rE  rE   r   x_boundy_boundro   bound
press_data	move_datarelease_dataindexhandle_positionsr   r   r   test_span_selector_boundZ  s&   rl  QtAgg)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   rZ   T)animated皙?c                    s<   t | |f\}}||  } t | d S r   )r  searchsortedmeanset_data	full_like)vminvmaxindminindmaxvln2valuesxr   r   rr    s   z:test_span_selector_animated_artists_callback.<locals>.meanr;  )rE  r>  rw   r   rM   r   rY   r[   r^   FgSG-?   r   gȄC(r`   N)r  linspacepisinr=   r>   r^  pausedraw_artistr@   blitbboxrh   r?  r
   _get_animated_artistsstaler   	get_ydataupdate)rE   r   lnrr  rO  rg  rh  ri  r   rz  r   ,test_span_selector_animated_artists_callbackv  sJ   





r  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   r   r   r   r   r   r   r   rn     s   z4test_snapping_values_span_selector.<locals>.onselectr;  )rE  r   r   ru   )
grp  r   r   333333?ffffff??g
ףp=
@      @      @)
r   r   r   r   r   r         ?r  r  r  )rh   r?  _snapr  r  r  r   )r   rn   ro   snap_functionsnap_valuesr|  expectr   r   r   "test_snapping_values_span_selector  s   
r  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)_got_onselect)ru  rv  r   r   r   rn     s   
z)test_span_selector_snap.<locals>.onselectr   r~  r;  )rE  r  )   r   )r#   $   )r  arangerh   r?  r   r  )r   rn   r  ro   r   r  r   test_span_selector_snap  s   
r  r!   )r&   )rM   rU   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 )NrV   rY   rZ   r   r[   r^   r   r`   r  )r   r  r7  )r   rg   r   rh   LassoSelectorr
   r@  )r   rL   rn   ro   r   r   r   test_lasso_selector  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   r   r   r   r   r   r   r   r     r   z#test_CheckButtons.<locals>.<lambda>)rh   r   
get_status
set_active
on_clicked
disconnect)r   checkcidr   r   r   test_CheckButtons  s   
r  toolbar)rd   toolbar2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 t|dd	d
 t|ddd
 |jdksmJ d S )Nr  rV    _clickzx**2r   r   	_keypress+r   5r   )r=   rcParams_setr   rg   r   rh   TextBox	on_submiton_text_changetextr
   set_val
call_countbegin_typingstop_typing)r   r  submit_eventtext_change_eventro   r   r   r   test_TextBox  s$   




r  zcheck_radio_buttons.pngmpl20)styleremove_textc            
   	   C   s>  t  } | j}|jdd |g d}t|d}tjtdd |j	 W d    n1 s.w   Y  |g d}t
|dd	}tjtd
d |j W d    n1 sVw   Y  |g d}tj|dg dg ddg dg ddd}|g d}tj
|dd	g dg ddg dg dddg did}	d S )Nr   )left)皙?r  r   333333?)zRadio 1zRadio 2zRadio 3z$The circles attribute was deprecatedr   )r  r   r   r  )zCheck 1zCheck 2zCheck 3)FTT'The rectangles attribute was deprecated)r  r   r   r  )      r#   )r!   greenblue)r'   r&   )r(   	palegreen	lightbluer*   r-   )r  rp  r   r  r&   r.   r3   r4   )r   r_  subplots_adjustadd_axesrh   r   r;   r   DeprecationWarningcirclesr   
rectangles)
r   rE   rax1rb1rax2cb1rax3rb3rax4cb4r   r   r   test_check_radio_buttons_image  sP   

r  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xticksyticksr  UUUUUU?UUUUUU?	font.sizer   C0rd   )r   sr        ?r   r   va)	rh   r   r>   add_subplotscatter	transAxesr=   r  r  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%   r  r  r   r,   r+   	linewidthr  r  r-   r        b@)rh   r   r>   set_label_propsset_radio_props)r  r  r.   r/   cbr   r   r   test_radio_buttons_props7  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\* parameterr   r  r  r!   r,   r  )activecolorr/   rd   )	r;   r   UserWarningrh   r   r   r)  _buttonsr   )r   rbr   r   r   !test_radio_button_active_conflictF  s   r  c                 C   s:   t j| ddgdd t j|  ddgdd}d|_d S )Nr  r  r  )r  r!   )rh   r   r>   r  )r  r  r  r   r   r   %test_radio_buttons_activecolor_changeO  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  r  r  r  r  r  r   rd   )markerr   r  r  r}  kr  r   r  )	rh   r   r>   r  r  r  r=   r  r  r  r   r   r   test_check_buttonsZ  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%   r  r  r   r  )r,   r  r  r  Tr  r  r  r,   r+   )rh   r   r>   r  set_frame_propspopset_check_props)r  r  r.   r3   r4   r  r   r   r   test_check_button_propsf  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 )Nr  Fr  r   r  r  r  r   c              
      s6   g | ]\}}t d | d  fdd jdqS )r  r   r   rd   )xyr  heightr+   r,   r   )r   r  )r  iyr   hwysr   r   r    s    z1test_check_buttons_rectangles.<locals>.<listcomp>)
rh   r   r>   r;   r   r  r  r  	enumerate	add_patch)r  r  r  dyr  rP  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 )Nr  Tz"The lines attribute was deprecatedr   Fr  r  r  r   r  g      ?butt)r&   r  r   solid_capstyler  )rh   r   r>   r;   r   r  lines_rectanglesrX  r  r  r  r   add_line)r  r  r  rP  r   r  r  r
  r	  
lineparamsr  r  r}  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 )Nr  r         8@r   )r   labelvalminvalmax	slidermin)r   r  r  r  	slidermax)r=   r>   r;   r   r   rh   Slider)rE   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 )
Nr  r   r  r  r   r  r  r  valinitr  )r   r  r  r  r"  r  r   )r   r  r  r  r"  r  r=   r>   rh   r  val)rE   r   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 )Nr  r   r  g      $r!  g      9@)r=   r>   rh   r  r$  r  r  rE   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 )
Nr  r   r  g&@r   )r   r  r  r  r"  valstepru   )r   r   r  g333333@r  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 )Nr  r   r  r  r;  )r   r  r  r  r"  rA  rO   )r   r  竪?r   r=  )r  r   r   r,  )r=   r>   rh   r  r  r$  polyget_extentstransformedr  invertedr   bounds)rE   r   r&  boxr   r   r   test_slider_horizontal_vertical  s    

r3  c                  C   sD   t  \} }tj|ddddd}|d |  |jdks J d S )Nr  r   r   r   r!        ?)r=   r>   rh   r  r  resetr$  r(  r   r   r   test_slider_reset  s
   
r6  rA  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   r  r   r  rp  (\?r   r  r  r  rA  r"  )rp  r  r9  r4  )rp  r9  c                    s(    dkrdd | j D S dd | j D S )Nr=  c                 S      g | ]}|  d  qS r   )r  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>  )_handles)r&  rA  r   r   rk    s   z+test_range_slider.<locals>.handle_positions)皙?r  )rB  r  r  r4  )r   rp  )rp  r   )rO   r    )r=   r>   rh   RangeSliderr-  r.  r/  r  r0  r   
get_pointsflattenr$  r  r5  )rA  idxrE   r   r&  r2  rk  r   rA  r   test_range_slider  s4   




rH  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=  r7  r8  r  r   r  r   r:  )r   r  r   r4  )r=   r>   rh   rD  r-  r.  r/  r  r0  r   rE  rF  )rA  rG  rE   r   r&  r2  r   r   r   "test_range_slider_same_init_values(  s   

rI  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.
    NrV   )	r   r   rg   r   rh   PolygonSelectorr
   r  rm   )	event_sequenceexpected_resultselections_countrL   r   rn   ro   etype
event_argsr   r   r   check_polygon_selector9  s   rP  c                 C   s.   dt | |dfdt | |dfdt | |dfgS )Nr^   r\   r]   rY   r`   r   rQ  r   r   r   polygon_place_vertex[  s   rS  c                 C   s2   dt | |dfdt | |ddfdt | |ddfgS )Nr^   rQ  rY   r   r[   r`   rR  rQ  r   r   r   polygon_remove_vertexa  s   rT  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rU  )r   r   r  r   r   r  r   r  r   ))r   r   rX  rY  r   r   r   r^   rQ  rY   r   r`   on_key_release))r   r   )r  r   rY  r   rZ   r   r   ))r   r   )r   r   )r   r   ra   rQ  )	functoolspartialrP  rS  r   )rU  check_selectorrL  rK  r   r   r   test_polygon_selectorg  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   rK  r   r   )rn   rU   r   rU  r   r  r   r   )rh   rJ  r   r   rS  r
   r   rL  r   r   r   r   )r   rU  ro   rK  rN  rO  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 )Nr   F)rn   rU   )r   r  r   r  )r>   rh   ri   r   r   )r  r  ax_test_ro   r   r   r   test_rect_visibility  s   
rb  rG  )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 )NrW  r   r   r      rV  )rS  insertappendrT  sumrP  )rG  rU  vertsrK  r   r   r   test_polygon_selector_remove  s   





rh  c                 C   sd   g d}g t |d  t |d  t |d  t |d  t|d  }t||dd  d| d d S )NrW  r   r   r   rV  )rS  rT  rP  )rU  rg  rK  r   r   r   (test_polygon_selector_remove_first_point  s   





ri  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 )NrW  r   r   r   rn   rU  )rS  rT  rh   rJ  r   r
   rg  )r   rU  rg  rK  ro   rN  rO  r   r   r   test_polygon_selector_redraw'  s,   






	rk  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))rp  rB  )r   r  )r   r   rj  r   r   r   )r  rh   rJ  r   rg  rS  r
   )r  r  rU  rg  r`  	tool_testax_reftool_refrK  rN  rO  r   r   r   "test_polygon_selector_verts_setter?  s.   



ro  c                 C   s  g d}g t |d  t |d  t |d  t |d  t |d  }tj| tdd}|D ]\}}t||fi | q.| 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))r$   r   )r   r$   )r$   (   )rp  r$   r   r   r   r   Trj  button_press_event)rp  rp  motion_notify_eventr{   button_release_event))rO   r   r   )rO   r$   )r$   rO   rv   r|   )r   r$   r}   r}   rp  rp  r}   )      4@      D@rw  rx  r   )rt  ru  rv  )rw  rx  g      >@rx  )rS  rh   rJ  r   r
   r~   r_  r@   r   r   _processr  testingr   rg  _boxr   )r   rg  rK  ro   rN  rO  tr@   r   r   r   test_polygon_selector_boxW  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)sharexF)rM   r~  r  r   r  rQ  )r   r   )r  r  c                 S      g | ]}|  r|qS r   r   r  rc   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>  r4  )r=   r_  r>   rh   MultiCursorr   vlineshlinesr   r^   r@   rA   r?  r  r~  r  )r~  r  ax1ax3ax2multieventlr   r   r   test_MultiCursor  sJ   












r  )jr[  rB   unittestr   matplotlib._api.deprecationr   matplotlib.backend_basesr   matplotlib.colorscolorsr   r9   rh   matplotlib.pyplotpyplotr=   matplotlib.patchesr   matplotlib.linesr   matplotlib.testing.decoratorsr   r   matplotlib.testing.widgetsr	   r
   r   r   r   numpyr  numpy.testingr   r;   fixturer   rK   markparametrizer   rr   r   r   r   r   r   r   r   r   r   ri   r!  r  r
  r  r#  r-  r5  r:  rB  rC  rD  rF  rJ  rM  rS  rT  rU  r\  rl  backendr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r'  r)  r+  r3  r6  rH  rI  rP  rS  rT  r^  r_  rb  rh  ri  rk  ro  r}  r  r   r   r   r   <module>   s   
'

#
#
I
I?

!
!!









8





$

	

	



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