U
    d»{jCà  ã                   @   s¶  d dl mZ d dlZd dlmZ d dlmZ d dlmZ d dl	m
Z d dlmZ d dlmZ d dlmZmZ d dlmZmZmZmZmZ d dlZd dlmZ d dlZejd	d
„ ƒZ ej! "de#ƒ dfe#ddd�dfe#ddd�dfe#dddd�dfe#dddd�dfe#e#dd�d�df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)d0d1„ Z*ej! "d2ddg¡d3d4„ ƒZ+ej! "d2ddg¡d5d6„ ƒZ,d7d8„ Z-ej! "d9ej.ej/g¡d:d;„ ƒZ0d<d=„ Z1ej! "d>ddg¡d?d@„ ƒZ2dAdB„ Z3dCdD„ Z4ej! "dEddg¡dFdG„ ƒZ5ej! "dHddg¡dIdJ„ ƒZ6ej! "dKdLde#dddM�fdNde#ddO�fdLde#e#dd�d�fdLde#ddP�fg¡dQdR„ ƒZ7ej! "dEddg¡dSdT„ ƒZ8ej! "dHddg¡dUdV„ ƒZ9ej! "dWddg¡dXdY„ ƒZ:dZd[„ Z;d\d]„ Z<ej! "d^d_d`g¡dadb„ ƒZ=ej! "d^d_d`g¡dcdd„ ƒZ>dedf„ Z?dgdh„ Z@ej! "didj¡dkdl„ ƒZAej!jBdmddn�dodp„ ƒZCdqdr„ ZDdsdt„ ZEej! "due#ƒ e#de#dvdw�dx�e#ddd�g¡dydz„ ƒZFd{d|„ ZGej! "d}dd~dg¡d€d�„ ƒZHed‚gdƒdd„�d…d†„ ƒZIed‡gdƒdd„�dˆd‰„ ƒZJdŠd‹„ ZKdŒd�„ ZLdŽd�„ ZMd�d‘„ ZNd’d“„ ZOd”d•„ ZPej! "d–dLdNg¡d—d˜„ ƒZQej! "d–dLdNg¡d™dš„ ƒZRd›dœ„ ZSd�dž„ ZTdŸd „ ZUej! "d¡ddg¡d¢d£„ ƒZVej! "d¡ddg¡d¤d¥„ ƒZWeƒ d¦d§„ ƒZXej! "d¨dd©dªg¡ej! "d¡ddg¡d«d¬„ ƒƒZYej! "d¡ddg¡d­d®„ ƒZZej! "d¡ddg¡d¯d°„ ƒZ[ej! "d¡ddg¡ed±gd²�d³d´„ ƒƒZ\dµd¶„ Z]ej! "d·ddg¡ej! "d¸ddg¡d¹dº„ ƒƒZ^dS )»é    )ÚnullcontextN)Úmock)ÚMatplotlibDeprecationWarning)Ú
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/bwave/python/venv/lib/python3.8/site-packages/matplotlib/tests/test_widgets.pyÚax   s    r   zkwargs, warning_msgÚlineF)ÚdrawtypeÚuseblitz)Support for drawtype='line' is deprecatedTé   )r   ÚbuttonÚnoneé
   )r   ÚminspanxÚminspanyz)Support for drawtype='none' is deprecatedÚpixels)r   r   Ú
spancoords)Úfill)Úpropsc              	   C   s  t jtd d�}|r tjt|d�ntƒ � tj| |f|Ž}W 5 Q R X t	|ddddd� t	|ddddd� t	|d	d
d
dd� | 
dd ¡dkr²t|jdddddgdddddgg|jd� | ¡  |j\\}}}|jdksÖt‚|jdksät‚|jdksòt‚|jdk�st‚|i k�st‚d S )N©ÚspecZreturn_value©ÚmatchÚpresséd   r   ©ÚxdataÚydatar   ÚonmoveéÇ   Úreleaseéú   r   )r   r   ç      Y@)Úerr_msg)r   ÚMockr   ÚpytestÚwarnsr   r   ÚwidgetsÚRectangleSelectorr	   Úgetr   ÚgeometryÚassert_called_onceÚ	call_argsr&   ÚAssertionErrorr'   )r   ÚkwargsZwarning_msgÚonselectÚtoolÚepressÚereleaser   r   r   Útest_rectangle_selector   s.    ÿÿÿýr=   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rxt	‚| 
¡  t|	ddd� |	js˜t	‚| ¡  | ¡  t|	||f||fd� |	jrÈt	‚| ¡  |j\\}
}}|
j|ksìt	‚|
j|ksút	‚|j|k�s
t	‚|j|k�st	‚|i k�s(t	‚d S )	Nr   ©r   r   r   T)Úinteractiver   r   r   ©ÚstartÚend©é   rG   ©é   rI   )r   r.   r   Ú	transDataÚ	transformr1   r2   r   Ú_selection_completedr7   Úassert_not_calledr5   Ú
reset_mockr6   r&   r'   )r   r   r   Úx1r   Úy1r9   Zx0Zy0r:   r;   r<   r8   r   r   r   Útest_rectangle_minspan>   s6    ÿ
 þ


