o
    j                    @   s  d dl Z 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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$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+d, Z)ej !d*dd gd-d. Z*d/d0 Z+ej !d1ej,ej-gd2d3 Z.d4d5 Z/ej !d6d dgd7d8 Z0d9d: Z1d;d< Z2ej !d=dd gd>d? Z3ej !d@dd gdAdB Z4ej !dCdDd e"dddEfdFde"ddGfdDd e"e"dddfdDd e"ddHfgdIdJ Z5ej !d=dd gdKdL Z6ej !d@dd gdMdN Z7ej !dOdd gdPdQ Z8dRdS Z9dTdU Z:ej !dVdWdXgdYdZ Z;ej !dVdWdXgd[d\ Z<d]d^ Z=d_d` Z>ej !dadbdcdd Z?ej j@deddfdgdh ZAdidj ZBdkdl ZCdmdn ZDej !de" e"d e"dodpdqe"dddgdrds ZEdtdu ZFdvdw ZGdxdy ZHej !dzg d{d|d} ZId~d ZJedgddddd ZKedgddd ZLedgddd ZMdd ZNedgddd ZOedgddd ZPedgddd ZQdd ZRdd ZSdd ZTdd ZUdd ZVdd ZWej !ddDdFgdd ZXej !ddDdFgdd ZYdd ZZdd Z[dd Z\ej !dd dgdd Z]ej !dd dgdd Z^edgddd Z_ej !dg dej !dd dgdd Z`ej !dd dgdd Zaej !dd dgdd Zbej !dd dgedgddd Zcdd Zddd Zeej !dd dgej !dd dgdd ZfdS )    N)mock)
MouseEvent)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   ^/var/www/html/Deteccion_Ine/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)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   






"r3   kwargsTr   )useblitbutton
   pixels)minspanxminspany
spancoords)fillpropsc                 C   s   t jtd d}tj| fd|i|}t|ddddd t|ddddd t|d	d
d
dd |dd dvrDt|jg dg dg|jd |	  |j
\\}}}|jdksVJ |jdks]J |jdksdJ |jdkskJ |i ksqJ d S )Nspecreturn_valueonselectpressd   r   xdataydatar6   onmove   release   Zdrawtype)linenone)      Y@rD   rI   rI   rD   )rD   rI   rI   rD   rD   )err_msg)r   Mockr
   widgetsRectangleSelectorr   getr   geometryassert_called_once	call_argsrF   rG   )r   r4   rB   toolepressereleaser   r   r   test_rectangle_selector@   s&   rZ   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 )	Nr?   r7   r7   r8   T)rB   interactiver;   r9   r:   startendr   r      re   )r   rP   r
   	transData	transformrQ   rR   r   _selection_completedassert_not_calledrU   
reset_mockrV   rF   rG   )r   r;   r9   x1r:   y1rB   Zx0Zy0rW   rX   rY   r4   r   r   r   test_rectangle_minspan_   s4   



rm   zdrag_from_anywhere, new_center)<   K   Fre   r   c                 C   sh   t j| 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s2J d S )NT)r_   drag_from_anywherer   r7   rD   x   r`   )2   A         #   rx         r~      )      )rQ   rR   r   center)r   rq   Z
new_centerrW   r   r   r   test_rectangle_drag   s   r   c                 C   s   t j| 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sHJ | dksPJ q>|jddd |j	D ]}|
 dkseJ | dksmJ q[d S )NTb皙?r!   alpha      ?r   )r_   r>   handle_propsrr   rs   r`   r333333?black)markeredgecolorr   )rQ   rR   dictr   _selection_artistget_facecolormcolorsto_rgba	set_props_handles_artistsget_markeredgecolor	get_alphaset_handle_propsr   rW   artistr   r   r   .test_rectangle_selector_set_props_handle_props   s"   


r   c                 C   s  t j| 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sDJ |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r_   rr   rs   r`   )        rN         $@      ^@r      r7   r   r   r   ry   r   rx   )rQ   rR   r   extents)r   rW   r   rF   rG   	xdata_new	ydata_newr   r   r   test_rectangle_resize   s.   &"&""r   c                 C   s   t j| 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   rv   }      r`   unsupported_stateclearmovesquarer   )rQ   rR   r   r*   raises
ValueError	add_stater   rW   r   r   r   test_rectangle_add_state   s   

