U
    Fvf=  ã                   @   sÜ  d dl Z d dlmZmZ d dlmZmZmZmZm	Z	m
Z
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Zd dlZdZdd	„ Zd
d„ Zdd„ Zdd„ Zej d¡dd„ ƒZdd„ Z ej !ddddddg¡dd„ ƒZ"dd„ Z#dd „ Z$d!d"„ Z%ej !d#d$d%g¡ej !d&d'd(g¡ej !d)d*ej&d+fd*ej'd,fd-ej&d.fd-ej'd/fg¡d0d1„ ƒƒƒZ(d2d3„ Z)ej !d4d5d6dej*d7ed8g¡d9d:„ ƒZ+ej !d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMg¡dNdO„ ƒZ,dPdQ„ Z-dRdS„ Z.dTdU„ Z/dS )Vé    N)ÚpathÚ
transforms)ÚFigureCanvasBaseÚKeyEventÚLocationEventÚMouseButtonÚ
MouseEventÚNavigationToolbar2ÚRendererBase)ÚRubberbandBase©ÚFigure)Úneeds_pgf_xelatexzƒTreat the new Tool classes introduced in v[0-9]*.[0-9]* as experimental for now; the API and rcParam may change in future versions.c               	      sR  t  ¡ ‰ dd„ tddƒD ƒ} ‡ fdd„tddƒD ƒ}t d¡ d	¡}d
dg}d
dg}dd„ }|ˆ | ||||ƒ |ˆ | dd… ||||ƒ |ˆ g ||||ƒ |ˆ | |dd… |||ƒ |ˆ | g |||ƒ td|jd ƒD ]&}|ˆ | ||d|…d d …f ||ƒ qÖ|ˆ | ||g |ƒ |ˆ | |||g ƒ |ˆ | ||g g ƒ |ˆ | |||dd… |ƒ d S )Nc                 S   s   g | ]}t j |¡‘qS © )r   ÚPathZunit_regular_polygon©Ú.0Úir   r   úG/tmp/pip-unpacked-wheel-7vhvci0g/matplotlib/tests/test_backend_bases.pyÚ
<listcomp>   s     z&test_uses_per_path.<locals>.<listcomp>é   é   c                    s   g | ]}ˆ   |¡ ¡  ¡ ‘qS r   )ÚrotateZ
get_matrixÚcopyr   ©Úidr   r   r      s     é   é   é   )é
   é   ZredZgreenc                 S   sž   t ƒ }t| | ||¡ƒ}| ¡ }dd„ | |tt|ƒƒ|t | ¡||g g dgg d¡D ƒ}	| 	|||||¡}
|ršt
j|	t|ƒd}t|ƒ |
d |
g¡sšt‚d S )Nc                 S   s   g | ]\}}}}}|‘qS r   r   )r   ZxoZyoZpath_idZgc0ZrgbFacer   r   r   r   $   s     z5test_uses_per_path.<locals>.check.<locals>.<listcomp>FZscreen)Z	minlengthr   )r
   ÚlistZ_iter_collection_raw_pathsZnew_gcZ_iter_collectionÚrangeÚlenr   ZAffineDeltaTransformZ_iter_collection_uses_per_pathÚnpZbincountÚsetÚissubsetÚAssertionError)Zmaster_transformÚpathsZall_transformsÚoffsetsÚ
facecolorsÚ
edgecolorsÚrbZ	raw_pathsÚgcÚidsZusesÚseenr   r   r   Úcheck   s@      ÿ 
      üÿ    ÿz!test_uses_per_path.<locals>.checkr   )r   ZAffine2Dr"   r$   ÚarangeÚreshapeÚshape)r(   Ztforms_matricesr)   r*   r+   r0   Únr   r   r   Útest_uses_per_path   s*     ÿr5   c                   C   s   t tƒ jtƒst‚d S ©N)Ú
