a
    
d                     @   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   f/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/matplotlib/tests/test_widgets.pyax   s    r   c            
   	   C   sP  ddl m} m} ddlm} | dvr0t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    n1 sB0    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   sH    






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rt|jg dg dg|jd |	  |j
\\}}}|jdksJ |jdksJ |jdksJ |jdksJ |i ksJ d S )NspecZreturn_valuepressd   r   xdataydatar8   onmove   release   Zdrawtype)linenone)      Y@rC   rH   rH   rC   )rC   rH   rH   rC   rC   )err_msg)r   Mockr   widgetsRectangleSelectorr
   getr   geometryassert_called_once	call_argsrE   rF   )r   r6   onselecttoolepressereleaser   r   r   test_rectangle_selectorB   s&    rZ   r=   datazminspanx, x1      %@   zminspany, y1c                 C   s,  t jtd d}d\}}|dkrB| j||f| j||f \}}tj| |d|||d}	t|	||f||fd |	jrxJ |	  t|	ddd |	jsJ |
  |  t|	||f||fd |	jrJ |
  |j\\}
}}|
j|ksJ |
j|ksJ |j|ks
J |j|ksJ |i ks(J d S )	Nr@   r9   r9   r:   T)interactiver=   r;   r<   startendr   r      re   )r   rO   r   	transData	transformrP   rQ   r	   _selection_completedassert_not_calledrT   
reset_mockrU   rE   rF   )r   r=   r;   x1r<   y1rV   Zx0Zy0rW   rX   rY   r6   r   r   r   test_rectangle_minspana   s4    



