U
    ÂmœdÃ<  ã                   @   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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¡d.d/„ ƒƒƒZ'd0d1„ Z(ej  d2d3d4dej)d5ed6g¡d7d8„ ƒZ*ej  d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKg¡dLdM„ ƒZ+dNdO„ Z,dPdQ„ Z-dRdS„ Z.dS )Té    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   ú\/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/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     é   é   é   )é
   é   ÚredÚ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>FÚ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ÚgcZ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.   r2   Únr   r   r   Útest_uses_per_path   s*     ÿr7   c                   C   s   t tƒ jtƒst‚d S ©N)Ú
isinstancer   Úfigurer   r*   r   r   r   r   Útest_canvas_ctor>   s    r;   c                   C   s   t  ¡ j ¡ dkst‚d S )Nz	image.png)Úpltr:   Ú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 r8   )r<   r:   r   ÚcloseZfignum_existsÚnumberr*   )Úfigr=   r   r   r   Útest_canvas_changeF   s    
rB   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    ÿÿrK   zx, y)é*   é   )NrL   )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>w   ó    z.test_location_event_position.<locals>.<lambda>zx=foo +y=foo)r<   rC   r   r   rP   r*   Úintr9   ÚyÚreÚmatchÚformatZformat_xdataZformat_ydataZformat_coordZ	fmt_xdataZ	fmt_ydata)rP   rT   rA   Úaxr=   Úeventr   r   r   Útest_location_event_positionb   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<   r:   Útextr=   ÚdrawZmpl_connectr   Z_processr   ZtransFigureÚ	transformr   ÚLEFTr&   r*   )rA   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<   rC   r(   Úget_navigate_moder*   r	   r=   ÚzoomÚget_xlimÚget_ylimÚ	transDatarg   ÚastyperS   r   r   rh   Ú	callbacksÚprocessÚnameZxdataZydataÚRIGHTrD   ÚapproxZget_autoscalex_onZget_autoscaley_on)rA   rX   Ú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<   rC   Úplotr=   Z
widgetlockr	   rq   rp   r*   Úpan)rA   rX   r{   r   r   r   Útest_widgetlock_zoompan¾   s    
r…   Ú	plot_funcZimshowÚcontourfÚorientationÚverticalÚ
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)rX   rˆ   r‡   r‹   r[   r‰   éÿÿÿÿrc   rm   rq   g333333Ã?©ro   )r<   rC   r'   r3   r4   ÚgetattrZcolorbarrX   Úget_navigater*   rt   rg   ru   rS   r   r=   r	   rq   Z
press_zoomZ	drag_zoomZrelease_zoomr„   Ú	press_panÚdrag_panÚrelease_panr’   r“   rD   rz   )r†   rˆ   ZtoolÚbuttonÚexpectedrA   rX   Ú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©rV   ÚtoolmanagerÚtoolbarrq   rj   r„   ZPAN)rD   rE   rF   Ú_EXPECTED_WARNING_TOOLMANAGERr<   ÚrcParamsZgcarp   r*   r:   r=   Úmanagerr¡   Útrigger_tool)rX   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   ©Zget_position©r   rX   r   r   r   r   &  s     ztest_draw.<locals>.<listcomp>c                 S   s   g | ]}|  ¡ ‘qS r   r«   r¬   r   r   r   r   +  s     c                 S   s   g | ]}|  ¡ ‘qS r   r«   r¬   r   r   r   r   ,  s     g{®Gázt?)Zatol)Úmatplotlib.figurer   Zmatplotlib.backends.backend_aggrª   rD   ZimportorskiprC   Zravelr=   rf   Úzipr'   Zallcloser*   Ú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=
@)rP   )rµ   rk   r¶   r¸   )rT   )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<   rC   rƒ   r'   r3   r—   r*   Z
set_aspectrt   rg   ru   rS   r   r=   r   rh   r	   r„   r˜   r™   rš   Útuplerr   rD   rz   rs   )r_   ZmouseendZexpectedxlimZexpectedylimrA   rX   Z
mousestartZsstartÚsendr€   r   r{   r   r   r   Útest_interactive_pan5  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   )rD   rE   rF   r£   r<   r¤   rJ   r&   r=   r¥   r¡   Ztoolsr*   Zremove_tool)rA   Zinitial_lenr   r   r   Útest_toolmanager_removek  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'rO   F)Úwarn)rD   rE   rF   r£   r<   r¤   rJ   r=   r¥   r¡   Zget_toolr9   r   r*   r¦   )rA   rÎ   r   r   r   Útest_toolmanager_get_toolv  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 ToolsrO   )rD   rE   rF   r£   r<   r¤   rJ   r=   r¥   r¡   Zget_tool_keymapr*   Zupdate_keymapZraisesÚKeyError)rA   r   r   r   Útest_toolmanager_update_keymap‡  s    ÿrÔ   )/rU   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<   Únumpyr'   rD   r£   r7   r;   r>   rB   Úmarkr¨   rK   ZparametrizerZ   ri   r‚   r…   rh   ry   rŸ   r§   Úparamr³   rË   rÍ   rÐ   rÔ   r   r   r   r   Ú<module>   sˆ   $ÿ(	

 ÿ
0



ýÿ6 ÿÿ
 ïþ
!