o
    i`=                     @   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	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 Z0ej'(dFdGdHgdIdJ Z1dKdL Z2dMdN Z3ej'(dOg dPdQdR Z4dSdT Z5dUdV Z6dWdX Z7e	 dYdZ Z8e
d[gddBdCd\d] Z9d^d_ Z:dS )`    )
namedtupleN)assert_allclose)check_figures_equalimage_comparison)MouseButton
MouseEvent)AnchoredOffsetboxAnnotationBboxAnchoredTextDrawingAreaHPacker	OffsetBoxOffsetImage	PaddedBoxTextAreaVPacker_get_packed_offsetsZoffsetbox_clippingT)remove_textc               	   C   s   t  \} }d}t||dd}|jsJ 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   clip_childrenmpatches	RectanglemlinesLine2Dr   	transAxes
add_artistset_xlimset_ylimfigaxsizedabglineanchored_box r>   n/var/www/html/eduruby.in/lip-sync/lip-sync-env/lib/python3.10/site-packages/matplotlib/tests/test_offsetbox.pytest_offsetbox_clipping   s6   	

"
	


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rUJ d|_| js]J d S )Nr   Tr   r   r   r   r   r   r   r   r   r   r    r!   r#   r$   Fr%   r&   )r+   r,   r   r.   r/   r0   r1   r   r2   r3   canvasdrawstaler-   r6   r>   r>   r?   test_offsetbox_clip_children7   s8   
"
	



rD   c                  C   s^   ddddddddd	d
d
} t  \}}tdd}| D ]}t||d}|| q|j  d S )Nr*   r                     	   r    )
upper right
upper leftz
lower leftlower rightrightcenter leftcenter rightzlower centerzupper centerr#   r   )r'   r(   )r+   r,   r   r   r3   rA   rB   )codesr7   r8   r:   coder=   r>   r>   r?   test_offsetbox_loc_codes\   s"   
rT   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)r7   r8   Zd1Zd2r>   r>   r?   test_expand_with_tight_layoutq   s   rY   widths   )r[   r[   r[   皙?total)   r   r   Nsep)r^   r*   r   r_   rW   )rV   fixedequalc                 C   s   t | |||d d S )NrW   )r   )rZ   r]   r`   rW   r>   r>   r?   test_get_packed_offsets~   s   rd   _Paramszwd_list, total, sep, expectedzwidths, total, sep, expected)rE   r*   r   r*   rJ   )r   rF   rH   )r]   r`   expectedr    rG   c                 C   :   t | ||dd}|d |d ksJ t|d |d  d S )Nra   rc   r   r*   r   r   rZ   r]   r`   rf   resultr>   r>   r?   test_get_packed_offsets_fixed      	rk   )r\   r\   r\   )r   g??)r   rG   rJ   )r   g      @rE   c                 C   rg   )NrV   rc   r   r*   rh   ri   r>   r>   r?   test_get_packed_offsets_expand   rl   rn   )rE   r   r*   rH   )r   r   rF   )rE   r   r*   r   r   )r   r   r*   r   )r   r*   皙?c                 C   rg   )Nrb   rc   r   r*   rh   ri   r>   r>   r?   test_get_packed_offsets_equal   s   
rp   c                   C   sD   t t tg dd d dd W d    d S 1 sw   Y  d S )N)r*   r*   r*   rb   )r]   r`   rW   )pytestZraises
ValueErrorr   r>   r>   r>   r?   1test_get_packed_offsets_equal_total_none_sep_none   s   "rs   
child_type)rB   imagetext	boxcoords)axes fractionaxes pixelsaxes pointsdatac           	         s  | dkrt dd}|tjddddd n&| dkr(td}d|d< t|}n| d	kr5td
ddid}n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r|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 )NrB   rG   r   r   )r   ru   )rG   rG   )r   r   rv   u   ■Zfontsize)Z	textpropsFzUnknown picking child type r%   )rw   TZ
pick_eventc                    s
     | S )N)append)eventZcallsr>   r?   <lambda>   s   
 ztest_picking.<locals>.<lambda>rz   r   H   ry   Zbutton_press_eventr*   r_   )r   r3   r.   r/   npZonesr   r   r+   r,   r	   Z
set_pickerrA   Zmpl_connectr2   Ztransform_pointdpirB   clearr   r   LEFT_processlenZartistr4   r5   )	rt   rw   Zpicking_childimr7   r8   abxyr>   r~   r?   test_picking   sR   







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 textrP   ro   haleft)r'   r)   propr#   rQ   rO   )r+   r,   r
   r3   )r7   r8   text0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)rF   rE   r   )Zfigsizer   )r   r*   r   r*   Z