r   r   c                 C   s  t j| 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sYJ |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sSJ |j}|d |d }}d\}}|| || }	}
t|||f|	|
f|d |j|	|d	 | |
|d
 | fksJ d S )NTr   r   r   r`   )     Q@     @_@     @P@g     @`@r   controlr   r   r7   r   ra   rb   keyr   r   r7   ry   r   rx   rQ   rR   r   r   r   r   r   rW   Zuse_keyr   rF   rG   xdiffydiffr   r   r   r   r   test_rectangle_resize_center   s   

&
&
&&r   c                 C   s  t j| 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sYJ |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sSJ |j}|d |d }}d\}}|| || }	}
t|||f|	|
f|d |j|d | |d	 |
|d
 fksJ d S )NTr   r   rt   s   r`   r   r   r   g     \@r   shiftr   r   r   r   r   r   r7   r   ry   r   r   r   r   r   r   r   test_rectangle_resize_square.  s   

&
&
&&r   c           	      C   s(  t j| 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   r`   r   r   r   r   r   r   r   r   r7   r   r   r   r   )rQ   rR   r   r   r   r   )	r   rW   r   rF   rG   r   r   r   r   r   r   r   #test_rectangle_resize_square_centerx  sj   

&&&&
r   selector_classc                 C   sP  || 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s5J t |ddd t|dd	d
 t|jdksLJ |jdksSJ t|jddd d|_|jdkseJ 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   rD   rD   r      r`   rD   r   rD   r   r   on_key_pressr   r   rotater   )rt      g(\9@g{Gz?)Zatol-   )gR]@     xa@g=
ףp[@g     V@)g     W@g=
ףp]@g     b@g(\^@)n   r   )r      )rD   r   rD   g
ףp=b@Zunvalid_value)r   r   len_stater   r   ZrotationcornersnparrayrQ   rR   r*   r   r   r   Zrotation_point)r   r   rW   r   r   r   test_rectangle_rotate  s6   


"r   c                 C   s   t j| dd}t|ddd |jdksJ t|jdksJ dD ]}|| t|jd	ks0J || t|jdks>J q d S )
NTr   r   r   r`   r   r   )r   r   r   r   )rQ   rR   r   r   r   r   r   Zremove_state)r   rW   stater   r   r   test_rectangle_add_remove_set  s   

r   use_data_coordinatesc                 C   s`  |  d tj| d|d}t|ddd |jdksJ |d |d	 |ry|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)r_   r   r   r   r`   r   r   r   r   r   r   r7   r   g      G@g     `@)
set_aspectrQ   rR   r   r   r   r   Z_aspect_ratio_correction)r   r   rW   r   rF   rG   widthr   Zycenterr   r   Zychanger   r   r   *test_rectangle_resize_square_center_aspect  s6   


$"

r   c                 C   s   t j| 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s@J t|d	ddd dd |jD }|g dksXJ |jjdks`J t|jdddf ddg dS )z'For ellipse, test out the key modifiersr7   T)
grab_ranger_   rD      rD   r   r   r   )r   r   r`   )rt      rt   r   r   r   r   )ro   r   ro   r   r^   )r{   re   r   c                 S      g | ]}t |qS r   int.0er   r   r   
<listcomp>      z test_ellipse.<locals>.<listcomp>)r7   r{   r7   r{   r   z
ctrl+shiftc                 S   r   r   r   r   r   r   r   r     r   )r   r   r   r   )r   I   Nr   r   rD   )rQ   EllipseSelectorr   r   rT   shaper   )r   rW   r   r   r   r   test_ellipse	  s    r   c                 C   s   t j| 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s7J t|ddd |jdksEJ t|dd
d |jdksSJ t|j	j
d  dsaJ t|j	j
d  dsoJ d S )Nr7   Tr   r   )Zmarkerfacecolorr   )r   r_   r   r   ))rD   r   r   rD   )rD   rD   r   r   ))rD   r   r   r   )r   rD   r   r   r   )rt   rt   r`   )rt   r   rt   r   )   r   )l      r   r   r^   )r7   rD   r7   rD   r   )rQ   rR   r   r   r   Zedge_centersr   r   
same_colorZ_corner_handlesartistsZget_markerfacecolorr   r   r   r   r   test_rectangle_handles$  s0   
r   r_   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 )Nr?   )rB   r_   rD   r   r   rt   r`   rN        b@g     [@r   r7   rD   )	r   rP   r
   rQ   rR   r   rU   r   rj   r   r_   rB   rW   r   r   r    test_rectangle_selector_onselectC  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 )
Nr?   )rB   r  r   r   r`   r   r   r   r   r   )r         d@r   r  )
r   rP   r
   rQ   rR   r   rU   r   rj   ri   )r   r  rB   rW   r   r   r   &test_rectangle_selector_ignore_outsideT  s   r  z$orientation, onmove_callback, kwargs