rQ   c              	   C   sL   t  | dd„ ¡}| ¡ st‚tjtdd�� d|_W 5 Q R X | ¡ rHt‚d S )Nc                  W   s   d S r   r   ©Úargsr   r   r   Ú<lambda>e   ó    z=test_deprecation_selector_visible_attribute.<locals>.<lambda>z was deprecated in Matplotlib 3.6r!   F)r1   r2   Úget_visibler7   r/   r0   r   Úvisible©r   r:   r   r   r   Ú+test_deprecation_selector_visible_attributed   s    þrY   zdrag_from_anywhere, new_center)é<   éK   ©rI   rG   c                 C   sj   t j| td|d�}t|ddd� |jdks.t‚t|ddd� |j|ksJt‚t|d	d
d� |jdksft‚d S )NT)r9   rB   Údrag_from_anywhere©r   r   ©r$   éx   rC   )é2   éA   ©é   é   ©é#   rd   ©é¯   é¹   ©rj   éÃ   )é´   é¾   )r1   r2   r   r   Úcenterr7   )r   r]   Z
new_centerr:   r   r   r   Útest_rectangle_dragp   s    
ÿrp   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sPt	‚|j
ddd� | ¡ tjddd�ksxt	‚|jD ]$}| ¡ dks’t	‚| ¡ dks~t	‚q~|jddd� |jD ]$}| ¡ dksÌt	‚| ¡ dks¸t	‚q¸d S )NTÚbçš™™™™™É?©Z	facecolorÚalphaç      à?©rt   )r9   rB   r   Úhandle_propsr^   r_   rC   Úrç333333Ó?Úblack)Úmarkeredgecolorrt   )r1   r2   r   Údictr   Ú_selection_artistÚget_facecolorÚmcolorsÚto_rgbar7   Ú	set_propsÚ_handles_artistsÚget_markeredgecolorÚ	get_alphaÚset_handle_props©r   r:   Ú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,t‚|j}|d |d  }}|d	 |d
  }}t|||f||fd� |j|d ||d |fksŠt‚|j}|d |d |d |d  d   }}|d	 | }}t|||f||fd� |j|d ||d |d fk� sþt‚|j}|d |d |d |d  d   }}|d | }}t|||f||fd� |j||d |d |d fk�srt‚|j}|d |d  }}|d |d  }}t|||f||fd� |j||d ||d fk�sÒt‚d S )NT©r9   rB   r^   r_   rC   )ç        r,   ç      $@ç      ^@r   é   r   é   r   é   re   rG   rd   )r1   r2   r   r   Úextentsr7   )r   r:   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 5 Q R X t t¡� | d¡ W 5 Q R X | d¡ | d	¡ | d
¡ d S )NTr‰   ©éF   rb   ©é}   é‚   rC   Úunsupported_stateÚclearÚmoveÚsquarero   )r1   r2   r   r   r/   ÚraisesÚ
ValueErrorÚ	add_staterX   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,t‚|r@| d¡ d }nd}|j}|d	 |d
  }}d\}}|| ||  }	}
t|||f|	|
f|d� |j|d | |	|d | |
fks´t‚|j}|d	 |d |d
 |d  d   }}d}|| | }	}
t|||f|	|
f|d� |j|d | |	|d |d
 fk�s2t‚|j}|d	 |d |d
 |d  d   }}d}|| | }	}
t|||f|	|
f|d� |j|d | |	|d |d
 fk�s°t‚|j}|d |d |d
 |d  d   }}d}|| | }	}
t|||f|	|
f|d� |j|	|d	 | |d |d
 fk�s.t‚|j}|d |d |d
 |d  d   }}d}|| | }	}
t|||f|	|
f|d� |j|	|d	 | |d |d
 fk�s¬t‚|j}|d |d  }}d\}}|| ||  }	}
t|||f|	|
f|d� |j|	|d	 | |
|d
 | fk�st‚d S )NTr‰   r”   r–   rC   )ç     €Q@ç     @_@ç     @P@g     @`@ro   Úcontrolr   r�   ©r   rŽ   ©rD   rE   Úkeyr   r�   r   éìÿÿÿre   éçÿÿÿ©rG   rd   ©r1   r2   r   r   r�   r7   rŸ   ©r   rŸ   r:   Z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,t‚|r@| d¡ d }nd}|j}|d	 |d
  }}d\}}|| ||  }	}
t|||f|	|
f|d� |j|d |	|d |d
 | fks´t‚|j}|d	 |d |d
 |d  d   }}d}|| | }	}
t|||f|	|
f|d� |j|d |	|d |d
 | fk�s2t‚|j}|d	 |d |d
 |d  d   }}d}|| | }	}
t|||f|	|
f|d� |j|d |	|d |d
 | fk�s°t‚|j}|d |d |d
 |d  d   }}d}|| | }	}
t|||f|	|
f|d� |j|	|d	 |d |d
 | fk�s.t‚|j}|d |d |d
 |d  d   }}d}|| | }	}
t|||f|	|
f|d� |j|	|d	 |d |d
 | fk�s¬t‚|j}|d |d  }}d\}}|| ||  }	}
t|||f|	|
f|d� |j|d | |d	 |
|d
 fk�st‚d S )NTr‰   r”   ©r`   és   rC   ©r¡   rŒ   r£   g     À\@rœ   Úshiftr   r�   r¥   r¦   r   r�   r   r¨   re   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°   rC   rœ   ro   r²   r   r�   r¥   r   r�   r   r¨   rŽ   r©   rª   )r1   r2   r   r   rŸ   r   r�   )	r   r:   r�   r&   r'   r­   r®   r‘   r’   r   r   r   Ú#test_rectangle_resize_square_centerc  sv    


 
