a
    
d6                     @   s   d dl mZ d dlZd dlZd dlmZ d dlZd dlm	Z	 d dl
mZ d dlmZ d dlm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mZmZm Z m!Z! e	dgdd	d
d Z"dd Z#dd Z$dd Z%ej&'ddgg ddgddgfej&'ddej&'ddej&'dddd Z(eddZ)ej&'d e)g d!dd"d#g d$fd%e)g d!d&d"d&g d$fd%e)g d!d'd"d'g d$fd%gd(d) Z*ej&'d e)g d*ddd"g d+fd%e)g d!d&d"d&g d,fd%e)g d!d'd"d'g d-fd%gd.d/ Z+ej&'d e)g d0d1dd1g d2fd%e)g d3d4dd4g d5fd%e)g d6dd"d1g d2fd%gd7d8 Z,d9d: Z-ej&'d;g d<ej&'d=g d>d?d@ Z.e	dAgddBdCdDdE Z/ej&'dFdGdHgdIdJ Z0dKdL Z1dMdN Z2ej&'dOg dPdQdR Z3dSdT Z4dUdV Z5dS )W    )
namedtupleN)assert_allclose)image_comparison)MouseButton
MouseEvent)AnchoredOffsetboxAnnotationBboxAnchoredTextDrawingArea	OffsetBoxOffsetImage	PaddedBoxTextArea_get_packed_offsetsHPackerVPackerZoffsetbox_clippingT)remove_textc               	   C   s   t  \} }d}t||dd}tjd||dddd}tj| d	 |d
 g|d |d gddd}td|ddd|jdd}|	| |	| |	| |
d |d d S )Nd   TZclipr   r   #CCCCCCNoner   	facecolorZ	edgecolor	linewidth      ?      ?   black
   colorr   center        Fr   r   locchildpadZframeonZbbox_to_anchorZbbox_transformZ	borderpad)r      )pltsubplotsr
   mpatches	RectanglemlinesLine2Dr   	transAxes
add_artistset_xlimset_ylimfigaxsizedabglineanchored_box r<   h/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/matplotlib/tests/test_offsetbox.pytest_offsetbox_clipping   s4    	
"	



r>   c               	   C   s   t  \} }d}t||dd}tjd||dddd}tj| d	 |d
 g|d |d gddd}td|ddd|jdd}|	| |	| |	| | j
  | jrJ d|_| jsJ d S )Nr   Tr   r   r   r   r   r   r   r   r   r   r   r    r"   r#   Fr$   r%   )r*   r+   r
   r,   r-   r.   r/   r   r0   r1   canvasdrawstaleZclip_childrenr4   r<   r<   r=   test_offsetbox_clip_children6   s8    
"	




rB   c                  C   s^   ddddddddd	d
d
} t  \}}tdd}| D ]}t||d}|| q4|j  d S )Nr)   r                     	   r   )
zupper right
upper leftz
lower leftzlower rightrightcenter leftcenter rightzlower centerzupper centerr"   r   )r&   r'   )r*   r+   r
   r   r1   r?   r@   )codesr5   r6   r8   coder;   r<   r<   r=   test_offsetbox_loc_codes[   s"    
rP   c                  C   sR   t  \} }ddg}ddg}|j|dd |j|dd |jddd |   d S )Nr)   r   zseries 1)labelzseries 2expand)Zncolsmode)r*   r+   ZplotZlegendtight_layout)r5   r6   d1Zd2r<   r<   r=   test_expand_with_tight_layoutp   s    rV   widths   )rX   rX   rX   皙?total)   r   r   Nsep)r[   r)   r   r\   rS   )rR   fixedequalc                 C   s   t | |||d d S )NrS   )r   )rW   rZ   r]   rS   r<   r<   r=   test_get_packed_offsets}   s    ra   _paramszwd_list, total, sep, expectedzwidths, total, sep, expected)rC   r)   r   r)   rH   )r   rD   rF   )rZ   r]   expectedr   rE   c                 C   s:   t | ||dd}|d |d ks$J t|d |d  d S )Nr^   r`   r   r)   r   r   rW   rZ   r]   rc   resultr<   r<   r=   test_get_packed_offsets_fixed   s    	rg   )rY   rY   rY   )r   g??)r   rE   rH   )r   g      @rC   c                 C   s:   t | ||dd}|d |d ks$J t|d |d  d S )NrR   r`   r   r)   rd   re   r<   r<   r=   test_get_packed_offsets_expand   s    	ri   )rC   r   r)   rF   )r   r   rD   )rC   r   r)   r   r   )r   r   r)   r   )r   r)   皙?c                 C   s:   t | ||dd}|d |d ks$J t|d |d  d S )Nr_   r`   r   r)   rd   re   r<   r<   r=   test_get_packed_offsets_equal   s    
rk   c                   C   sB   t t$ tg dd d dd W d    n1 s40    Y  d S )N)r)   r)   r)   r_   )rZ   r]   rS   )pytestZraises
ValueErrorr   r<   r<   r<   r=   1test_get_packed_offsets_equal_total_none_sep_none   s    rn   
child_type)r@   imagetext	boxcoords)axes fractionaxes pixelsaxes pointsdatac           	         s  | dkr,t dd}|tjddddd nP| dkrPtd}d|d< t|}n,| d	krjtd
ddid}nds|J d|  t	 \}}t
|d|d}|d || g  |jd fdd |dkr|jd\}}|d|j d 7 }|d|j d 7 }n<|dkr0|jd\}}|d7 }|d7 }n|jd\}}|j     td|j||tj  t dkr d j|ksJ |dd |dd |j     td|j||tj  t dksJ d S )Nr@   rE   r   r   )r   rp   )rE   rE   )r   r   rq   u   ■Zfontsize)Z	textpropsFzUnknown picking child type r$   )rr   TZ
pick_eventc                    s
     | S )N)append)eventZcallsr<   r=   <lambda>       ztest_picking.<locals>.<lambda>ru   r   H   rt   Zbutton_press_eventr)   r\   )r
   r1   r,   r-   npZonesr   r   r*   r+   r   Z
set_pickerr?   Zmpl_connectr0   Ztransform_pointdpir@   clearr   r   LEFT_processlenZartistr2   r3   )	ro   rr   Zpicking_childimr5   r6   abxyr<   ry   r=   test_picking   sN    








"
r   zanchoredtext_align.pngZmpl20)r   stylec                  C   sj   t  \} }tdddddid}|| tdddddid}|| tddddd	id}|| d S )
Nztest
test long textrL   rj   haleft)r&   r(   propr"   rM   rK   )r*   r+   r	   r1   )r5   r6   Ztext0Ztext1Ztext2r<   r<   r=   &test_anchoredtext_horizontal_alignment   s    

r   extent_kindZwindow_extentZ	tightbboxc              
   C   s  t jt j t jddd\}}|g d |jdddtdd	d
ddd}tdddddd}t	
dd}|| t|ddgddddtdd	d}|| ttjdddd}||j_t|ddddd tdd	d!}|| t|d"|   }	g d#}
t|	j|
d$d% t|d"|   }g d&}t|j|d$d% t|d"|   }g d'}t|j|d$d% t }|j|d(d) |d t |j}d*}t||d$d% |j  |  |j  d S )+N)rD   rC   r   )Zfigsizer~   )r   r)   r   r)   Z
Annotation)rh   rh   )皙?r   ->)
arrowstyleFbaseliner   )ZxyZxytext
arrowpropsZclip_onvar      r   Tr   )i       r   gɿr   rv   rs   r#   r   xyboxxycoordsrr   Zbox_alignmentr   r   rC   )Zzoom)r   g333333ӿ)r   K   zoffset points333333?)r   r   rr   r(   r   get_)gffffft@gYn@g     0}@gfffffr@r   )Zatol)g1g      `@gfffffi@gd@)g     f@g      @g     l@g9W@Ztight)Zbbox_inches)i^  i  rD   )r*   ZrcParamsupdateZrcParamsDefaultr+   Zaxisannotatedictr
   r,   ZCircler1   r   r   r}   randomZrandrp   Zaxesgetattrr   ZextentsioBytesIOZsavefigseekZimreadshaper?   r@   rT   )r   r5   r6   Zan1r8   pZab3r   Zab6Zbb1Ztarget1Zbb3Ztarget3Zbb6Ztarget6bufr   Ztargetshaper<   r<   r=   test_annotationbbox_extents  sR    