Annotation)rm   rm   )皙?r   ->)
arrowstyleFbaseliner   )ZxyZxytext
arrowpropsZclip_onvar      r   Tr   )i       r   皙ɿr   r{   rx   r$   r   xyboxxycoordsrw   Zbox_alignmentr   r    rE   )Zzoom)r   g333333ӿ)r   K   zoffset points333333?)r   r   rw   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  rF   )r+   ZrcParamsupdateZrcParamsDefaultr,   Zaxisannotatedictr   r.   ZCircler3   r	   r   r   randomZrandru   Zaxesgetattrr   ZextentsioBytesIOZsavefigseekZimreadshaperA   rB   rX   )r   r7   r8   Zan1r:   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s"J |d dks*J d S )Nr   r   Tr   r   )r   gffffff?)r   relposr   r   r{   rx   r   r   r   )r   r	   r   )r:   r   r   r>   r>   r?   test_arrowprops_copiedC  s   
r   align)r   bottomtopr   rO   r#   c                 C   s  t jdd}|j }d\}}d\}}t||}t||}t||g| d}	|	| |	|}
|	|
|\}}t	|
j
dd|| t||f | dv rMd}n| dv rV|| }n
| d	kr`|| d
 }t	dd |	 D ||| f|| |fg t||g| d}|| ||}
||
|\}}t	|
j
dt|| t|||| f | dv rd}n| dv r|| }n
| d	kr|| d
 }t	dd | D || |f||| fg d S )Nr   )r   )r    r   )r   <   )childrenr   r   )r   r   r   )rO   r   r#   r   c                 S      g | ]}|  qS r>   
get_offset.0r(   r>   r>   r?   
<listcomp>h      z test_packers.<locals>.<listcomp>c                 S   r   r>   r   r   r>   r>   r?   r   z  r   )r+   ZfigurerA   Zget_rendererr   r   rB   Zget_bboxr   r   ZboundsmaxZget_childrenr   )r   r7   rendererx1y1Zx2y2r1r2ZhpackerZbboxZpxpyZy_heightZvpackerZx_heightr>   r>   r?   test_packersM  sD   







&
r   c                  C   s>   t  \} }tdd}t|ddidd}|| |   d S )NfoorM   r   rT)patch_attrs
draw_frame)r+   r,   r
   r   r3   Zdraw_without_rendering)r7   r8   atpbr>   r>   r?   test_paddedbox_default_values~  s
   

r   c                  C   sx   t tddddddddd} | jdksJ | jdksJ t tdddddddddd	d
} | jdks3J | jd	ks:J d S )Nr   r   Tr   r%   r{   )r   )r   g?rx   )r   r   rw   )r	   r   ZxyannZ	anncoords)r   r>   r>   r?   test_annotationbbox_properties  s   r   c                  C   sX   t d} |  dksJ |  rJ | d | d |  dks$J |  s*J d S )NFooBarT)r   Zget_textZget_multilinebaselineset_textZset_multilinebaseline)tar>   r>   r?   test_textarea_properties  s   

r   c                 C   sH   |  }tdd}|| |   }tdd}|| |jd d S )Nr   rM   r   )Zadd_subplotr
   r3   txtr   )Zfig_testZfig_refZax_refr   Zax_testr   r>   r>   r?   test_textarea_set_text  s   



r   zpaddedbox.pngc                  C   s   t  \} }td}t|dddidd}td|d}|| td	}t|d
ddid}td|d}|| td}t|ddd}td|d}|| d S )Nr   rG   r   r   T)r)   r   r   rM   )r(   barr    b)r)   r   rL   Zfoobar   )r)   r   rN   )r+   r,   r   r   r   r3   )r7   r8   r   r   r   r>   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   rA   r   )r7   r8   Zanr>   r>   r?   test_remove_draggable  s
   
r   );collectionsr   r   numpyr   Znumpy.testingr   rq   Zmatplotlib.testing.decoratorsr   r   Zmatplotlib.pyplotZpyplotr+   Zmatplotlib.patchesZpatchesr.   Zmatplotlib.lineslinesr0   Zmatplotlib.backend_basesr   r   Zmatplotlib.offsetboxr   r	   r
   r   r   r   r   r   r   r   r   r@   rD   rT   rY   markZparametrizerd   re   rk   rn   rp   rs   r   r   r   r   r   r   r   r   r   r   r   r   r>   r>   r>   r?   <module>   s    4
#%
	


	2

:

/	