ÿ&
 
ÿ&
 
ÿ&
 
ÿ&
 
ÿ 
ÿrµ   Úselector_classc              	   C   sF  || t dd�}t|ddd� |jdks*t‚t|jƒdks<t‚t|dd	d
� |jtdgƒks^t‚t|jƒdkspt‚t|ddd� t|dd	d
� t|jƒdksžt‚|jdks¬t‚t|j	ddd� d|_	|j	dksÐt‚t|j
t ddddgddddgg¡dd� t|ddd� t|jddd� |tjk�rBt t¡� d|j_W 5 Q R X d S )NTr‰   ©r$   r$   ©r˜   éŒ   rC   ©r$   r˜   r$   r¹   r   Úon_key_pressrx   ©r§   Úrotater   )r`   é‘   g�Âõ(\�9@g{®Gáz„?)Zatolé-   gR¸…ë¡]@ç     xa@g=
×£pÝ[@g     �V@g     ÐW@g=
×£p]@g     b@gÃõ(\�â^@)én   r¾   )rÁ   é    )r$   rÀ   r$   g
×£p=úb@Zunvalid_value)r   r   r�   r7   ÚlenÚ_stater	   Úsetr   ZrotationÚcornersÚnpÚarrayr1   r2   r/   r�   rž   r}   Zrotation_point)r   r¶   r:   r   r   r   Útest_rectangle_rotate¢  s2    
ÿþrÉ   c                 C   s„   t j| tdd�}t|ddd� |jdks,t‚t|jƒdks>t‚dD ]<}| |¡ t|jƒd	ksbt‚| 	|¡ t|jƒdksBt‚qBd S )
NTr‰   r·   r¸   rC   rº   r   )r½   rœ   ro   r   )
r1   r2   r   r   r�   r7   rÃ   rÄ   rŸ   Zremove_state)r   r:   Ú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s8t‚| 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)r9   rB   rÌ   r”   r°   rC   r²   rœ   ro   r   r�   r   r   r�   g      G@g     ¸`@)
Z
set_aspectr1   r2   r   r   r�   r7   rŸ   r   Z_aspect_ratio_correction)r   rÌ   r:   r�   r&   r'   Úwidthr­   Zycenterr‘   r’   Zychanger   r   r   Ú*test_rectangle_resize_square_center_aspectÒ  s:    

ÿ

