o
    Gf`=                     @   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
   Z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=   ?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.   r/   r0   r   r1   r2   canvasdrawZstaler,   r5   r=   r=   r>   test_offsetbox_clip_children7   s8   
"
	



rB   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   r2   r@   rA   )Zcodesr6   r7   r9   coder<   r=   r=   r>   test_offsetbox_loc_codes\   s"   
rQ   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)Zlabelzseries 2expand)Zncolsmode)r*   r+   ZplotZlegendtight_layout)r6   r7   Zd1Zd2r=   r=   r>   test_expand_with_tight_layoutq   s   rU   widths   )rW   rW   rW   皙?total)   r   r   Nsep)rZ   r)   r   r[   rS   )rR   fixedequalc                 C   s   t | |||d d S )NrS   )r   )rV   rY   r\   rS   r=   r=   r>   test_get_packed_offsets~   s   r`   _Paramszwd_list, total, sep, expectedzwidths, total, sep, expected)rC   r)   r   r)   rH   )r   rD   rF   )rY   r\   expectedr    rE   c                 C   :   t | ||dd}|d |d ksJ t|d |d  d S )Nr]   r_   r   r)   r   r   rV   rY   r\   rb   resultr=   r=   r>   test_get_packed_offsets_fixed      	rg   )rX   rX   rX   )r   g??)r   rE   rH   )r   g      @rC   c                 C   rc   )NrR   r_   r   r)   rd   re   r=   r=   r>   test_get_packed_offsets_expand   rh   rj   )rC   r   r)   rF   )r   r   rD   )rC   r   r)   r   r   )r   r   r)   r   )r   r)   皙?c                 C   rc   )Nr^   r_   r   r)   rd   re   r=   r=   r>   test_get_packed_offsets_equal   s   
rl   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)   r^   )rY   r\   rS   )pytestZraises
ValueErrorr   r=   r=   r=   r>   1test_get_packed_offsets_equal_total_none_sep_none   s   "ro   
child_type)rA   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 )NrA   rE   r   r   )r   rq   )rE   rE   )r   r   rr   u   ■Zfontsize)Z	textpropsFzUnknown picking child type r$   )rs   TZ
pick_eventc                    s
     | S )N)append)ZeventZcallsr=   r>   <lambda>   s   
 ztest_picking.<locals>.<lambda>rv   r   H   ru   Zbutton_press_eventr)   r[   )r   r2   r-   r.   npZonesr   r   r*   r+   r	   Z
set_pickerr@   Zmpl_connectr1   Ztransform_pointdpirA   clearr   r   ZLEFT_processlenZartistr3   r4   )	rp   rs   Zpicking_childimr6   r7   abxyr=   ry   r>   test_picking   sR   







r   zanchoredtext_align.pngZmpl20)r   Z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 textrN   rk   haleft)r&   r(   Zpropr"   rO   rM   )r*   r+   r
   r2   )r6   r7   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)rD   rC   r   )Zfigsizer}   )r   r)   r   r)   Z
Annotation)ri   ri   )皙?r   ->)
arrowstyleFbaseliner   )ZxyZxytext
arrowpropsZclip_onZvar      r   Tr   )i       r   皙ɿr   rw   rt   r#   r   xyboxxycoordsrs   Zbox_alignmentr   r    rC   )Zzoom)r   g333333ӿ)r   K   zoffset points333333?)r   r   rs   r(   r   Z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Circler2   r	   r   r|   ZrandomZrandrq   Zaxesgetattrr   ZextentsioBytesIOZsavefigseekZimreadshaper@   rA   rT   )r   r6   r7   Zan1r9   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   rw   rt   r   r   r   )r   r	   r   )r9   r   r   r=   r=   r>   test_arrowprops_copiedC  s   
r   align)r   bottomtopr   rM   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   )rM   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figurer@   Zget_rendererr   r   rA   Zget_bboxr   r   ZboundsmaxZget_childrenr   )r   r6   ZrendererZx1Zy1Zx2Zy2Zr1Z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foorK   r   rT)patch_attrs
draw_frame)r*   r+   r
   r   r2   Zdraw_without_rendering)r6   r7   Z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$   rw   )r   )r   g?rt   )r   r   rs   )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   rK   r   )Zadd_subplotr
   r2   Z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   rE   r   r   T)r(   r   r   rK   )r'   Zbarr    b)r(   r   rJ   Zfoobar   )r(   r   rL   )r*   r+   r   r   r   r2   )r6   r7   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   r@   r   )r6   r7   Zanr=   r=   r>   test_remove_draggable  s
   
r   );collectionsr   r   Znumpyr|   Znumpy.testingr   rm   Zmatplotlib.testing.decoratorsr   r   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   rQ   rU   ZmarkZparametrizer`   ra   rg   rj   rl   ro   r   r   r   r   r   r   r   r   r   r   r   r   r=   r=   r=   r>   <module>   s    4
#%
	


	2

:

/	