isinstancer   Úfigurer   r'   r   r   r   r   Útest_canvas_ctor>   s    r9   c                   C   s   t  ¡ j ¡ dkst‚d S )Nz	image.png)Úpltr8   ÚcanvasZget_default_filenamer'   r   r   r   r   Útest_get_default_filenameB   s    r<   c                  C   s.   t  ¡ } t| ƒ}t  | ¡ t  | j¡r*t‚d S r6   )r:   r8   r   ÚcloseZfignum_existsÚnumberr'   )Úfigr;   r   r   r   Útest_canvas_changeF   s    
r@   Zpdfc              	   C   s¤   t  ¡  |  dd¡ t t¡4}t  ¡  t|ƒdks8t‚dt	|d j
ƒksNt‚W 5 Q R X t t¡8}t  ¡  ¡  t|ƒdks€t‚dt	|d j
ƒks–t‚W 5 Q R X d S )NZDISPLAYz:999r   z=Matplotlib is currently using pdf, which is a non-GUI backendr   )r:   ÚsubplotsZsetenvÚpytestÚwarnsÚUserWarningÚshowr#   r'   ÚstrÚmessageÚgcf)ZmonkeypatchZrecr   r   r   Útest_non_gui_warningO   s    ÿÿrI   c                  C   sD   t  ¡ \} }| j |¡ | jj|ks(t‚|  ¡  | jjd ks@t‚d S r6   )r:   rA   r;   Z
grab_mouseZmouse_grabberr'   Úclear)r?   Úaxr   r   r   Útest_grab_clearb   s
    rL   zx, y)é*   é   )NrM   )NN)éÈ   gq=
×£ Y@)g     ¸i@g       @c                 C   sþ   t  ¡ \}}t|ƒ}td|| |ƒ}| d kr:|jd ks\t‚n"|jt| ƒksLt‚t|jtƒs\t‚|d krt|jd ks–t‚n"|jt|ƒks†t‚t|jtƒs–t‚| d k	rú|d k	rút	 
d | | ¡| |¡¡| | |¡¡sÒt‚dd„  |_|_t	 
d| | |¡¡sút‚d S )NZ
test_eventz
x={} +y={}c                 S   s   dS )NÚfoor   )Úxr   r   r   Ú<lambda>   ó    z.test_location_event_position.<locals>.<lambda>zx=foo +y=foo)r:   rA   r   r   rQ   r'   Úintr7   ÚyÚreÚmatchÚformatZformat_xdataZformat_ydataZformat_coordZ	fmt_xdataZ	fmt_ydata)rQ   rU   r?   rK   r;   Úeventr   r   r   Útest_location_event_positionl   s$    
þrZ   c                     s¢   t  ¡ } | jddddddd | j ¡  g ‰ ‡ fdd„}| j d|¡ td	| jd
ƒ ¡  td| jf| j	 
d¡tjfžŽ  ¡  td| jd
ƒ ¡  tˆ ƒdksžt‚d S )Nç      à?ZhelloÚcenterT)ZhaÚvaZpickerc                    s   | j jdkst‚ˆ  | ¡ d S )NÚa)Z
mouseeventÚkeyr'   Úappend)rY   ©Zpicksr   r   Úhandle_pick‹   s    ztest_pick.<locals>.handle_pickZ
pick_eventZkey_press_eventr^   Úbutton_press_event©r[   r[   Zkey_release_eventr   )r:   r8   Útextr;   ÚdrawZmpl_connectr   Z_processr   ZtransFigureÚ	transformr   ÚLEFTr#   r'   )r?   rb   r   ra   r   Ú	test_pick…   s    


þri   c                  C   sÒ  t  ¡ \} }|jdd | ¡ d ks(t‚t| jƒ}| ¡  | ¡ dksJt‚| ¡ }| 	¡ }d}d}|j
 |¡ t¡}|j
 |¡ t¡}td| jf|tjfžŽ }	| jj |	j|	¡ td| jf|tjfžŽ }
| jj |
j|
¡ | ¡ |	j|
jfksòt‚| 	¡ |	j|
jfkst‚td| jf|tjfžŽ }	| jj |	j|	¡ td| jf|tjfžŽ }
| jj |
j|
¡ | ¡ tj|dd	d
ks~t‚| 	¡ tj|dd	d
ksœt‚| ¡  | ¡ d ks¶t‚| ¡ sÊ| ¡ rÎt‚d S )NZlogit)ZxscaleÚZOOM)gíµ ÷Æ°>çš™™™™™¹?)gwJëÿï?çš™™™™™é?rc   Úbutton_release_eventr   g»½×Ùß|Û=)ÚrelÚabs)r:   rA   r%   Úget_navigate_moder'   r	   r;   ÚzoomÚget_xlimÚget_ylimÚ	transDatarg   ÚastyperT   r   r   rh   Ú	callbacksÚprocessÚnameZxdataZydataÚRIGHTrB   ÚapproxZget_autoscalex_onZget_autoscaley_on)r?   rK   ÚtbZxlim0Zylim0Úd0Úd1Ús0Ús1Ústart_eventÚ
stop_eventr   r   r   Útest_interactive_zoom˜   sf    
 ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿr‚   c                  C   sj   t  ¡ \} }| ddgddg¡ | j |¡ t| jƒ}| ¡  | ¡ d ksNt‚| 	¡  | ¡ d ksft‚d S )Nr   r   )