r   c                   C   s   t ddjdksJ d S )N*   )zorder)r   r   r<   r<   r<   r=   test_zorder>  s    r   c               	   C   sX   t dddddd} ddd}t| ddgd	d
dd|d}|j|usDJ |d dksTJ d S )Nr   r   Tr   r   )r   gffffff?)r   relposr   r   rv   rs   r   r   r   )r
   r   r   )r8   r   r   r<   r<   r=   test_arrowprops_copiedB  s    
r   align)r   bottomtopr   rK   r"   c                 C   s  t jdd}|j }d\}}d\}}t||}t||}t||g| d}	|	| |	|}
|	|
|\}}t	|
j
dd|| t||f | dv rd}n&| dv r|| }n| d	kr|| d
 }t	dd |	 D ||| f|| |fg t||g| d}|| ||}
||
|\}}t	|
j
dt|| t|||| f | dv rVd}n*| dv rj|| }n| d	kr|| d
 }t	dd | D || |f||| fg d S )Nr|   )r~   )r   r   )r   <   )childrenr   r   )r   r   r   )rK   r   r"   r   c                 S   s   g | ]}|  qS r<   
get_offset.0r'   r<   r<   r=   
<listcomp>g  r{   z test_packers.<locals>.<listcomp>c                 S   s   g | ]}|  qS r<   r   r   r<   r<   r=   r   y  r{   )r*   figurer?   Zget_rendererr
   r   r@   Zget_bboxr   r   ZboundsmaxZget_childrenr   )r   r5   Zrendererx1y1Zx2y2Zr1Zr2ZhpackerZbboxZpxpyZy_heightZvpackerZx_heightr<   r<   r=   test_packersL  sD    







&



r   c                  C   s>   t  \} }tdd}t|ddidd}|| |   d S )NfoorJ   r   rT)Zpatch_attrsZ
draw_frame)r*   r+   r	   r   r1   Zdraw_without_rendering)r5   r6   atZpbr<   r<   r=   test_paddedbox}  s
    

r   c                  C   sB   t  \} }|dd}|d |  td| jdd  d S )Nr   r$   TZbutton_release_eventr)   )r*   r+   r   Z	draggableremover   r?   r   )r5   r6   Zanr<   r<   r=   test_remove_draggable  s
    
r   )6collectionsr   r   numpyr}   Znumpy.testingr   rl   Zmatplotlib.testing.decoratorsr   Zmatplotlib.pyplotZpyplotr*   Zmatplotlib.patchesZpatchesr,   Zmatplotlib.lineslinesr.   Zmatplotlib.backend_basesr   r   Zmatplotlib.offsetboxr   r   r	   r
   r   r   r   r   r   r   r   r>   rB   rP   rV   markZparametrizera   Z_Paramsrg   ri   rk   rn   r   r   r   r   r   r   r   r   r<   r<   r<   r=   <module>   s   4
"%	


	
2

:

/	