rm   c                 C   s`   t | dd }| sJ tjtdd d|_W d    n1 sF0    Y  | r\J d S )Nc                  W   s   d S r   r   argsr   r   r   <lambda>       z=test_deprecation_selector_visible_attribute.<locals>.<lambda>z was deprecated in Matplotlib 3.6matchF)rP   rQ   get_visibler,   warnsr   visibler   rW   r   r   r   +test_deprecation_selector_visible_attribute   s    $rx   zdrag_from_anywhere, new_center)<   K   Fre   r   c                 C   sj   t j| td|d}t|ddd |jdks.J t|ddd |j|ksJJ t|d	d
d |jdksfJ d S )NT)rV   r_   drag_from_anywherer   r9   rC   x   r`   )2   A         #   r         r      )      )rP   rQ   r   r	   center)r   r|   Z
new_centerrW   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sPJ |j	ddd | tjdddksxJ |j
D ]$}| dksJ | dks~J q~|jddd |j
D ]$}| dksJ | dksJ qd S )NTb皙?r#   alpha      ?r   )rV   r_   r?   handle_propsr}   r~   r`   r333333?black)markeredgecolorr   )rP   rQ   r   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| 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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srJ |j}|d |d  }}|d |d  }}t|||f||fd |j||d ||d fksJ d S )NTrV   r_   r}   r~   r`   )        rM         $@      ^@r      r9   r   r   r   r   r   r   )rP   rQ   r   r	   extents)r   rW   r   rE   rF   	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 sH0    Y  tt |d W d    n1 s|0    Y  |d |d	 |d
 d S )NTr   F   r   }      r`   unsupported_stateclearmovesquarer   )rP   rQ   r   r	   r,   raises
ValueError	add_staterw   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sJ |j}|d	 |d |d
 |d  d   }}d}|| | }	}
t|||f|	|
f|d |j|d | |	|d |d
 fks2J |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sJ |j}|d |d  }}d\}}|| ||  }	}
t|||f|	|
f|d |j|	|d	 | |
|d
 | fksJ d S )NTr   r   r   r`   )     Q@     @_@     @P@g     @`@r   controlr   r   r9   r   ra   rb   keyr   r   r9   r   r   r   rP   rQ   r   r	   r   r   r   r   rW   Zuse_keyr   rE   rF   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sJ |j}|d	 |d |d
 |d  d   }}d}|| | }	}
t|||f|	|
f|d |j|d |	|d |d
 | fks2J |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sJ |j}|d |d  }}d\}}|| ||  }	}
t|||f|	|
f|d |j|d | |d	 |
|d
 fksJ d S )NTr   r   r   s   r`   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   r`   r   r   r   r   r   r   r   r   r9   r   r   r   r   )rP   rQ   r   r	   r   r   r   )	r   rW   r   rE   rF   r   r   r   r   r   r   r   #test_rectangle_resize_square_center  sj    

&&&&r   selector_classc                 C   sT  || 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spJ t|ddd t|dd	d
 t|jdksJ |jdksJ t|jddd d|_|jdksJ t|j	t
g dg dgdd t|ddd t|jddd |tjkrPtt d|j_W d    n1 sF0    Y  d S )NTr   rC   rC   r      r`   rC   r   rC   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      )rC   r   rC   g
ףp=b@Zunvalid_value)r   r	   r   len_stater
   setr   ZrotationcornersnparrayrP   rQ   r,   r   r   r   Zrotation_point)r   r   rW   r   r   r   test_rectangle_rotate  s2    
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sbJ || t|jdksBJ qBd S )
NTr   r   r   r`   r   r   )r   r   r   r   )	rP   rQ   r   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| td|d}t|ddd |jdks8J |d |d	 |r|j}|d
 |d |d
 |d    }}}d|d |d |d  d   }}|| | }	}
|d | }t|||f|	|
fd t|j|d | |	|| || g nj|j}|d
 |d  }}d}|| | }	}
|d
 |j }t|||f|	|
fd t|j|d | |	ddg d S )N皙?T)rV   r_   r   r   r   r`   r   r   r   r   r   r   r9   r   g      G@g     `@)	Z
set_aspectrP   rQ   r   r	   r   r   r   Z_aspect_ratio_correction)r   r   rW   r   rE   rF   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s4J t|d	dd
d |jdksRJ t|dddd dd |jD }|g dksJ t|d	ddd dd |jD }|g dksJ |jjdksJ t|jdddf ddg dS )z'For ellipse, test out the key modifiersr9   T)rV   
grab_ranger_   rC      rC   r   r   r   )r   r   r`   )r      r   r   r   r   r   )rz   r   rz   r   r^   )r   re   r   c                 S   s   g | ]}t |qS r   int.0er   r   r   
<listcomp>'  rq   z test_ellipse.<locals>.<listcomp>)r9   r   r9   r   r   z
ctrl+shiftc                 S   s   g | ]}t |qS r   r   r   r   r   r   r   ,  rq   )r   r   r   r   )r   I   Nr   r   rC   )rP   EllipseSelectorr   r   r	   rS   shaper   )r   rW   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sTJ t|d
dd |jdkspJ t|ddd |jdksJ t|dd
d |jdksJ t	|j
jd  dsJ t	|j
jd  dsJ d S )Nr9   Tr   r   )Zmarkerfacecolorr   )rV   r   r_   r   r   ))rC   r   r   rC   )rC   rC   r   r   ))rC   r   r   r   )r   rC   r   r   r   )r   r   r`   )r   r   r   r   )   r   )l      r   r   r^   )r9   rC   r9   rC   r   )rP   rQ   r   r   r   r   Zedge_centersr	   r   
same_colorZ_corner_handlesartistsZget_markerfacecolorr   rw   r   r   r   test_rectangle_handles3  s4    r  r_   c                 C   sd   t jtd d}tj| ||d}t|ddd |  |jdksBJ |  t|ddd |  d S )Nr@   r_   rC   r   r   r   r`   rM        b@g     [@r   r9   rC   )	r   rO   r   rP   rQ   r	   rT   r   rj   r   r_   rV   rW   r   r   r    test_rectangle_selector_onselectT  s    r	  ignore_event_outsidec                 C   s   t jtd d}tj| ||d}t|ddd |  |jdksBJ |  t|ddd |rt|	  |jdksJ n|  |jd	ksJ d S )
Nr@   )r
  r  r  r`   r  r   r   r   r   )r        d@r  r  )
r   rO   r   rP   rQ   r	   rT   r   rj   ri   )r   r
  rV   rW   r   r   r   &test_rectangle_selector_ignore_outsidee  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< tj| ||fi |}t|ddddd t|ddddd t|d	d
d
dd |dd |r|dd d S )Nr@   onmove_callbackrB   rC   r   rD   rG   rH   rI   rJ   )r   rO   r   rP   SpanSelectorr
   assert_called_once_with)r   orientationr  r6   rV   rG   rW   r   r   r   test_span_selector|  s    r  c                 C   sf   t jtd d}tj| |d|d}t|ddd |  |jdksDJ |  t|ddd |  d S )	Nr@   r  r  r   )r   rC   r`   )rC   r   r  )	r   rO   r   rP   r  r	   rT   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 |r|	  |	  |jdksJ n|  |  |jd