r:   rA   Úplotr;   Z
widgetlockr	   rq   rp   r'   Úpan)r?   rK   r{   r   r   r   Útest_widgetlock_zoompanÈ   s    
r…   Ú	plot_funcZimshowÚcontourfÚorientationÚverticalZ
horizontalztool,button,expectedrq   ©é   é   )iìÿÿÿé   r„   )éþÿÿÿé   )g…ëQ¸…÷?g…ëQ¸@c                 C   s†  t  ¡ \}}t d¡ d¡}d\}}	t|| ƒ|||	d}
|j|
||d}| dkrb|j ¡ r^t	‚d S |j ¡ spt	‚d\}}|df}|df}|d	kr¬|d d d
… }|d d d
… }|jj
 |¡ t¡}|jj
 |¡ t¡}td|jf||fžŽ }td|jf||fžŽ }t|jƒ}|dkr<| ¡  | |¡ | |¡ | |¡ n&| ¡  | |¡ | |¡ | |¡ |j|jftj|ddks‚t	‚d S )Né   )r‹   r   )r   r   )ÚvminÚvmax)rK   rˆ   r‡   rŠ   r[   r‰   éÿÿÿÿrc   rm   rq   g333333Ã?©ro   )r:   rA   r$   r1   r2   ÚgetattrZcolorbarrK   Úget_navigater'   rt   rg   ru   rT   r   r;   r	   rq   Z
press_zoomZ	drag_zoomZrelease_zoomr„   Ú	press_panÚdrag_panÚrelease_panr‘   r’   rB   rz   )r†   rˆ   ZtoolÚbuttonÚexpectedr?   rK   ÚdataZvmin0Zvmax0ZcollÚcbr‘   r’   r|   r}   r~   r   r€   r   r{   r   r   r   Útest_interactive_colorbarÓ   sT     ÿ ÿ ÿ ÿ






rž   c               	   C   s„   t jttd dtjd< W 5 Q R X t ¡ } |  ¡ d ks<t‚| j	j
jj d¡ |  ¡ dks^t‚| j	j
jj d¡ |  ¡ dks€t‚d S )N©rW   ÚtoolmanagerÚtoolbarrq   rj   r„   ZPAN)rB   rC   rD   Ú_EXPECTED_WARNING_TOOLMANAGERr:   ÚrcParamsZgcarp   r'   r8   r;   Úmanagerr    Útrigger_tool)rK   r   r   r   Útest_toolbar_zoompan  s    r¦   ÚbackendÚsvgZpsZpgf)Zmarksc                 C   s  ddl m} ddlm} t d| › ¡}|j}|dd}||ƒ | dd¡}|dd}||ƒ | dd¡}dd	„ | ¡ D ƒ}	|j 	¡  |j 	¡  d
d	„ | ¡ D ƒ}
dd	„ | ¡ D ƒ}t
|	|
ƒD ]\}}tj||ddr¾t‚q¾t
||
ƒD ]\}}tjj||dd qæd S )Nr   r   )ÚFigureCanvaszmatplotlib.backends.backend_T)Zconstrained_layoutr    c                 S   s   g | ]}|  ¡ ‘qS r   ©Úget_position©r   rK   r   r   r   r   0  s     ztest_draw.<locals>.<listcomp>c                 S   s   g | ]}|  ¡ ‘qS r   rª   r¬   r   r   r   r   5  s     c                 S   s   g | ]}|  ¡ ‘qS r   rª   r¬   r   r   r   r   6  s     g{®Gázt?)Zatol)Úmatplotlib.figurer   Zmatplotlib.backends.backend_aggr©   rB   ZimportorskiprA   Zravelr;   rf   Úzipr$   Zallcloser'   ZtestingZassert_allclose)r§   r   r©   Ztest_backendZ
TestCanvasZfig_testZ	axes_testZfig_aggZaxes_aggZinit_posZlayed_out_pos_testZlayed_out_pos_aggÚinitZplacedÚrefÚtestr   r   r   Ú	test_draw  s*    ÿ



