U
    d»{jd4  ã                   @   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
 d dlmZ d dlmZ d dlmZ d dlZd dl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#d.d/„ Z$ej d0d1d2dej%d3ed4�g¡d5d6„ ƒZ&ej d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIg¡dJdK„ ƒZ'dS )Lé    N)ÚpathÚ
transforms)ÚFigureCanvasBaseÚLocationEventÚMouseButtonÚ
MouseEventÚNavigationToolbar2ÚRendererBase©ÚFigure)Úneeds_pgf_xelatexc               	      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   úb/var/www/html/bwave/python/venv/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,   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_ctor7   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_filename;   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_change?   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ÚmessageZgcf)ZmonkeypatchZrecr   r   r   Útest_non_gui_warningH   s    ÿÿrH   zx, y)é*   é   )NrI   )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 )NZfoor   )Úxr   r   r   Ú<lambda>p   ó    z.test_location_event_position.<locals>.<lambda>zx=foo +y=foo)r:   rA   r   r   rL   r(   Úintr7   ÚyÚreÚmatchÚformatZformat_xdataZformat_ydataZformat_coordZ	fmt_xdataZ	fmt_ydata)rL   rP   r?   Úaxr;   Úeventr   r   r   Útest_location_event_position[   s$    
þrV   c                     sˆ   t  ¡ } | jddddddd� | j ¡  g ‰ | j d‡ fdd„¡ td	| jf| j d
¡t	j
fžŽ }| jj |j|¡ tˆ ƒdks„t‚d S )Nç      à?ZhelloÚcenterT)ZhaÚvaZpickerZ
pick_eventc                    s
   ˆ   | ¡S r6   )Úappend)rU   ©Zpicksr   r   rM   y   rN   ztest_pick.<locals>.<lambda>Úbutton_press_event©rW   rW   r   )r:   r8   Útextr;   ÚdrawZmpl_connectr   ZtransFigureÚ	transformr   ÚLEFTÚ	callbacksÚprocessÚnamer$   r(   )r?   Ústart_eventr   r[   r   Ú	test_pickt   s    
 ÿ
þrf   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ëÿï?çš™™™™™é?r\   Úbutton_release_eventr   g»½×Ùß|Û=)ÚrelÚabs)r:   rA   r&   Úget_navigate_moder(   r   r;   ÚzoomÚget_xlimÚget_ylimÚ	transDatar`   ÚastyperO   r   r   ra   rb   rc   rd   ZxdataZydataÚRIGHTrB   ÚapproxZget_autoscalex_onZget_autoscaley_on)r?   rT   ÚtbZxlim0Zylim0Úd0Úd1Ús0Ús1re   Ú
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   rn   rm   r(   Úpan)r?   rT   ru   r   r   r   Útest_widgetlock_zoompan±   s    
r~   Ú	plot_funcZimshowÚcontourfÚorientationÚverticalÚ
horizontalztool,button,expectedrn   ©é   é   )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)rT   r�   r€   r„   rW   r‚   éÿÿÿÿr\   rj   rn   g333333Ã?©rl   )r:   rA   r%   r1   r2   ÚgetattrZcolorbarrT   Úget_navigater(   rq   r`   rr   rO   r   r;   r   rn   Z
press_zoomZ	drag_zoomZrelease_zoomr}   Ú	press_panÚdrag_panÚrelease_panr‹   rŒ   rB   rt   )r   r�   ZtoolÚbuttonÚexpectedr?   rT   ÚdataZvmin0Zvmax0ZcollÚcbr‹   rŒ   rv   rw   rx   ry   re   rz   ru   r   r   r   Útest_interactive_colorbar¼   sT     ÿ ÿ ÿ ÿ






r˜   c               	   C   sˆ   d} t jt| d�� dtjd< W 5 Q R X t ¡ }| ¡ d ks@t‚|jj	j
j d¡ | ¡ dksbt‚|jj	j
j d¡ | ¡ dks„t‚d S )	Nzƒ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.)rR   ÚtoolmanagerZtoolbarrn   rg   r}   ZPAN)rB   rC   rD   r:   ZrcParamsZgcarm   r(   r8   r;   Úmanagerr™   Ztrigger_tool)Zexpected_warning_regexrT   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   rT   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ž   rB   ZimportorskiprA   Zravelr;   r_   Ú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¨   rW   r©   ©r   é	   )N)rW   r¨   r«   rª   )Nr]   r«   r«   )N©ri   ç      Ð?©gÃõ(\�ÂÀg…ëQ¸@©g      @g     €&@)N©r¨   r®   r©   r°   )N)ri   ç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µ   )ri   gÍÌÌÌÌÌì?©g¤p=
×£Àg¤p=
×£@r¸   )rµ   r´   r©   )gìQ¸…ëÀg
×£p=
@)rL   )r¨   rh   r©   r«   )rP   )rh   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   Úequalr]   r\   )r”   Úkeyrj   g{®Gáz”?rŽ   )r:   rA   r|   r%   r1   r�   r(   Z
set_aspectrq   r`   rr   rO   r   r;   r   ra   r   r}   r‘   r’   r“   Útuplero   rB   rt   rp   )r¼   ZmouseendZexpectedxlimZexpectedylimr?   rT   Z
mousestartZsstartÚsendre   rz   ru   r   r   r   Útest_interactive_pan,  s@    
 ÿÿþ ÿÿþ



r¿   )(rQ   Z
matplotlibr   r   Zmatplotlib.backend_basesr   r   r   r   r   r	   r¡   r   Zmatplotlib.testing._markersr   Zmatplotlib.pyplotZpyplotr:   Únumpyr%   rB   r5   r9   r<   r@   Úmarkrœ   rH   ZparametrizerV   rf   r{   r~   ra   rs   r˜   r›   Úparamr¦   r¿   r   r   r   r   Ú<module>   s|    (	

 ÿ
0



ýÿ6 ÿÿ
 ïþ