ksJ d S )Nr@   r  )r  r
  r   r   r`   )rC   r   r  r  )r   r   )
r   rO   r   rP   r  r	   rT   r   rj   ri   )r   r
  rV   rG   rW   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s0J t|dd	d |rR|jd
ks`J n|jdks`J t|ddd |jdks|J d S )Nr  T)rV   	directionr_   r|   r^   r~   r`   r  r   r   )r   r   )r   r   r   r   )rP   r  r   r	   r   )r   r|   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s0J tt  t j| tdd}W d    n1 s`0    Y  d|_|jdks~J |jjdksJ tt d|_W d    n1 s0    Y  d S )Nr  T)rV   r  r_   Zinvalid_direction)rV   r  r  Zinvalid_string)rP   r  r   r  _edge_handlesr,   r   r   rw   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sRJ |j	ddd | tjdddkszJ |j
D ]$}| dksJ | dksJ q|jddd |j
D ]$}| dksJ | dksJ qd S )Nr  Tr   r   r   r   r   )rV   r  r_   r?   r   r}   r~   r`   r   r   r   r   )rP   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}|f i |}t|ddd t|d	d	d |jr`J d|d
< |f i |}|jsJ t|ddd t|d	d	d |jsJ t|ddd |jrJ d S )NT)r   rV   r_   r   r  r  r^   r~   r`   )r   r   r
  r   escaper   )	r   r   rP   r  rQ   r	   rh   r
  r
   )r   r  r6   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| tdd}t|ddd |jsFJ | sRJ |dkrh|jd	kshJ |  |jrzJ | rJ t|dd
d |jsJ | sJ |dkr|jdksJ d S )Nr   r  T)rV   r  r_   r
  r   r^   r~   r`   r  )r   r   )r9   r   )	rP   r  r   rQ   r	   rh   rt   r   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<0    Y  tt |d W d    n1 sp0    Y  tt |d W d    n1 s0    Y  |d d S )Nr  Tr  r   r   r   r   )rP   r  r   r,   r   r   r   rw   r   r   r   test_span_selector_add_state9  s    
(((r%  c                 C   s   g d}t j| |ddd}|jD ]}| r0J | r J q |d |d |jD ]}| shJ | sXJ qX|j|ksJ d S )N)r   re   r   r  F)r7   T)rP   ZToolLineHandlesr   Zget_animatedrt   set_visibleZset_animated	positions)r   r'  Ztool_line_handler   r   r   r   test_tool_line_handleG  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sbJ | |ksrJ | dkr~|n|}|jjt|ksJ dd	g}d
dg}|}	t|||d | |ksJ | |ksJ | dkrdnd}
||
 |	|
 g}|jj|ks
J d S )Nr   r9   r   re   Tr  r  r\   g      '@r]      r`   r   )r-   r.   plotfigurer0   r1   Z
get_xboundZ
get_yboundrP   r  printr  r'  listr	   )r  r4   r   Zx_boundZy_boundrW   bound
press_data	move_datarelease_dataindexhandle_positionsr   r   r   test_span_selector_boundZ  s&    r4  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sJ |jdu sJ  jsJ t  d |   jdu s.J 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   rC   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   r6    s    z:test_span_selector_animated_artists_callback.<locals>.meanr  )r  r  r_   r|   r7   r   rB   rD   rG   FgSG-?   r   gȄC(rI   N)r   linspacepisinr-   r.   r*  pauseZdraw_artistr0   ZblitZbboxrP   r  r
   Z_get_animated_artistsstaler   	get_ydataupdate)r4   r   lnr6  r   r/  r0  r1  r   r;  r   ,test_span_selector_animated_artists_callbackv  sJ    