horizontal)Zminspanr5   vertical)r6   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 )Nr?   onmove_callbackautorC   rD   r   rE   rH   rI   rJ   rK   )	r   rP   r
   r   ZtwinxrQ   SpanSelectorr   assert_called_once_with)r   orientationr  r4   rB   rH   ZtaxrW   r   r   r   test_span_selectork  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 )	Nr?   r  r   r   )r   rD   r`   )rD   r   r   )	r   rP   r
   rQ   r
  r   rU   r   rj   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 )Nr?   r  )r  r  r   r   r`   )rD   r   r  r  )r   r   )
r   rP   r
   rQ   r
  r   rU   r   rj   ri   )r   r  rB   rH   rW   r   r   r   !test_span_selector_ignore_outside  s(   
r  rq   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)rB   	directionr_   rq   r^   rs   r`   r   rw   rz   )r   r   )rx   r{   r|   r   )rQ   r
  r
   r   r   )r   rq   rW   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)rB   r  r_   Zinvalid_direction)rB   r  r  Zinvalid_string)rQ   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   )rB   r  r_   r>   r   rr   rs   r`   r   r   r   r   )rQ   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spanZ	rectanglec                 C   s   t | dd}|dkrtj}d|d< t|d< ntj}|di |}t|ddd	 t|d
d
d	 |jr3J d|d< |di |}|jsCJ t|ddd	 t|d
d
d	 |jsVJ t|ddd |jrbJ d S )NT)r   r_   r  r  r  rB   r^   rs   r`   )r   r   r  r   escaper   r   )	r   rQ   r
  r
   rR   r   rh   r  r   )r   r  r4   ZSelectorrW   r   r   r   test_selector_clear  s$   



r  c                 C   s   |dkrt j| tdddd}nt j| dd}t|ddd |js"J | s(J |dkr3|jd	ks3J |  |jr<J | rBJ t|dd
d |jsNJ | sTJ |dkr_|jdksaJ d S d S )Nr  r  T)rB   r  r_   r  r   r^   rs   r`   r   )ru   rt   )r7   ru   )	rQ   r
  r
   rR   r   rh   get_visibler   r   )r   r  rW   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   )rQ   r
  r
   r*   r   r   r   r   r   r   r   test_span_selector_add_state0  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   re   ru   r  F)r5   T)rQ   ZToolLineHandlesr   Zget_animatedr  Zset_visibleZset_animated	positions)r   r  Ztool_line_handler   r   r   r   test_tool_line_handle>  s   




r  r  )r  r  c                 C   s  t dd\}}|ddgddg |j  | }| }tj|t	| dd}| |ks0J | |ks8J | dkr>|n|}|j
jt|ksJJ d}d	}|}	t|||d
 | |ks_J | |ksgJ | dkrmdnd}
||
 |	|
 g}|j
j|ksJ d S )Nr   r7   r   re   Tr   r  )r\   g      '@)r]      r`   r   )r+   r,   plotr.   r/   Z
get_xboundZ
get_yboundrQ   r
  printr  r  listr   )r  r2   r   Zx_boundZy_boundrW   bound