$" ÿ ÿrÏ   c                 C   sê   t j| tddd�}d|_t|ddd� |jdks4t‚t|d	dd
d� |jdksRt‚t|dddd� dd„ |jD ƒ}|ddddgks†t‚t|d	ddd� dd„ |jD ƒ}|ddddgksºt‚|jjdksÊt‚t|jdd…df ddgƒ dS )z'For ellipse, test out the key modifiersr   T)r9   Ú
grab_rangerB   ©r$   é–   r$   rÒ   ©r—   r—   )r¾   r¾   rC   )r`   éª   r`   rÔ   r·   r¤   r¦   )r[   r—   r[   r—   rA   )rg   rI   r³   c                 S   s   g | ]}t |ƒ‘qS r   ©Úint©Ú.0Úer   r   r   Ú
<listcomp>  s     z test_ellipse.<locals>.<listcomp>rg   r–   z
ctrl+shiftc                 S   s   g | ]}t |ƒ‘qS r   rÕ   r×   r   r   r   rÚ   	  s     r•   r˜   )r�   éI   Nr   r¡   r$   )	r1   ÚEllipseSelectorr   r�   r   r7   r4   Úshaper   )r   r:   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:t‚t|jd	ƒ |jdksTt‚t|d
dd� |jdkspt‚t|ddd� |jdksŒt‚t|dd
d� |jdks¨t‚t	 
|jjd  ¡ d¡sÄt‚t	 
|jjd  ¡ d¡sàt‚d S )Nr   Trx   rq   )Zmarkerfacecolorr{   )r9   rÐ   rB   rw   rÑ   ))r$   rÒ   rÒ   r$   )r$   r$   rÒ   rÒ   ))r$   r¢   rÒ   r¢   )r¢   r$   r¢   rÒ   r·   )r`   r`   rC   )r`   rÒ   r`   rÒ   )é„   rß   )él   éŠ   rà   rá   rA   )r   r$   r   r$   r   )r1   r2   r   r�   r   rÆ   r7   Zedge_centersr   r   Z
same_colorZ_corner_handlesÚartistsZget_markerfacecolorrƒ   rX   r   r   r   Útest_rectangle_handles  s8    ÿýÿ ÿ ÿrã   rB   c                 C   sd   t jtd d�}tj| ||d�}t|ddd� | ¡  |jdksBt‚| 	¡  t|ddd� | ¡  d S )Nr   ©rB   ©r$   rÁ   ©rÒ   r`   rC   ©r,   ç     Àb@g     €[@rŒ   ©r   r$   )
r   r.   r   r1   r2   r   r5   r�   r7   rN   ©r   rB   r9   r:   r   r   r   Ú test_rectangle_selector_onselect1  s    rë   Úignore_event_outsidec                 C   sŽ   t jtd d�}tj| ||d�}t|ddd� | ¡  |jdksBt‚| 	¡  t|ddd� |rt| 
¡  |jdksŠt‚n| ¡  |jd	ksŠt‚d S )
Nr   )rì   rå   ræ   rC   rç   ©rÒ   rÒ   ©rÂ   rÂ   )rè   ç      d@rè   rï   )r   r.   r   r1   r2   r   r5   r�   r7   rN   rM   )r   rì   r9   r:   r   r   r   Ú&test_rectangle_selector_ignore_outsideB  s    ÿrð   z$orientation, onmove_callback, kwargsÚ
horizontal)Zminspanr   Úvertical)r   rä   c                 C   s�   t jtd d�}t jtd d�}|r(||d< tj| ||f|Ž}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_callbackr#   r$   r   r%   r(   r)   r*   r+   )r   r.   r   r1   ÚSpanSelectorr	   Úassert_called_once_with)r   Úorientationró   r8   r9   r(   r:   r   r   r   Útest_span_selectorY  s    r÷   c                 C   sf   t jtd d�}tj| |d|d�}t|ddd� | ¡  |jdksDt‚| 	¡  t|ddd� | ¡  d S )	Nr   rñ   rä   r·   )rÒ   r$   rC   )r$   rÒ   ré   )
r   r.   r   r1   rô   r   r5   r�   r7   rN   rê   r   r   r   Útest_span_selector_onselectp  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\t‚| 	¡  | 	¡  t|dd	d� |rž| 
¡  | 
¡  |jdks¼t‚n| ¡  | ¡  |jd
ks¼t‚d S )Nr   rñ   )ró   rì   r·   rÓ   rC   )r$   r—   rí   rî   )rÒ   rÂ   )r   r.   r   r1   rô   r   r5   r�   r7   rN   rM   )r   rì   r9   r(   r:   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s0t‚t|dd	d� |rR|jd
ks`t‚n|jdks`t‚t|ddd� |jdks|t‚d S )Nrñ   T)r9   Ú	directionrB   r]   rA   r_   rC   ré   rc   rf   )rG   rÁ   )rd   rg   rh   rk   )r1   rô   r   r   r�   r7   )r   r]   r:   r   r   r   Útest_span_selector_drag�  s    
þrû   c              	   C   sš   t j| tddd�}|jdks t‚|jjdks0t‚t t¡� t j| tdd�}W 5 Q R X d|_|jdksjt‚|jjdkszt‚t t¡� d|_W 5 Q R X d S )Nrñ   T)r9   rú   rB   Zinvalid_direction)r9   rú   rò   Zinvalid_string)	r1   rô   r   rú   r7   Ú_edge_handlesr/   r�   rž   rX   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sRt	‚|j
ddd� | ¡ tjddd�kszt	‚|jD ]$}| ¡ dks”t	‚| ¡ dks€t	‚q€|jddd� |jD ]$}| ¡ dksÎt	‚| ¡ dksºt	‚qºd S )Nrñ   Trq   rr   rs   ru   rv   )r9   rú   rB   r   rw   r^   r_   rC   rx   ry   ©Úcolorrt   )r1   rô   r   r|   r   r}   r~   r   r€   r7   r�   r‚   Ú	get_colorr„   r…   r†   r   r   r   Ú)test_span_selector_set_props_handle_propsÉ  s"    

ý

r  ÚselectorÚspanZ	rectanglec                 C   sº   t | tdd�}|dkr&tj}d|d< ntj}|f |Ž}t|ddd� t|d	d	d� |jr\t‚d|d
< |f |Ž}|jsxt‚t|ddd� t|d	d	d� |jsžt‚t	|ddd� |jr¶t‚d S )NT)r   r9   rB   r  rñ   rú   rA   r_   rC   )r˜   r˜   rì   r»   Úescaper¼   )
r|   r   r1   rô   r2   r   rL   r7   rì   r	   )r   r  r8   ZSelectorr:   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sFt‚| ¡ sRt‚|dkrh|jd	ksht‚| 	¡  |jrzt‚| ¡ r†t‚t|dd
d� |jsžt‚| ¡ sªt‚|dkrÀ|jdksÀt‚d S )Nr  rñ   T)r9   rú   rB   rì   r‰   rA   r_   rC   ré   )ra   r`   )r   ra   )
r1   rô   r   r2   r   rL   r7   rV   r�   rš   )r   r  r:   r   r   r   Útest_selector_clear_methodü  s&    
þ