rG  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   s   d S r   r   rn   r   r   r   rV     s    z4test_snapping_values_span_selector.<locals>.onselectr  )r  r   r   r]   )
gr5  r   r   333333?ffffff??g
ףp=
@      @      @)
r   r   r   r   r   r         ?rK  rK  rK  )rP   r  Z_snapr   r?  r   r   )r   rV   rW   Zsnap_functionsnap_valuesr<  expectr   r   r   "test_snapping_values_span_selector  s    
rP  c                    sl    fdd}t dd }tj |d|d}d|_|jdks@J d |_|jd u sTJ d|_|jdkshJ d S )	Nc                    s
   d _ d S )NT)Z_got_onselect)r8  r9  r   r   r   rV     s    z)test_span_selector_snap.<locals>.onselectr   r>  r  )r  rN  )   r   )r   $   )r   ZarangerP   r  r   rN  )r   rV   rN  rW   r   rQ  r   test_span_selector_snap  s    
rT  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 )Nr@   rB   rC   r   rD   rG   r   rI   r   )r   r   r  )r   rO   r   rP   ZLassoSelectorr
   r  )r   r6   rV   rW   r   r   r   test_lasso_selector  s    rU  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   s   d S r   r   r   r   r   r   rp     rq   z#test_CheckButtons.<locals>.<lambda>)rP   r   Z
get_statusZ
set_activeZ
on_clickedZ
disconnect)r   checkZcidr   r   r   test_CheckButtons  s    
rY  toolbar)rL   Ztoolbar2Ztoolmanagerc                 C   s   t jd| tjtd d}tjtd d}t| d}|| |	| |j
dksXJ t|d |d |j
dkszJ |jdksJ |  |  |jdksJ t|d t|dd	d
 t|ddd
 |jdksJ d S )NrZ  r@    Z_clickzx**2r   r   Z	_keypress+r   5r   )r-   rcParamsZ_setr   rO   r   rP   ZTextBoxZ	on_submitZon_text_changetextr
   set_val
call_countZbegin_typingZstop_typing)r   rZ  Zsubmit_eventZtext_change_eventrW   r   r   r   test_TextBox  s$    




rb  zcheck_radio_buttons.pngZmpl20)styleZremove_textc            
   	   C   s>  t  } | j}|jdd |g d}t|d}tjtdd |j	 W d    n1 s\0    Y  |g d}t
