o
    g,                     @   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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)e	d@gddAdBdCdD Z*dEdF Z+dS )G    )
namedtupleN)assert_allclose)image_comparison)MouseButton)AnchoredOffsetboxAnnotationBboxAnchoredText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>   ]/home/ubuntu/cloudmapper/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/   r0   r1   r   r2   r3   canvasdrawstaleclip_childrenr6   r>   r>   r?   test_offsetbox_clip_children6   s8   
"
	



rE   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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"   
rR   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)r7   r8   d1d2r>   r>   r?   test_expand_with_tight_layoutp   s   r\   wd_list)   r+   rF   )皙?r+   r   total)   r   r   Nsep)ra   r+   r   rb   rV   )rT   fixedequalc                 C   s   t | |||d d S )NrV   )r   )r]   r`   rc   rV   r>   r>   r?   test_get_packed_offsets}   s   rg   _paramszwd_list, total, sep, expected)rF   r   r+   r   r   r   r+   rK   )r   rG   rI   )r`   rc   expectedr   rH   c                 C   :   t | ||dd}|d |d ksJ t|d |d  d S )Nrd   rf   r   r+   r   r   r]   r`   rc   rl   resultr>   r>   r?   test_get_packed_offsets_fixed      	rq   )r_   r   )r   g??)r   rH   rK   )r   g      @rF   c                 C   rm   )NrT   rf   r   r+   rn   ro   r>   r>   r?   test_get_packed_offsets_expand   rr   rt   )ri   rk   rj   rI   )r   r   rG   )ri   rk   rj   r   r   )r   r   r+   r   )ru   rj   )皙?r   c                 C   rm   )Nre   rf   r   r+   rn   ro   r>   r>   r?   test_get_packed_offsets_equal   s   rw   c                   C   sF   t t tdgd d d dd W d    d S 1 sw   Y  d S )Nrj   rF   re   )r`   rc   rV   )pytestraises
ValueErrorr   r>   r>   r>   r?   1test_get_packed_offsets_equal_total_none_sep_none   s   "r{   
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     |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 )NrB   rH   r   r   )r   r}   )rH   rH   )r   r   r~   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+   rb   )r	   r3   r.   r/   nponesr
   r   r,   r-   r   
set_pickerrA   mpl_connectr2   transform_pointdpirB   clearbutton_press_eventr   LEFTlenartistr4   r5   )	r|   r   picking_childimr7   r8   abxyr>   r   r?   test_picking   sF   







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 textrN   rv   haleft)r$   r&   propr    rO   rM   )r,   r-   r   r3   )r7   r8   text0text1text2r>   r>   r?   &test_anchoredtext_horizontal_alignment   s   

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)rG   rF   r   )figsizer   )r   r+   r   r+   
Annotation)rs   rs   )皙?r   z->)
arrowstyleFbaseliner   )xyxytext
arrowpropsclip_onvar      r   Tr   )i       r   )gɿr   r   r   )r!   r   )xyboxxycoordsr   box_alignmentr   r   rF   )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  rG   )!r,   rcParamsupdatercParamsDefaultr-   axisannotatedictr	   r.   Circler3   r   r
   r   randomrandr}   axesrA   rB   get_rendererget_window_extentget_tightbboxr   extentsioBytesIOsavefigseekimreadshaperY   )r7   r8   an1r:   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   rx   matplotlib.testing.decoratorsr   matplotlib.pyplotpyplotr,   matplotlib.patchespatchesr.   matplotlib.lineslinesr0   matplotlib.backend_basesr   matplotlib.offsetboxr   r   r   r	   r
   r   r   r@   rE   rR   r\   markparametrizerg   _Paramsrq   rt   rw   r{   r   r   r   r>   r>   r>   r?   <module>   s    $
"%
	






0