press_data	move_datarelease_dataindexhandle_positionsr   r   r   test_span_selector_boundQ  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   rD   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  r_   rq   r5   r   rC   rE   rH   FgSG-?   r   gȄC(rJ   N)r   linspacepisinr+   r,   r!  pauseZdraw_artistr.   ZblitZbboxrQ   r
  r   Z_get_animated_artistsstaler   	get_ydataupdate)r2   r   lnr,  r  r%  r&  r'  r   r1  r   ,test_span_selector_animated_artists_callbackm  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      d S r   r   )argsr   r   r   rB     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         ?rC  rC  rC  )rQ   r
  Z_snapr   r5  r   r   )r   rB   rW   Zsnap_functionsnap_valuesr2  expectr   r   r   "test_snapping_values_span_selector  s   
rH  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   rB     s   
z)test_span_selector_snap.<locals>.onselectru   r4  r  )r  rF  )   r{   )r   $   )r   ZarangerQ   r
  r   rF  )r   rB   rF  rW   r   rI  r   test_span_selector_snap  s   
rL  c                 C   s\   t j| dd ddd}d|_|jdksJ |jsJ d}d}t|||d	 |jdks,J d S )
Nc                 S   r>  r   r   )ar   r   r   r   <lambda>      z,test_span_selector_extents.<locals>.<lambda>r  T)r  )r   r7   )      )r   rQ  r`   )rQ   r
  r   rh   r   )r   rW   r%  r'  r   r   r   test_span_selector_extents  s   
rR  r   )r   )r5   r>   c                 C   sl   t jtd d}tj| fd|i|}t|ddddd t|ddddd t|d	d
d
dd |g d d S )Nr?   rB   rC   rD   r   rE   rH   r   rJ   r   )r   r   r  )r   rP   r
   rQ   LassoSelectorr   r  )r   r4   rB   rW   r   r   r   test_lasso_selector  s   rT  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 )Nr?   r   r   r  )rB   r>   r   r   )r   rP   r
   rQ   rS  r   r   r   r   r  r   r   )r   rB   rW   r   r   r   r   test_lasso_selector_set_props  s   
rU  c              
   C   s   t jtd d}t| d|}|j}t| dsJ |	 dks#J |
 dks+J tj| d|tddddd	d
}|j}t| dsGJ | dksOJ |
 dksWJ |	 dks_J |d |d t| dssJ | dks{J d S )Nr?   r   r   -r   Zdarkbluer   r   )Z	linestyler   r   Zlwr=   r   r   )r   rP   r
   rQ   LassorL   r   r   r  Zget_linestyleZget_lwr   r   Z	set_colorZ	set_alpha)r   rB   rW   rL   r   r   r   test_lasso_set_props  s$   


rX  c              	   C   s2  d}t | |d}| g dksJ |d | g dks"J | dgks+J |  | g dks9J | g ksAJ dt|t|d fD ]}tt	 |j|d	 W d    n1 sdw   Y  qLd
D ]}tt
 |jd|d W d    n1 sw   Y  ql|dd }|| d S )N)rM  r   c)TFTr   )FFTrY  )FFFr   )r(  )invalidrZ  r   )r   c                   S   r>  r   r   r   r   r   r   rN    rO  z#test_CheckButtons.<locals>.<lambda>)rQ   r   Z
get_status
set_activeZget_checked_labelsr   r   r*   r   r   	TypeErrorZ
on_clickedZ
disconnect)r   labelscheckZinvalid_indexZinvalid_valueZcidr   r   r   test_CheckButtons	  s*   
r`  toolbar)rM   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 )Nra  r?    Z_clickzx**2r   r   r   rF   rG   Z	_keypress+r   5r   )r+   rcParamsZ_setr   rP   r
   rQ   ZTextBoxZ	on_submitZon_text_changetextr   set_val
call_countZbegin_typingZstop_typing)r   ra  Zsubmit_eventZtext_change_eventrW   r   r   r   test_TextBox   s$   



rj  c                 C   sZ   t | d}|d |jdksJ |jdksJ |  |jdks$J |jdks+J d S )NRadio 1Radio 2zRadio 3r   rm  rl  r   )rQ   r   r\  Zvalue_selectedZindex_selectedr   )r   radior   r   r   test_RadioButtons@  s   
ro  zcheck_radio_buttons.pngZmpl20)styleZremove_textc            
   	   C   s   t  } | jdd}|jdd |d}t|d}|d}t|dd	}|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 )NFrootr   )left)皙?rA  r   333333?rk  )rt  r   r   ru  )zCheck 1zCheck 2zCheck 3)FTT)rt  r   r   ru  )   rP  r   )r   greenblue)r   r   )r   Z	palegreenZ	lightbluer   r"   )rt  r+  r   ru  r   r#   r&   r'   )r   
