o
    li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VPacker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clipr   r   #CCCCCCNoner   	facecolor	edgecolor	linewidth      ?      ?   black
   colorr   center        Fr   r   locchildpadframeonbbox_to_anchorbbox_transform	borderpad)r      )pltsubplotsr
   mpatches	RectanglemlinesLine2Dr   	transAxes
add_artistset_xlimset_ylimfigaxsizedabglineanchored_box rC   ]/home/ubuntu/SoloSpeech/.venv/lib/python3.10/site-packages/matplotlib/tests/test_offsetbox.pytest_offsetbox_clipping   s4   	
"
	


rE   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(   )r1   r2   r
   r3   r4   r5   r6   r   r7   r8   canvasdrawstaleclip_childrenr;   rC   rC   rD   test_offsetbox_clip_children6   s8   
"
	



rJ   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 )Nr0   r                      	   r"   )
zupper right
upper leftz
lower leftzlower rightrightcenter leftcenter rightzlower centerzupper centerr%   r   )r)   r*   )r1   r2   r
   r   r8   rF   rG   )codesr<   r=   r?   coderB   rC   rC   rD   test_offsetbox_loc_codes[   s"   
rX   c                  C   sR   t  \} }ddg}ddg}|j|dd |j|dd |jddd |   d S )Nr0   r    zseries 1)labelzseries 2expand)ncolsmode)r1   r2   plotlegendtight_layout)r<   r=   d1d2rC   rC   rD   test_expand_with_tight_layoutp   s   rb   widths   )rd   rd   rd   皙?total)   r   r   Nsep)rg   r0   r   rh   r\   )rZ   fixedequalc                 C   s   t | |||d d S )Nr\   )r   )rc   rf   ri   r\   rC   rC   rD   test_get_packed_offsets}   s   rm   _paramszwd_list, total, sep, expectedzwidths, total, sep, expected)rK   r0   r    r0   rP   )r   rL   rN   )rf   ri   expectedr"   rM   c                 C   :   t | ||dd}|d |d ksJ t|d |d  d S )Nrj   rl   r   r0   r   r   rc   rf   ri   ro   resultrC   rC   rD   test_get_packed_offsets_fixed      	rt   )re   re   re   )r   g??)r   rM   rP   )r   g      @rK   c                 C   rp   )NrZ   rl   r   r0   rq   rr   rC   rC   rD   test_get_packed_offsets_expand   ru   rw   )rK   r    r0   rN   )r   r    rL   )rK   r    r0   r   r    )r   r   r0   r   )r   r0   皙?c                 C   rp   )Nrk   rl   r   r0   rq   rr   rC   rC   rD   test_get_packed_offsets_equal   s   
ry   c                   C   sD   t t tg dd d dd W d    d S 1 sw   Y  d S )N)r0   r0   r0   rk   )rf   ri   r\   )pytestraises
ValueErrorr   rC   rC   rC   rD   1test_get_packed_offsets_equal_total_none_sep_none   s   "r}   
child_type)rG   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 )NrG   rM   r   r   )r   r   )rM   rM   )r    r    r   u   ■fontsize)	textpropsFzUnknown picking child type r'   )r   T
pick_eventc                    s
     | S )N)append)eventcallsrC   rD   <lambda>   s   
 ztest_picking.<locals>.<lambda>r   r   H   r   button_press_eventr0   rh   )r
   r8   r3   r4   nponesr   r   r1   r2   r   
set_pickerrF   mpl_connectr7   transform_pointdpirG   clearr   r   LEFT_processlenartistr9   r:   )	r~   r   picking_childimr<   r=   abxyrC   r   rD   test_picking   sR   







r   zanchoredtext_align.png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 textrT   rx   haleft)r)   r+   propr%   rU   rS   )r1   r2   r	   r8   )r<   r=   text0text1text2rC   rC   rD   &test_anchoredtext_horizontal_alignment   s   

r   extent_kindwindow_extent	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)rL   rK   r   )figsizer   )r   r0   r   r0   
Annotation)rv   rv   )皙?r   ->)
arrowstyleFbaseliner   )xyxytext
arrowpropsclip_onvar      r   Tr   )i       r   gɿr   r   r   r&   r   xyboxxycoordsr   box_alignmentr   r"   rK   )zoom)r   g333333ӿ)r   K   zoffset points333333?)r   r   r   r+   r   get_)gffffft@gYn@g     0}@gfffffr@r    )atol)g1g      `@gfffffi@gd@)g     f@g      @g     l@g9W@tight)bbox_inches)i^  i  rL   )r1   rcParamsupdatercParamsDefaultr2   axisannotatedictr
   r3   Circler8   r   r   r   randomrandr   axesgetattrr   extentsioBytesIOsavefigseekimreadshaperF   rG   r_   )r   r<   r=   an1r?   pab3r   ab6bb1target1bb3target3bb6target6bufr   targetshaperC   rC   rD   test_annotationbbox_extents  sR   






r   c                   C   s   t ddjdks
J d S )N*   )zorder)r   r   rC   rC   rC   rD   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   r   r   r   r   )r
   r   r   )r?   r   r   rC   rC   rD   test_arrowprops_copiedB  s   
r   align)r   bottomtopr   rS   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   )rS   r   r%   r    c                 S      g | ]}|  qS rC   
get_offset.0r*   rC   rC   rD   
<listcomp>g      z test_packers.<locals>.<listcomp>c                 S   r   rC   r   r   rC   rC   rD   r   y  r   )r1   figurerF   get_rendererr
   r   rG   get_bboxr   r   boundsmaxget_childrenr   )r   r<   rendererx1y1x2y2r1r2hpackerbboxpxpyy_heightvpackerx_heightrC   rC   rD   test_packersL  sD   







&
r  c                  C   s>   t  \} }tdd}t|ddidd}|| |   d S )NfoorR   r   rT)patch_attrs
draw_frame)r1   r2   r	   r   r8   draw_without_rendering)r<   r=   atpbrC   rC   rD   test_paddedbox}  s
   

r  c                  C   sB   t  \} }|dd}|d |  td| jdd  d S )Nr  r'   Tbutton_release_eventr0   )r1   r2   r   	draggableremover   rF   r   )r<   r=   anrC   rC   rD   test_remove_draggable  s
   
r  )6collectionsr   r   numpyr   numpy.testingr   rz   matplotlib.testing.decoratorsr   matplotlib.pyplotpyplotr1   matplotlib.patchespatchesr3   matplotlib.lineslinesr5   matplotlib.backend_basesr   r   matplotlib.offsetboxr   r   r	   r
   r   r   r   r   r   r   r   rE   rJ   rX   rb   markparametrizerm   _Paramsrt   rw   ry   r}   r   r   r   r   r   r  r  r  rC   rC   rC   rD   <module>   s    4
"%
	


	2

:

/	