o
    iL*                     @   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 d dl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dgd dgdgd 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#d*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dddg d4fd%e#g d5dd"d1g d2fd%gd6d7 Z&d8d9 Z'ej !d:g d;ej !d<g d=d>d? Z(d@dA Z)dS )B    )
namedtupleN)assert_allclose)image_comparison)MouseButton)AnchoredOffsetboxAnnotationBboxDrawingAreaOffsetImageTextArea_get_packed_offsets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 r=   Z/var/www/edux/Edux_v2/venv/lib/python3.10/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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drawstaleclip_childrenr5   r=   r=   r>   test_offsetbox_clip_children6   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   )
zupper rightz
upper leftz
lower leftzlower rightrightzcenter leftzcenter rightzlower centerzupper centerr   r   )r#   r$   )r+   r,   r   r   r2   r@   rA   )codesr6   r7   r9   coder<   r=   r=   r>   test_offsetbox_loc_codes[   s"   
rO   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)ncolmode)r+   r,   plotlegendtight_layout)r6   r7   d1d2r=   r=   r>   test_expand_with_tight_layoutp   s   rY   wd_list)   r*   rE   )皙?r*   r   total)   r   r   Nsep)r^   r*   r   r_   rS   )rQ   fixedequalc                 C   s   t | |||d d S )NrS   )r   )rZ   r]   r`   rS   r=   r=   r>   test_get_packed_offsets}   s   rd   _paramszwd_list, total, sep, expected)rE   r   r*   r   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`   ri   resultr=   r=   r>   test_get_packed_offsets_fixed      	rn   )r\   r   )r   g??)r   rG   rJ   )r   g      @rE   c                 C   rj   )NrQ   rc   r   r*   rk   rl   r=   r=   r>   test_get_packed_offsets_expand   ro   rq   )rf   rh   rg   rH   )r   r   rF   )rf   rh   rg   r   r   )r   r   r*   r   )rr   rg   )g?r   c                 C   rj   )Nrb   rc   r   r*   rk   rl   r=   r=   r>   test_get_packed_offsets_equal   s   rs   c                   C   sF   t t tdgd d d dd W d    d S 1 sw   Y  d S )Nrg   rE   rb   )r]   r`   rS   )pytestraises
ValueErrorr   r=   r=   r=   r>   1test_get_packed_offsets_equal_total_none_sep_none   s   "rw   
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     |j||tj t dkr d j|ksJ |dd |dd |j     |j||tj t dksJ d S )NrA   rG   r   r   )r   ry   )rG   rG   )r   r   rz   u   ■fontsize)	textpropsFzUnknown picking child type r!   )r{   T
pick_eventc                    s
     | S )N)append)eventcallsr=   r>   <lambda>   s   
 ztest_picking.<locals>.<lambda>r~   r   H   r}   r*   r_   )r   r2   r-   r.   nponesr	   r
   r+   r,   r   
set_pickerr@   mpl_connectr1   transform_pointdpirA   clearbutton_press_eventr   LEFTlenartistr3   r4   )	rx   r{   picking_childimr6   r7   abxyr=   r   r>   test_picking   sF   







r   c               
   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!}|| | j  | j }||}	||}
g d"}t|	j|d#d$ t|
j|d#d$ ||}||}g d%}t|j|d#d$ t|j|d#d$ ||}||}g d&}t|j|d#d$ t|j|d#d$ t }| j|d'd( |d t |j}d)}t||d#d$ | j  |    | j  d S )*N)rF   rE   r   )figsizer   )r   r*   r   r*   
Annotation)rp   rp   )皙?r   z->)
arrowstyleFbaselineleft)xyxytext
arrowpropsclip_onvaha   r   Tr   )i       r   )gɿr   r   r|   )r    r   )xyboxxycoordsr{   box_alignmentr   r   rE   )zoom)r   g333333ӿ)r   K   zoffset pointsg333333?)r   r   r{   r%   r   )gffffft@gYn@g     0}@gfffffr@r   )atol)g1g      `@gfffffi@gd@)g     f@g      @g     l@g9W@tight)bbox_inches)i^  i  rF   )!r+   rcParamsupdatercParamsDefaultr,   axisannotatedictr   r-   Circler2   r   r	   r   randomrandry   axesr@   rA   get_rendererget_window_extentget_tightbboxr   extentsioBytesIOsavefigseekimreadshaperV   )r6   r7   an1r9   pab3r   ab6rendererbb1wbb1etarget1bb3wbb3etarget3bb6wbb6etarget6bufr   targetshaper=   r=   r>   test_annotationbbox_extents   sb   














r   )*collectionsr   r   numpyr   numpy.testingr   rt   matplotlib.testing.decoratorsr   matplotlib.pyplotpyplotr+   matplotlib.patchespatchesr-   matplotlib.lineslinesr/   matplotlib.backend_basesr   matplotlib.offsetboxr   r   r   r	   r
   r   r?   rD   rO   rY   markparametrizerd   _Paramsrn   rq   rs   rw   r   r   r=   r=   r=   r>   <module>   s     
"%
	






0