get_figureZsubplots_adjustZadd_axesrQ   r   r   )
r   r2   Zrax1Zrb1Zrax2Zcb1Zrax3Zrb3Zrax4Zcb4r   r   r   test_check_radio_buttons_imageJ  s<   





r{  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yticksru  UUUUUU?UUUUUU?	font.sizer   ZC0rM   )rg   srY        ?r   rg   va)	rQ   r   r,   add_subplotscatter	transAxesr+   rf  rg  fig_testfig_refr   r   r   r   test_radio_buttonsi  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   rw  rx  r   r!   r    	linewidthr}  r~  r"   r        b@)rQ   r   r,   set_label_propsZset_radio_props)r  r  r#   r$   cbr   r   r   test_radio_buttons_propss  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\* parameter)matchr}  r~  r   r!   rw  )activecolorr$   rM   )	r*   ZwarnsUserWarningrQ   r   r   r   Z_buttonsr   )r   rbr   r   r   !test_radio_button_active_conflict  s   r  c                 C   s:   t j| ddgdd t j|  ddgdd}d|_d S )Nr}  r~  rw  )r  r   )rQ   r   r,   r  )r  r  r  r   r   r   %test_radio_buttons_activecolor_change  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  ru  r  r  r  r  r   rM   )markerrg   r  rY  r3  kr  r   r  )	rQ   r   r,   r  r  r  r+   rf  rg  r  r   r   r   test_check_buttons  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   rw  rx  r   r  )r!   r  r}  r~  Try  r  r  r!   r    )rQ   r   r,   r  Zset_frame_propspopZset_check_props)r  r  r#   r&   r'   r  r   r   r   test_check_button_props  s   

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 )Nrb  r         8@r   )r   labelvalminvalmax	slidermin)r   r  r  r  	slidermax)r+   r,   r*   r   r   rQ   Slider)r2   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 )
Nrb  r   r  rC  r   r  r  r  valinitrE  )r   r  r  r  r  r  r   )r   r  r  r  r  r  r+   r,   rQ   r  val)r2   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 )Nrb  r   r  g      $r  g      9@)r+   r,   rQ   r  r  r  r  r2   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 )
Nrb  r   r  g&@r   )r   r  r  r  r  Zvalstepr]   )r   r   rD  g333333@rD  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 )Nrb  r   r  rP  r  )r   r  r  r  r  r  r7   )r   r  竪?r   r  )r  r   r   r  )r+   r,   rQ   r  rh  r  polyget_extentstransformedr  invertedr   Zbounds)r2   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 )Nrb  r   r   r   r        ?)r+   r,   rQ   r  rh  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   rb  r   rE  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   )r:  r   hr   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)皙?r@  )r  r  r@  r  )r   r+  )r+  r   )rZ  r7   r   )r+   r,   rQ   RangeSliderr  r  r  r  r  r   
get_pointsflattenr  rh  r  )r  idxr2   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  rb  r   rE  r   r  )r   r  r   r  )r+   r,   rQ   r  r  r  r  r  r  r   r  r  )r  r  r2   r   r  r  r   r   r   "test_range_slider_same_init_values1  s   

r  c           	      K   sp   t  }tjtdd}tj|fd|i|}| D ]\}}t||fi | q|j|ks,J |j|fi fks6J 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.
    Nr?   rB   )	r   r   rP   r
   rQ   PolygonSelectorr   ri  rV   )	event_sequenceexpected_resultZselections_countr4   r   rB   rW   etype