r  c              	   C   s€   t j| tddd�}t t¡� | d¡ W 5 Q R X t t¡� | d¡ W 5 Q R X t t¡� | d¡ W 5 Q R X | d¡ d S )Nrñ   Trä   r™   ro   rœ   r›   )r1   rô   r   r/   r�   rž   rŸ   rX   r   r   r   Útest_span_selector_add_state  s    
ÿr  c                 C   sŠ   dddg}t j| |ddd�}|jD ]}| ¡ r2t‚| ¡ r"t‚q"| d¡ | d¡ |jD ]}| ¡ sjt‚| ¡ sZt‚qZ|j|ks†t‚d S )NrG   rI   ra   rñ   F)r   T)	r1   ZToolLineHandlesrâ   Zget_animatedr7   rV   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j ¡  | ¡ }| ¡ }tj	|t
| dd�}| ¡ |ksbt‚| ¡ |ksrt‚| dkr~|n|}|jjt|ƒks–t‚dd	g}d
dg}|}	t|||d� | ¡ |ksÈt‚| ¡ |ksØt‚| dkrädnd}
||
 |	|
 g}|jj|k�s
t‚d S )Nr   r   rG   rI   Trä   rñ   r?   g      '@r@   é   rC   r   )ÚpltÚsubplotsÚplotÚfigureÚcanvasZdrawZ
get_xboundZ
get_yboundr1   rô   Úprintr7   rü   r  Úlistr   )rú   Úfigr   Zx_boundZy_boundr:   ÚboundÚ
press_dataÚ	move_dataÚrelease_dataÚindexÚhandle_positionsr   r   r   Útest_span_selector_bound7  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sît‚|jdksüt‚ˆ j�st‚ˆ  ¡ dk�st‚| ¡  ˆ jdk�s2t‚ddg}ddg}ddg}t|d|d |d dd� t|d|d |d dd� |jdk�sŽt‚ˆ j�sšt‚ˆ  ¡ dk�s¬t‚t|d|d |d dd� ˆ jdk�sÖt‚dS )zACheck that the animated artists changed in callbacks are updated.r   r�   r$   T)Zanimatedçš™™™™™¹?c                    s4   t  ˆ| |f¡\}}ˆ||…  ¡ }ˆ  ˆ|¡ d S r   )rÇ   ZsearchsortedÚmeanÚset_data)ÚvminÚvmaxZindminZindmaxÚv©Zln2ÚvaluesÚxr   r   r  d  s    z:test_span_selector_animated_artists_callback.<locals>.meanrñ   )rú   ró   rB   r]   r   r   r#   r%   r(   FgˆSG-�î?é   rŽ   gÈ„¦C(î¿r*   N)rÇ   ÚlinspaceÚpiÚsinr  r  r  ÚpauseZdraw_artistr  ZblitZbboxr1   rô   r	   Z_get_animated_artistsr7   ÚstaleÚ	get_ydataÚupdate)r  r   Úlnr  r  r  r  r  r   r   r   Ú,test_span_selector_animated_artists_callbackS  sL    



ü ÿr,  c                 C   s€   dd„ }t j| |dd�}|j}t ddd¡}t dd	d
dddddddg
¡}t ddddddddddg
¡}|||ƒ}t||ƒ d S )Nc                  W   s   d S r   r   rR   r   r   r   r9   �  s    z4test_snapping_values_span_selector.<locals>.onselectrñ   )rú   r   rŽ   r@   gš™™™™™¹¿r  rr   ru   ç333333ã?çffffffæ?çÍÌÌÌÌÌì?g
×£p=
@ç      @ç      @rŠ   ç      ð?)r1   rô   Z_snaprÇ   r$  rÈ   r   )r   r9   r:   Zsnap_functionÚsnap_valuesr!  Úexpectr   r   r   Ú"test_snapping_values_span_selectorŒ  s    
r5  c                    sl   ‡ fdd„}t  d¡d }tjˆ |d|d�}d|_|jdks@t‚d |_|jd ksTt‚d|_|jdksht‚d S )	Nc                    s
   dˆ _ d S )NT)Z_got_onselect)r  r  ©r   r   r   r9   ›  s    z)test_span_selector_snap.<locals>.onselectra   r#  rñ   )rú   r3  )é   rg   )é   é$   )rÇ   Zaranger1   rô   r�   r7   r3  )r   r9   r3  r:   r   r6  r   Útest_span_selector_snapš  s    