|dd	}tjtd
d |j W d    n1 s0    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)皙?rI  r   333333?)zRadio 1zRadio 2zRadio 3z$The circles attribute was deprecatedrr   )re  r   r   rf  )zCheck 1zCheck 2zCheck 3)FTT'The rectangles attribute was deprecated)re  r   r   rf  )      r   )r   greenblue)r   r   )r    Z	palegreenZ	lightbluer!   r$   )re  r5  r   rf  r   r%   r(   r)   )r   r+  Zsubplots_adjustZadd_axesrP   r   r,   ru   DeprecationWarningZcirclesr   
rectangles)
r   r4   Zrax1Zrb1Zrax2Zcb1Zrax3Zrb3Zrax4Zcb4r   r   r   test_check_radio_buttons_image  sL    $$
ro  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yticksrf  UUUUUU?UUUUUU?	font.sizer   ZC0rL   )rg   srW        ?r   rg   va)	rP   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   rj  rk  r   r#   r"   	linewidthrq  rr  r$   rw        b@)rP   r   r.   set_label_propsZ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>0    Y  t|j dd	gsbJ d S )
Nz"Both the \*activecolor\* parameterrr   rq  rr  r   r#   rj  )activecolorr&   rL   )	r,   ru   UserWarningrP   r   r   r   Z_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 )Nrq  rr  rj  )r  r   )rP   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 )Nrq  rr  Trs  rf  rt  ru  rw  rv  r   rL   )markerrg   rw  rW  r=  krx  r   ry  )	rP   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   rj  rk  r   r  )r#   r  rq  rr  Trl  rw  r  r#   r"   )rP   r   r.   r  Zset_frame_propspopZset_check_props)r  r  r%   r(   r)   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 sD0    Y  |jg g d ddgd}|d |d   fd	d
tD }|D ]} 	| qd S )Nr[  Frg  rr   rs  rt  ru  r   c              
      s6   g | ].\}}t d | d  fdd jdqS )re  r   r   rL   )Zxyr   heightr"   r#   rg   )r   r}  )r   iyr   hwysr   r   r     s   z1test_check_buttons_rectangles.<locals>.<listcomp>)
rP   r   r.   r,   ru   rm  rn  r{  	enumerateZ	add_patch)r  r  r  dyrn  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 sD0    Y  |jD ]}|d qT|j	g g d}ddg}d}|d	 |d	  }}d
d|j
dd}	t|D ]\}
}d||d	   }}t||| g|| |gfi |	}t||| g||| gfi |	}|d |d || || qd S )Nr[  Tz"The lines attribute was deprecatedrr   Frs  rt  ru  r   r  g      ?Zbutt)r   r  rg   Zsolid_capstylere  )rP   r   r.   r,   ru   rm  linesZ_rectanglesr&  r{  r}  r  r   Zadd_line)r  r  r  r!  r   r  r  r  r  Z
lineparamsr  r  r=  l1l2r   r   r   test_check_buttons_lines  s.    $
""


r  c                  C   s   t  \} }tt$ tj|ddddd W d    n1 s@0    Y  tt$ tj|ddddd W d    n1 s~0    Y  d S )Nr[  r         8@r   )r   labelvalminvalmax	slidermin)r   r  r  r  	slidermax)r-   r.   r,   r   r   rP   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sFJ tj|dddd|d	}|j|jkslJ d S )
Nr[  r   r  rK  r   r  r  r  valinitrM  )r   r  r  r  r  r  r   )r   r  r  r  r  r  r-   r.   rP   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s0J tj|ddddd}|j|jksTJ d S )Nr[  r   r  g      $r  g      9@)r-   r.   rP   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s0J tj|ddddg dd}|jd	ksXJ d S )
Nr[  r   r  g&@r   )r   r  r  r  r  Zvalstepr]   )r   r   rL  g333333@rL  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sJ |j |j	
 }t|jg d
 d S )Nr[  r   r  ri  r  )r   r  r  r  r  r  r9   )r   rx  竪?r   r  )rx  r   r   r  )r-   r.   rP   r  r`  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 )Nr[  r   r   r   r        ?)r-   r.   rP   r  r`  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   r[  r   rM  r5  (\?r   r  r  r  r  r  )r5  rx  r  r  )r5  r  c                    s,    dkrdd | j D S dd | j D S d S )Nr  c                 S   s   g | ]}|  d  qS r   )rD  r   r  r   r   r   r     rq   z?test_range_slider.<locals>.handle_positions.<locals>.<listcomp>c                 S   s   g | ]}|  d  qS r  )	get_xdatar  r   r   r   r     rq   )Z_handles)r  r  r   r   r3    s    z+test_range_slider.<locals>.handle_positions)皙?rH  )r  rx  rH  r  )r   r5  )r5  r   )r9   r   )r-   r.   rP   RangeSliderr  r  r  r}  r  r   
