a
    s=icd4  ã                   @   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g d¢¡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 d,d-d.dej%d/ed0g¡d1d2„ ƒZ&ej d3g d4¢¡d5d6„ ƒZ'dS )7é    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   út/home/droni/.local/share/virtualenvs/DPS-5Je3_V2c/lib/python3.9/site-packages/matplotlib/tests/test_backend_bases.pyÚ
<listcomp>   ó    z&test_uses_per_path.<locals>.<listcomp>é   é   c                    s   g | ]}ˆ   |¡ ¡  ¡ ‘qS r   )ÚrotateZ
get_matrixÚcopyr   ©Úidr   r   r      r   é   é   é   )é
   é   Ú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šJ ‚d S )Nc                 S   s   g | ]\}}}}}|‘qS r   r   )r   ZxoZyoZpath_idZgc0ZrgbFacer   r   r   r      r   z5test_uses_per_path.<locals>.check.<locals>.<listcomp>FÚscreen)Ú	minlengthr   )r	   ÚlistZ_iter_collection_raw_pathsZnew_gcZ_iter_collectionÚrangeÚlenr   ZAffineDeltaTransformZ_iter_collection_uses_per_pathÚnpZbincountÚsetÚissubset)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-   r1   Únr   r   r   Útest_uses_per_path   s(    ÿr6   c                   C   s   t tƒ jtƒsJ ‚d S ©N)Ú