r²   z&key,mouseend,expectedxlim,expectedylim)N©çš™™™™™É?r´   ©gìQ¸…ë@g{®Gáú(@©gš™™™™™@gffffff'@)N)r´   r[   rµ   ©r   é	   )N)r[   r´   r·   r¶   )Nrd   r·   r·   )N©rl   ç      Ð?©gÃõ(\ÂÀg…ëQ¸@©g      @g     €&@)N©r´   rº   rµ   r¼   )N)rl   ç333333ë?r»   ©g…ëQ¸	Àgq=
×£p@)N©r´   r¾   rµ   r¿   )Úshift)r´   çš™™™™™Ù?rµ   r·   )rÁ   ©rÂ   r´   r·   r¶   )rÁ   r½   rµ   rµ   )rÁ   r¹   r»   )gÃõ(\Â@gq=
×£ð(@)rÁ   )rl   gÍÌÌÌÌÌì?©g¤p=
×£Àg¤p=
×£@rÄ   )rÁ   rÀ   rµ   )gìQ¸…ëÀg
×£p=
@)rQ   )r´   rk   rµ   r·   )rU   )rk   r´   r·   r¶   )Úcontrolr³   rµ   rµ   )rÅ   rÃ   ©gÃõ(\Â@gq=
×£p'@rÆ   c                 C   s  t  ¡ \}}| t d¡¡ | ¡ s(t‚| d¡ d}|j 	|¡ 
t¡}|j 	|¡ 
t¡}td|jf|žtj| dœŽ}	td|jf|žtj| dœŽ}
t|jƒ}| ¡  | |	¡ | |
¡ | |
¡ t| ¡ ƒtj|ddksàt‚t| ¡ ƒtj|ddksþt‚d S )	Nr   Úequalrd   rc   )rš   r_   rm   g{®Gáz”?r”   )r:   rA   rƒ   r$   r1   r–   r'   Z
set_aspectrt   rg   ru   rT   r   r;   r   rh   r	   r„   r—   r˜   r™   Útuplerr   rB   rz   rs   )r_   ZmouseendZexpectedxlimZexpectedylimr?   rK   Z
mousestartZsstartÚsendr€   r   r{   r   r   r   Útest_interactive_pan?  s@    
 ÿÿþ ÿÿþ



rÊ   c               	   C   s”   t jttd dtjd< W 5 Q R X t ¡ } t| jj	j
jƒ}d| jj	j
jksPt‚| jj	j
 d¡ t| jj	j
jƒ|d ks|t‚d| jj	j
jkst‚d S )NrŸ   r    r¡   Úforwardr   )rB   rC   rD   r¢   r:   r£   rH   r#   r;   r¤   r    Ztoolsr'   Zremove_tool)r?   Zinitial_lenr   r   r   Útest_toolmanager_removeu  s    rÌ   c               	   C   sæ   t jttd dtjd< W 5 Q R X t ¡ } | jjj	 
d¡}t|tƒsJt‚| jjj	 
|¡|ksbt‚t jtdd | jjj	 
d¡d ksŠt‚W 5 Q R X | jjj	j
dddd ks°t‚t jtdd | jjj	 d¡d ksØt‚W 5 Q R X d S )	NrŸ   r    r¡   Ú
rubberbandz'ToolManager does not control tool 'foo'rP   F)Úwarn)rB   rC   rD   r¢   r:   r£   rH   r;   r¤   r    Zget_toolr7   r   r'   r¥   )r?   rÍ   r   r   r   Útest_toolmanager_get_tool€  s    ÿ"ÿrÏ   c               	   C   sº   t jttd dtjd< W 5 Q R X t ¡ } d| jjj	 
d¡ksDt‚t jtdd | jjj	 dd¡ W 5 Q R X | jjj	 
d¡dgksŠt‚t jtdd | jjj	 d	d¡ W 5 Q R X d S )
NrŸ   r    r¡   ÚvrË   z"Key c changed from back to forwardÚcz'foo' not in ToolsrP   )rB   rC   rD   r¢   r:   r£   rH   r;   r¤   r    Zget_tool_keymapr'   Zupdate_keymapZraisesÚKeyError)r?   r   r   r   Útest_toolmanager_update_keymap‘  s    ÿrÓ   )0rV   Z
matplotlibr   r   Zmatplotlib.backend_basesr   r   r   r   r   r	   r
   Zmatplotlib.backend_toolsr   r­   r   Zmatplotlib.testing._markersr   Zmatplotlib.pyplotZpyplotr:   Znumpyr$   rB   r¢   r5   r9   r<   r@   Úmarkr§   rI   rL   ZparametrizerZ   ri   r‚   r…   rh   ry   rž   r¦   Úparamr²   rÊ   rÌ   rÏ   rÓ   r   r   r   r   Ú<module>   sŠ   $ÿ(	


 ÿ
0



ýÿ6 ÿÿ
 ïþ
!