get_pointsflattenr  r`  r  )r  idxr4   r   r  r  r3  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  r[  r   rM  r   r  )r   rx  r   r  )r-   r.   rP   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sVJ |j|fi fksjJ 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@   )	r   r   rO   r   rP   PolygonSelectorr
   ra  rU   )	event_sequenceexpected_resultZselections_countr6   r   rV   rW   etype
event_argsr   r   r   check_polygon_selector9  s    r  c                 C   s.   dt | |dfdt | |dfdt | |dfgS )NrG   rE   rF   rB   rI   r   r  r   r   r   polygon_place_vertex[  s    r  c                 C   s2   dt | |dfdt | |ddfdt | |ddfgS )NrG   r  rB   r   rD   rI   r  r  r   r   r   polygon_remove_vertexa  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   ))rz   r   r  r  r   r   r   rG   r  rB   rz   rI   Zon_key_release))r   rz   )r   rz   r  r   rC   r   r   ))rz   rz   )r   rz   )rz   r   rJ   r"  )	functoolspartialr  r  r   )r  Zcheck_selectorr  r  r   r   r   test_polygon_selectorg  s    	
	

	

r  c                 C   s2  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 | qR|j}| dksJ | dksJ |j	d	d
d | d	ksJ | d
ksJ |j
D ]$}| dksJ | dksJ q|jd	d
d |j
D ]*}| d	ksJ | d
ksJ qd S )Nr   r   r  r   r   )rV   r?   r   r  r   r   r   r   )rP   r  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|tddid}d|_d S )Nrv   F)rV   r?   )r   r   r   rI  )r.   rP   rQ   r   r   )r  r  ax_test_rW   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 | qt|j|dd ksJ d S )Nr  r   r   r   rV   r  )r  r  rP   r  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|t|d}||_|j|ks4J |  }tj|t|d}g t|d  t|d  t|d  t|d  }|D ]\}	}
t||	fi |
 qd S )N))r5  r  )r   rJ  )r   r   r  r   r   r   )r{  rP   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_setter?  s,    



r  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   (   )r  r   r   r   r   r   Tr  Zbutton_press_event)r  r  Zmotion_notify_eventrc   Zbutton_release_event))r9   r   r}   )r9   r   )r   r9   r^   rd   )r{   r   re   re   r  r  re   )      4@      D@r  r  r{   )r  r  r  )r  r  g      >@r  )r  rP   r  r   r
   rf   r+  r0   r   rg   Z_processr   Ztestingr   r  Z_boxr   )r   r  r  rW   r  r  tr0   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sLJ t|jdks^J t|ddd}|	| |jj
  |jD ]}| d	ksJ q|jD ]}| d
ksJ qtdd |jD |rdndksJ tdd |jD | rdndksJ |j |_|j |_t|ddd}|	| tdd |jD |rLdndksXJ tdd |jD | rtd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   rx  r  )r   r   )rx  rx  c                 S   s   g | ]}|  r|qS r   rt   r   rK   r   r   r   r     rq   z$test_MultiCursor.<locals>.<listcomp>r   c                 S   s   g | ]}|  r|qS r   r  r  r   r   r   r     rq   c                 S   s   g | ]}|  r|qS r   r  r  r   r   r   r     rq   c                 S   s   g | ]}|  r|qS r   r  r  r   r   r   r     rq   r  )r-   r+  r.   rP   ZMultiCursorr   ZvlinesZhlinesr   rG   r0   r1   r  rD  r  r  )r  r  Zax1Zax3Zax2Zmultieventlr   r   r   test_MultiCursor  sH    













r  )jr  r2   Zunittestr   Zmatplotlib._api.deprecationr   Zmatplotlib.backend_basesr   Zmatplotlib.colorscolorsr   r+   rP   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   rZ   rm   rx   r   r   r   r   r   r   r   rQ   r   r   r   r   r   r  r	  r  r  r  r  r  r  r  r#  r$  r%  r(  r4  backendrG  rP  rT  rU  rY  rb  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
 



7