isinstancer   Úfigurer   r   r   r   r   Útest_canvas_ctor7   s    r:   c                   C   s   t  ¡ j ¡ dksJ ‚d S )Nz	image.png)Úpltr9   ÚcanvasZget_default_filenamer   r   r   r   Útest_get_default_filename;   s    r=   c                  C   s.   t  ¡ } t| ƒ}t  | ¡ t  | j¡r*J ‚d S r7   )r;   r9   r   ÚcloseZfignum_existsÚnumber)Úfigr<   r   r   r   Útest_canvas_change?   s    
rA   Zpdfc                 C   sÌ   t  ¡  |  dd¡ t t¡>}t  ¡  t|ƒdks8J ‚dt|d j	ƒv sNJ ‚W d   ƒ n1 sb0    Y  t t¡B}t  
¡  ¡  t|ƒdks”J ‚dt|d j	ƒv sªJ ‚W d   ƒ n1 s¾0    Y  d S )NZDISPLAYz:999r   z=Matplotlib is currently using pdf, which is a non-GUI backendr   )r;   ÚsubplotsZsetenvÚpytestÚwarnsÚUserWarningÚshowr&   ÚstrÚmessageZgcf)ZmonkeypatchZrecr   r   r   Útest_non_gui_warningH   s    ÿ&ÿrI   zx, y))é*   é   )NrJ   )NN)éÈ   gq=
×£ Y@)g     ¸i@g       @c                 C   sþ   t  ¡ \}}t|ƒ}td|| |ƒ}| d u r:|jd u s\J ‚n"|jt| ƒksLJ ‚t|jtƒs\J ‚|d u rt|jd u s–J ‚n"|jt|ƒks†J ‚t|jtƒs–J ‚| d urú|d urút 	d 
| | ¡| |¡¡| | |¡¡sÒJ ‚dd„  |_|_t 	d| | |¡¡súJ ‚d S )NZ
test_eventz
x={} +y={}c                 S   s   dS )NZfoor   )Úxr   r   r   Ú<lambda>p   r   z.test_location_event_position.<locals>.<lambda>zx=foo +y=foo)r;   rB   r   r   rM   Úintr8   ÚyÚreÚmatchÚformatZformat_xdataZformat_ydataZformat_coordZ	fmt_xdataZ	fmt_ydata)rM   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g| j d
¡¢t	j
‘R Ž }| jj |j|¡ tˆ ƒdks†J ‚d S )Nç      à?ZhelloÚcenterT)ZhaÚvaZpickerZ
pick_eventc                    s
   ˆ   | ¡S r7   )Úappend)rU   ©Zpicksr   r   rN   y   r   ztest_pick.<locals>.<lambda>Úbutton_press_event©rW   rW   r   )r;   r9   Útextr<   ÚdrawZmpl_connectr   ZtransFigureÚ	transformr   ÚLEFTÚ	callbacksÚprocessÚnamer&   )r@   Ústart_eventr   r[   r   Ú	test_pickt   s    
ÿ
ÿþrf   c                  C   sÚ  t  ¡ \} }|jdd | ¡ d u s(J ‚t| jƒ}| ¡  | ¡ dksJJ ‚| ¡ }| ¡ }d}d}|j	 
|¡ t¡}|j	 
|¡ t¡}td| jg|¢tj‘R Ž }	| jj |	j|	¡ td| jg|¢tj‘R Ž }
| jj |
j|
¡ | ¡ |	j|
jfksöJ ‚| ¡ |	j|
jfksJ ‚td| jg|¢tj‘R Ž }	| jj |	j|	¡ td| jg|¢tj‘R Ž }
| jj |
j|
¡ | ¡ tj|dd	d
ks†J ‚| ¡ tj|dd	d
ks¤J ‚| ¡  | ¡ d u s¾J ‚| ¡ sÒ| ¡ rÖJ ‚d S )NZlogit)ZxscaleÚZOOM)gíµ ÷Æ°>çš™™™™™¹?)gwJëÿï?çš™™™™™é?r\   Úbutton_release_eventr   g»½×Ùß|Û=)ÚrelÚabs)r;   rB   r(   Úget_navigate_moder   r<   ÚzoomÚget_xlimÚget_ylimÚ	transDatar`   ÚastyperO   r   r   ra   rb   rc   rd   ZxdataZydataÚRIGHTrC   Ú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 u sNJ ‚| ¡  | ¡ d u sfJ ‚d S )Nr   r   )	r;   rB   Úplotr<   Z
widgetlockr   rn   rm   Ú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^J ‚d S |j ¡ spJ ‚d\}}|df}|df}|d	kr¬|d d d
… }|d d d
… }|jj	 
|¡ t¡}|jj	 
|¡ t¡}td|jg|¢|‘R Ž }td|jg|¢|‘R Ž }t|jƒ}|dkr@| ¡  | |¡ | |¡ | |¡ n&| ¡  | |¡ | |¡ | |¡ |j|jftj|ddks†J ‚d S )Né   )r…   r   )r   r   )ÚvminÚvmax)rT   r   r€   r„   rW   r‚   éÿÿÿÿr\   rj   rn   g333333Ã?©rl   )r;   rB   r'   r2   r3   ÚgetattrZcolorbarrT   Úget_navigaterq   r`   rr   rO   r   r<   r   rn   Z
press_zoomZ	drag_zoomZrelease_zoomr}   Ú	press_panÚdrag_panÚrelease_panr‹   rŒ   rC   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 d   ƒ n1 s20    Y  t ¡ }| ¡ d u sTJ ‚|jjj	j
 d¡ | ¡ dksvJ ‚|jjj	j
 d¡ | ¡ dks˜J ‚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)rC   rD   rE   r;   ZrcParamsZgcarm   r9   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¾J ‚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   rT   r   r   r   r     r   ztest_draw.<locals>.<listcomp>c                 S   s   g | ]}|  ¡ ‘qS r   rŸ   r¡   r   r   r   r   "  r   c                 S   s   g | ]}|  ¡ ‘qS r   rŸ   r¡   r   r   r   r   #  r   g{®Gázt?)Zatol)Úmatplotlib.figurer   Zmatplotlib.backends.backend_aggrž   rC   ZimportorskiprB   Zravelr<   r_   Úzipr'   ZallcloseÚ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=
@)rM   )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(J ‚| d¡ d}|j |¡ 	t
¡}|j |¡ 	t
¡}td|jg|¢R tj| dœŽ}	td|jg|¢R tj| dœŽ}
t|jƒ}| ¡  | |	¡ | |
¡ | |
¡ t| ¡ ƒtj|ddksäJ ‚t| ¡ ƒtj|ddksJ ‚d S )	Nr   Úequalr]   r\   )r”   Úkeyrj   g{®Gáz”?rŽ   )r;   rB   r|   r'   r2   r   Z
set_aspectrq   r`   rr   rO   r   r<   r   ra   r   r}   r‘   r’   r“   Útuplero   rC   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'   rC   r6   r:   r=   rA   Úmarkrœ   rI   ZparametrizerV   rf   r{   r~   ra   rs   r˜   r›   Úparamr¨   rÁ   r   r   r   r   Ú<module>   sT    (	

ÿ
0



ýÿ6ÿÿ
 þ