event_argsr   r   r   check_polygon_selectorB  s   r  c                 C   s.   dt | |dfdt | |dfdt | |dfgS )NrH   rc  rC   rJ   r   rc  r   r   r   polygon_place_vertexd  s   r  c                 C   s2   dt | |dfdt | |ddfdt | |ddfgS )NrH   rc  rC   r   rE   rJ   r  rc  r   r   r   polygon_remove_vertexj  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  ru   ru   r   ru   ru   r   ru   r   r   ))ro   ru   r  r  r   r   r   rH   rc  rC   ro   rJ   Zon_key_release))ru   ro   )r   ro   r  r   rD   r   r   ))ro   ro   )r}   ro   )ro   r}   rK   r  )	functoolspartialr  r  r   )r  Zcheck_selectorr  r  r   r   r   test_polygon_selectorp  s   	
	

	

r  c                 C   s*  t j| 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sAJ | dksIJ |jd	d
d | d	ksXJ | d
ks`J |j	D ]}| dksmJ | dksuJ qc|j
d	d
d |j	D ]}| d	ksJ | d
ksJ qd S )Nr   r   r  r   r   )r>   r   r  ru   r   r   r   )rQ   r  r   r  r   r   r  r   r   r   r   )r   r  rW   r  r  r  r   r   r   r   ,test_polygon_selector_set_props_handle_props  s<   


r  c                 C   s,   |   }|  }tj|ddid}d|_d S )NvisibleFr=   )r   r   r   rA  )r,   rQ   rR   r   )r  r  ax_test_rW   r   r   r   test_rect_visibility  s   
r  r  )r   r   r   c                 C   sz   g d}t |d  t |d  t |d  t |d  g}|| t dd |tdd ttj|g }t||d|d d S )Nr  r   r   r      r  )	r  insertappendr  r  reduceoperatoriaddr  )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| |d}|D ]\}}t||fi | q9|j|dd ksRJ d S r  )r  r  rQ   r  r   r  )r   r  r  r  rW   r  r  r   r   r   test_polygon_selector_redraw/  s(   






	r  c                 C   s   g d}|   }tj||d}||_|j|ksJ |  }tj||d}g t|d  t|d  t|d  t|d  }|D ]\}	}
t||	fi |
 q@d S )N))r+  r  )r   rB  )r   r   r  r   r   r   )r  rQ   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_setterF  s&   



r  c                 C   s  | j ddd g d}g t|d  t|d  t|d  t|d  t|d  }tj| dd	}|D ]\}}t||fi | q4| j}| jdd
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)iru   )ZxlimZylim))r   r   )r   r   )r   (   )r  r   r   r   r   r   Tr  rq  Zbutton_press_event)r  r  Zmotion_notify_eventrc   Zbutton_release_event))r7   r   rr   )r7   r   )r   r7   r^   rd   )rp   r   re   re   r  r  re   )      4@      D@r  r  rp   )r  r  r  )r  r  g      >@r  )setr  rQ   r  r   rf   rz  r.   r   rg   Z_processr   testingr   r  _boxr   )r   r  r  rW   r  r  tr.   r   r   r   test_polygon_selector_box\  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 )Nr?   )r  r  r  r  )r  )rD   ru   r  r  rZ  r   )r   rP   r
   rQ   r  r  r   r   rh   r  r   r  Zassert_equalZ
get_xydatarV   r   )	r   rB   rW   resultr3  yr  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s1J t|ddd}|	| |j
  |jD ]
}| d	ksOJ qE|jD ]
}| d
ks]J qStdd |jD |rkdndkspJ 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)r5   r  r  r   r  rc  )r   r   )r  r  c                 S      g | ]}|  r|qS r   r  r   rL   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+   Zfigurer,   rQ   ZMultiCursorr   ZvlinesZhlinesr	   rH   r.   r/   r  r:  r  r  )	r  r  r2   Zax1Zax3Zax2multieventlr   r   r   test_MultiCursor  sL   













r  )gr  r0   r  Zunittestr   Zmatplotlib.backend_basesr   Zmatplotlib.colorscolorsr   r)   rQ   Zmatplotlib.pyplotZpyplotr+   Zmatplotlib.testing.decoratorsr   r   Zmatplotlib.testing.widgetsr   r   r   r	   r
   numpyr   Znumpy.testingr   r*   Zfixturer   r3   markZparametrizer   rZ   rm   r   r   r   r   r   r   r   rR   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r  r  r  r*  backendr=  rH  rL  rR  rT  rU  rX  r`  rj  ro  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