a
    ü
þ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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 !d0d1d2dej*d3ed4g¡d5d6„ ƒZ+ej !d7g d8¢¡d9d:„ ƒZ,d;d<„ Z-d=d>„ Z.d?d@„ Z/dS )Aé    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   úl/var/www/html/stable-diffusion-webui/venv/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   é   é   é   )é
   é   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š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>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)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J ‚d S ©N)Ú
isinstancer   Úfigurer   r   r   r   r   Útest_canvas_ctor>   s    r9   c                   C   s   t  ¡ j ¡ dksJ ‚d S )Nz	image.png)Úpltr8   ÚcanvasZget_default_filenamer   r   r   r   Útest_get_default_filenameB   s    r<   c                  C   s.   t  ¡ } t| ƒ}t  | ¡ t  | j¡r*J ‚d S r6   )r:   r8   r   ÚcloseZfignum_existsÚnumber)Úfigr;   r   r   r   Útest_canvas_changeF   s    
r@   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ÚmessageÚgcf)ZmonkeypatchZrecr   r   r   Útest_non_gui_warningO   s    ÿ&ÿrI   c                  C   sD   t  ¡ \} }| j |¡ | jj|ks(J ‚|  ¡  | jjd u s@J ‚d S r6   )r:   rA   r;   Z
grab_mouseZmouse_grabberÚ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 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 )NÚfoor   )Úxr   r   r   Ú<lambda>   r   z.test_location_event_position.<locals>.<lambda>zx=foo +y=foo)r:   rA   r   r   rQ   Úintr7   ÚyÚreÚmatchÚformatZformat_xdataZformat_ydataZformat_coordZ	fmt_xdataZ	fmt_ydata)rQ   rT   r?   rK   r;   Úeventr   r   r   Útest_location_event_positionl   s$    
þrY   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g| j	 
d¡¢tj‘R Ž  ¡  td| jd
ƒ ¡  tˆ ƒdks J ‚d S )Nç      à?ZhelloÚcenterT)ZhaÚvaZpickerc                    s   | j jdksJ ‚ˆ  | ¡ d S )NÚa)Z
mouseeventÚkeyÚappend)rX   ©Zpicksr   r   Úhandle_pick‹   s    ztest_pick.<locals>.handle_pickZ
pick_eventZkey_press_eventr]   Úbutton_press_event©rZ   rZ   Zkey_release_eventr   )r:   r8   Útextr;   ÚdrawZmpl_connectr   Z_processr   ZtransFigureÚ	transformr   ÚLEFTr$   )r?   ra   r   r`   r   Ú	test_pick…   s    


ÿþrh   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ëÿï?çš™™™™™é?rb   Úbutton_release_eventr   g»½×Ùß|Û=)ÚrelÚabs)r:   rA   r&   Úget_navigate_moder	   r;   ÚzoomÚget_xlimÚget_ylimÚ	transDatarf   ÚastyperS   r   r   rg   Ú	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 u sNJ ‚| ¡  | ¡ d u sfJ ‚d S )Nr   r   )	r:   rA   Úplotr;   Z
widgetlockr	   rp   ro   Úpan)r?   rK   rz   r   r   r   Útest_widgetlock_zoompanÈ   s    
r„   Ú	plot_funcZimshowÚcontourfÚorientationÚverticalZ
horizontalztool,button,expectedrp   ©é   é   )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)rK   r‡   r†   r‰   rZ   rˆ   éÿÿÿÿrb   rl   rp   g333333Ã?©rn   )r:   rA   r%   r1   r2   ÚgetattrZcolorbarrK   Úget_navigaters   rf   rt   rS   r   r;   r	   rp   Z
press_zoomZ	drag_zoomZrelease_zoomrƒ   Ú	press_panÚdrag_panÚrelease_panr   r‘   rB   ry   )r…   r‡   ZtoolÚbuttonÚexpectedr?   rK   ÚdataZvmin0Zvmax0ZcollÚcbr   r‘   r{   r|   r}   r~   r   r€   rz   r   r   r   Útest_interactive_colorbarÓ   sT    ÿÿÿÿÿÿ






r   c                  C   s˜   t jttd dtjd< W d   ƒ n1 s.0    Y  t ¡ } |  ¡ d u sPJ ‚| jj	j
j d¡ |  ¡ dksrJ ‚| jj	j
j d¡ |  ¡ dks”J ‚d S )N©rV   ÚtoolmanagerÚtoolbarrp   ri   rƒ   ZPAN)rB   rC   rD   Ú_EXPECTED_WARNING_TOOLMANAGERr:   ÚrcParamsZgcaro   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¾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   rK   r   r   r   r   0  r   ztest_draw.<locals>.<listcomp>c                 S   s   g | ]}|  ¡ ‘qS r   r©   r«   r   r   r   r   5  r   c                 S   s   g | ]}|  ¡ ‘qS r   r©   r«   r   r   r   r   6  r   g{®Gázt?)Zatol)Úmatplotlib.figurer   Zmatplotlib.backends.backend_aggr¨   rB   ZimportorskiprA   Zravelr;   re   Úzipr%   ZallcloseZ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³   rZ   r´   ©r   é	   )N)rZ   r³   r¶   rµ   )Nrc   r¶   r¶   )N©rk   ç      Ð?©gÃõ(\ÂÀg…ëQ¸@©g      @g     €&@)N©r³   r¹   r´   r»   )N)rk   ç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À   )rk   gÍÌÌÌÌÌì?©g¤p=
×£Àg¤p=
×£@rÃ   )rÀ   r¿   r´   )gìQ¸…ëÀg
×£p=
@)rQ   )r³   rj   r´   r¶   )rT   )rj   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    Úequalrc   rb   )r™   r^   rl   g{®Gáz”?r“   )r:   rA   r‚   r%   r1   r•   Z
set_aspectrs   rf   rt   rS   r   r;   r   rg   r	   rƒ   r–   r—   r˜   Útuplerq   rB   ry   rr   )r^   ZmouseendZexpectedxlimZexpectedylimr?   rK   Z
mousestartZsstartÚsendr   r€   rz   r   r   r   Útest_interactive_pan?  s<    
ÿÿþÿÿþ



rÉ   c                  C   s¨   t jttd dtjd< W d   ƒ n1 s.0    Y  t ¡ } t| jj	j
jƒ}d| jj	j
jv sdJ ‚| jj	j
 d¡ t| jj	j
jƒ|d ksJ ‚d| jj	j
jvs¤J ‚d S )Nrž   rŸ   r    Úforwardr   )rB   rC   rD   r¡   r:   r¢   rH   r$   r;   r£   rŸ   ZtoolsZ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 d   ƒ n1 s.0    Y  t ¡ } | jjj	 
d¡}t|tƒs^J ‚| jjj	 
|¡|u svJ ‚t jtdd( | jjj	 
d¡d u sžJ ‚W d   ƒ n1 s²0    Y  | jjj	j
dddd u sØJ ‚t jtdd* | jjj	 d¡d u sJ ‚W d   ƒ n1 s0    Y  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   Útest_toolmanager_get_tool€  s    (ÿ6ÿrÎ   c                  C   sö   t jttd dtjd< W d   ƒ n1 s.0    Y  t ¡ } d| jjj	 
d¡v sXJ ‚t jtdd" | jjj	 dd¡ W d   ƒ n1 sŽ0    Y  | jjj	 
d¡dgks²J ‚t jtdd" | jjj	 d	d¡ W d   ƒ n1 sè0    Y  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_keymapZupdate_keymapZraisesÚKeyError)r?   r   r   r   Útest_toolmanager_update_keymap‘  s    (ÿ0rÒ   )0rU   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%   rB   r¡   r5   r9   r<   r@   Úmarkr¦   rI   rL   ZparametrizerY   rh   r   r„   rg   rx   r   r¥   Úparamr±   rÉ   rË   rÎ   rÒ   r   r   r   r   Ú<module>   sb   $ÿ(	


ÿ
0



ýÿ6ÿÿ
 þ
!