ÿr:  r8   Úred)rÿ   )r   r   c                 C   sh   t jtd d�}tj| |f|Ž}t|ddddd� t|ddddd� t|dd	d	dd� | d
ddg¡ d S )Nr   r#   r$   r   r%   r(   r—   r*   rÒ   r·   rÓ   rí   )r   r.   r   r1   ZLassoSelectorr	   rõ   )r   r8   r9   r:   r   r   r   Útest_lasso_selector«  s    r<  c                 C   s`   t  | dd¡}| ¡ dddgks$t‚| d¡ | ¡ dddgksDt‚| dd„ ¡}| |¡ d S )N)Úarq   Úc)TFTTFr   c                   S   s   d S r   r   r   r   r   r   rT   Á  rU   z#test_CheckButtons.<locals>.<lambda>)r1   ÚCheckButtonsZ
get_statusr7   Z
set_activeZ
on_clickedZ
disconnect)r   ÚcheckZcidr   r   r   Útest_CheckButtons»  s    
rA  ÚtoolbarZtoolbar2Ztoolmanagerc                 C   sä   t  tjd|¡ tjtd d�}tjtd d�}t | d¡}| 	|¡ | 
|¡ |jdksZt‚t|dƒ | d¡ |jdks|t‚|jdksŠt‚| |j¡ | ¡  |jdks¬t‚t|dƒ t|dd	d
� t|ddd
� |jdksàt‚d S )NrB  r   Ú Z_clickzx**2r   r�   Z	_keypressú+r¼   Ú5r�   )r|   Ú__setitem__r  ÚrcParamsr   r.   r   r1   ZTextBoxZ	on_submitZon_text_changeÚtextr7   r	   Úset_valÚ
call_countZbegin_typingZstop_typing)r   rB  Zsubmit_eventZtext_change_eventr:   r   r   r   Útest_TextBoxÅ  s$    




rK  zcheck_radio_buttons.pngZmpl20)ÚstyleZremove_textc                  C   s^   t ƒ } dtjd< tjdd� t ddddg¡}t ddddg¡}t |d	¡ t |d
d¡ d S )Né   ztext.kerning_factorry   )Úleftçš™™™™™©?r.  ç333333Ã?rr   )zRadio 1zRadio 2zRadio 3)zCheck 1zCheck 2zCheck 3)FTT)r
   r  rG  Zsubplots_adjustÚaxesr1   ÚRadioButtonsr?  )r   Zrax1Zrax2r   r   r   Útest_check_radio_buttons_imageå  s    
ÿrS  z check_bunch_of_radio_buttons.pngc                  C   s"   t  ddddg¡} t | d¡ d S )NrO  r  rP  r.  )ZB1ZB2ZB3ZB4ZB5ZB6ZB7ZB8ZB9ZB10ZB11ZB12ZB13ZB14ZB15)r  rQ  r1   rR  )Zraxr   r   r   Ú!test_check_bunch_of_radio_buttonsó  s    rT  c               	   C   sd   t  ¡ \} }t t¡� tj|ddddd� W 5 Q R X t t¡� tj|ddddd� W 5 Q R X d S )NrC  rŠ   ç      8@r‹   )r   ÚlabelÚvalminÚvalmaxÚ	slidermin)r   rV  rW  rX  Ú	slidermax)r  r  r/   r�   rž   r1   ÚSlider)r  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sFt‚tj|dddd|d	�}|j|jkslt‚d S )
NrC  rŠ   rU  r0  ©r   rV  rW  rX  Úvalinitr2  )r   rV  rW  rX  r^  rY  r‹   )r   rV  rW  rX  r^  rZ  ©r  r  r1   r[  Úvalr7   )r  r   Zslider_Úsliderr   r   r   Útest_slider_slidermin_slidermax  s    ÿ ÿ ÿrb  c                  C   sX   t  ¡ \} }tj|ddddd�}|j|jks0t‚tj|ddddd�}|j|jksTt‚d S )NrC  rŠ   rU  g      $Àr]  g      9@)r  r  r1   r[  r`  rW  r7   rX  ©r  r   ra  r   r   r   Útest_slider_valmin_valmax  s    ÿÿrd  c               
   C   s`   t  ¡ \} }tj|dddddd�}|jdks0t‚tj|ddddddd	d
gd�}|jd	ks\t‚d S )NrC  rŠ   rU  gÍÌÌÌÌÌ&@r   )r   rV  rW  rX  r^  Zvalstepr@   r   r1  g33333³3@r_  rc  r   r   r   Útest_slider_valstep_snapping   s     ÿ 
ÿre  c                  C   sÌ   t  ¡ \} }tj|dddddd�}| d¡ |jdks:t‚|j ¡  	|j
 ¡ ¡}t|jddd	d
gƒ t  ¡ \} }tj|dddddd�}| d¡ |jdksžt‚|j ¡  	|j
 ¡ ¡}t|jddd
d	gƒ d S )NrC  r   é   é   rñ   )r   rV  rW  rX  r^  rö   r   ç      Ð?g«ªªªªªÚ?ru   rò   )r  r  r1   r[  rI  r`  r7   ÚpolyÚget_extentsÚtransformedÚ	transAxesÚinvertedr   Zbounds)r  r   ra  Úboxr   r   r   Útest_slider_horizontal_vertical+  s$     ÿ
 ÿ
ro  c                  C   sD   t  ¡ \} }tj|ddddd�}| d¡ | ¡  |jdks@t‚d S )NrC  r   r   ru   r]  ç      è?)r  r  r1   r[  rI  Úresetr`  r7   rc  r   r   r   Útest_slider_reset?  s
    
rr  rö   c                    sZ  ˆ dkrddddg}nddddg}t  ¡ \}}tj|dddˆ d	d
gd�}|j ¡  |j ¡ ¡}t	| 
¡  ¡ | d	dd
dgƒ t	|jdƒ ‡ fdd„}| d¡ t	|jdƒ t	||ƒdƒ |j ¡  |j ¡ ¡}t	| 
¡  ¡ | ddddgƒ | d¡ t	|jdƒ t	||ƒdƒ | d¡ t	|jdƒ t	||ƒdƒ | ¡  t	|jdƒ t	||ƒdƒ d S )Nrò   r   r   r�   r�   rC  rŠ   r2  r  çÃõ(\�ÂÕ?©r   rV  rW  rX  rö   r^  rh  rp  )r  rs  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   )r)  ©rØ   Úhr   r   r   rÚ   \  s     z?test_range_slider.<locals>.handle_positions.<locals>.<listcomp>c                 S   s   g | ]}|  ¡ d  ‘qS ru  )Ú	get_xdatarv  r   r   r   rÚ   ^  s     )Z_handles)ra  ©rö   r   r   r  Z  s    z+test_range_slider.<locals>.handle_positions)rr   r-  rr   r-  )rr   r  )r  rr   )éÿÿÿÿr   )r   r   )r  r  r1   ÚRangeSliderri  rj  rk  rl  rm  r   Ú
get_pointsÚflattenr`  rI  rq  )rö   Úidxr  r   ra  rn  r  r   ry  r   Útest_range_sliderG  s<        þ


r  c                 C   s€   | dkrddddg}nddddg}t  ¡ \}}tj|ddd| ddgd	�}|j ¡  |j ¡ ¡}t	| 
¡  ¡ | dd
ddgƒ d S )Nrò   r   r   r�   r�   rC  rŠ   r2  rt  rh  rp  )r  r  r1   r{  ri  rj  rk  rl  rm  r   r|  r}  )rö   r~  r  r   ra  rn  r   r   r   Ú"test_range_slider_same_init_valuest  s        þr€  c           	      K   sf   t ƒ }tjtdd�}tj||f|Ž}| D ]\}}t||f|Ž q(|j|ksNt‚|j	|fi fksbt‚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   r.   r   r1   ÚPolygonSelectorr	   rJ  r7   r6   )	Úevent_sequenceÚexpected_resultZselections_countr8   r   r9   r:   ÚetypeÚ
event_argsr   r   r   Úcheck_polygon_selector…  s    r†  c                 C   s.   dt | |d�fdt | |d�fdt | |d�fgS )Nr(   ©r&   r'   r#   r*   ©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 )Nr(   r‡  r#   r�   r%   r*   rˆ  r‡  r   r   r   Úpolygon_remove_vertex­  s    þrŠ  Údraw_bounding_boxc                 C   s¤  t jt| d�}dddg}tddƒtddƒtddƒtddƒ•}|||dƒ dd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ftddƒtddƒ•}|||dƒ dd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ftddƒtddƒ•}|||dƒ dd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f•}|||dƒ dd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f•}|||dƒ dddg}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ftddƒtddƒtddƒtddƒ•}|||dƒ dddg}tddƒtddƒd	tdd�fdtdd�fftddƒtddƒtddƒtddƒ•}|||dƒ d S )N©r‹  ©ra   ra   ©rÒ   ra   ©ra   rÒ   ra   rÒ   r   )r[   ra   r»   r¤   r¼   r(   r‡  r#   r[   r*   Zon_key_release)ra   r[   )rÒ   r[   r³   r$   r—   r�   )r[   r[   )ri   r[   )r[   ri   r+   r  )Ú	functoolsÚpartialr†  r‰  r|   )r‹  Zcheck_selectorrƒ  r‚  r   r   r   Útest_polygon_selector³  s¾     ÿ
ü
ø	ö
ø	ö
ø

ö
ôð
üø
r’  c                 C   s"  t j| ttddd�tdd�|d�}tddƒtddƒtddƒtddƒ•}|D ]\}}t||f|Ž qJ|j}| ¡ dksxt‚| 	¡ dksˆt‚|j
d	d
d� | ¡ d	ks¦t‚| 	¡ d
ks¶t‚|jD ]$}| ¡ dksÐt‚| 	¡ dks¼t‚q¼|jd	d
d� |jD ]&}| ¡ d	k�st‚| 	¡ d
ksöt‚qöd S )Nrq   rr   rþ   ru   rv   )r9   r   rw   r‹  ra   rÒ   rx   ry   )r1   r�  r   r|   r‰  r	   r}   r   r7   r„   r�   r‚   r…   )r   r‹  r:   r‚  r„  r…  r‡   r   r   r   Ú,test_polygon_selector_set_props_handle_props%  s2    
ýü

r“  c                 C   s.   |   ¡ }|  ¡ }tj|tddid�}d|_d S )NrW   F)r9   r   )rr   rÍ   ry   r.  )r  r1   r2   r   r�   )Úfig_testÚfig_refÚax_testÚ_r:   r   r   r   Útest_rect_visibilityF  s    ÿr˜  r~  r�   r�   c                 C   sv   dddg}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�   éÈ   rŒ  )r‰  ÚinsertÚappendrŠ  Úsumr†  )r~  r‹  Úvertsr‚  r   r   r   Útest_polygon_selector_removeR  s    




ü
ÿrž  c                 C   s\   dd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   r   r   Ú(test_polygon_selector_remove_first_pointe  s    





ûÿrŸ  c              	   C   sš   dddg}t |d Ž t |d Ž t |d Ž t |d Ž t|d Ž t|d Ž t |d Ž •}tj| t|d�}|D ]\}}t||f|Ž qh|j|dd… ks–t‚d S )Nr�  rŽ  r�  r   r   r�   ©r9   r‹  )r‰  rŠ  r1   r�  r   r	   r�  r7   )r   r‹  r�  r‚  r:   r„  r…  r   r   r   Útest_polygon_selector_redraws  s    







÷ÿr¡  Zpng)Ú
extensionsc                 C   sš   dddg}|   ¡ }tj|t|d�}||_|j|ks6t‚|  ¡ }tj|t|d�}t|d Ž t|d Ž t|d Ž t|d Ž •}|D ]\}	}
t||	f|
Ž q~d S )N)r  gš™™™™™Ù?)ru   r/  )ry   rr   r   r   r   r�   )Zadd_subplotr1   r�  r   r�  r7   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Æ  ddddg}t |d Ž t |d Ž t |d Ž t |d Ž t |d Ž •}tj| td	d
�}|D ]\}}t||f|Ž qV| j}| jj}td|f| 	d¡džŽ  
¡  td|f| 	d¡žŽ  
¡  td|f| 	d¡džŽ  
¡  tj |jddddg¡ td|f| 	d¡džŽ  
¡  td|f| 	d¡žŽ  
¡  td|f| 	d¡džŽ  
¡  tj |jddddg¡ tj |jjd¡ td|f| 	d¡d žŽ  
¡  td|f| 	d¡d!žŽ  
¡  tj |jdddg¡ tj |jjd¡ d S )"N)rG   r   )r   rG   )rG   é(   )r¤  rG   r   r   r�   r�   Tr   Zbutton_press_event)r¤  r¤  Zmotion_notify_eventrF   Zbutton_release_event)r   r   r^   )r   rG   )rG   r   rA   rH   r\   )rG   rI   )rI   r¤  )r¤  rI   )ç      4@ç      D@r¥  r¦  )r¥  r¦  g      >@r¦  )r   )r   )r   )r   )r�   )r�   )r‰  r1   r�  r   r	   rJ   r  r  r   rK   Z_processrÇ   Ztestingr   r�  Ú_boxr�   )r   r�  r‚  r:   r„  r…  Útr  r   r   r   Útest_polygon_selector_box£  s¬    




û	 ÿ  ÿ ÿÿ
 ÿ  ÿ 
ÿ ÿ  ÿ ÿÿ
 ÿ  ÿ 
ÿ ÿ ÿ  ÿ ÿ  ÿ ÿ ÿr©  ÚhorizOnÚvertOnc                 C   s  t  ¡ jddd�\}}t  ¡  ¡ }tjd ||fd| |d�}t|jƒ|rJdndksTt‚t|jƒ| rddndksnt‚t	|ddd	�}| 
|¡ |jD ]}| ¡ d
ksŒt‚qŒ|jD ]}| ¡ dks¨t‚q¨t	|ddd	�}| 
|¡ |jD ]}| ¡ d
ksÜt‚qÜ|jD ]}| ¡ dksøt‚qød S )Nr�   T)ZsharexF)r   rª  r«  r   ru   rh  r‡  )ru   ru   )rh  rh  rp  )r  r  r  r1   ZMultiCursorrÃ   Zvlinesr7   Zhlinesr   r(   rx  r)  )rª  r«  Zax1Zax3Zax2ÚmultiÚeventÚlr   r   r   Útest_MultiCursorÚ  s.        ÿ





r¯  )_Ú
contextlibr   r�  Zunittestr   Zmatplotlib._api.deprecationr   Zmatplotlib.backend_basesr   Zmatplotlib.colorsÚcolorsr   Zmatplotlib.widgetsr1   Zmatplotlib.pyplotZpyplotr  Zmatplotlib.testing.decoratorsr   r   Zmatplotlib.testing.widgetsr   r	   r
   r   r   ÚnumpyrÇ   Znumpy.testingr   r/   Zfixturer   ÚmarkZparametrizer|   r=   rQ   rY   rp   rˆ   r“   r    r¯   r´   rµ   r2   rÜ   rÉ   rË   rÏ   rÞ   rã   rë   rð   r÷   rø   rù   rû   rý   r  r  r  r  r	  r  Úbackendr,  r5  r:  r<  rA  rK  rS  rT  r\  rb  rd  re  ro  rr  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