a
    ضa,                     @   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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,dGdH Z-dS )I    )
namedtupleN)assert_allclose)image_comparison)MouseButton)AnchoredOffsetboxAnnotationBboxAnchoredTextDrawingArea	OffsetBoxOffsetImageTextArea_get_packed_offsetsZ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Zclipr   r   #CCCCCCNoner   Z	facecolorZ	edgecolor	linewidth      ?      ?   black
   colorr   center        Fr   r   locchildpadZframeonZbbox_to_anchorZbbox_transformZ	borderpad)r      )pltsubplotsr	   mpatches	RectanglemlinesLine2Dr   	transAxes
add_artistset_xlimset_ylimfigaxsizedabglineanchored_box r7   o/Users/vegardjervell/Documents/master/model/venv/lib/python3.9/site-packages/matplotlib/tests/test_offsetbox.pytest_offsetbox_clipping   s4    	
"	



r9   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rJ d|_| jsJ 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)   r*   r   r+   r,   canvasdrawstaleZclip_childrenr/   r7   r7   r8   test_offsetbox_clip_children6   s8    
"	




r=   c                  C   s^   ddddddddd	d
d
} t  \}}tdd}| D ]}t||d}|| q4|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   r,   r:   r;   )codesr0   r1   r3   coder6   r7   r7   r8   test_offsetbox_loc_codes[   s"    
rJ   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ncolmode)r%   r&   ZplotZlegendtight_layout)r0   r1   Zd1Zd2r7   r7   r8   test_expand_with_tight_layoutp   s    rO   wd_list)   r$   r>   )皙?r$   r   total)   r   r   Nsep)rT   r$   r   rU   rM   )rL   fixedequalc                 C   s   t | |||d d S )NrM   )r   )rP   rS   rV   rM   r7   r7   r8   test_get_packed_offsets}   s    rZ   _paramszwd_list, total, sep, expected)r>   r   r$   r   r   r   r$   rC   )r   r?   rA   )rS   rV   expectedr   r@   c                 C   s:   t | ||dd}|d |d ks$J t|d |d  d S )NrW   rY   r   r$   r   r   rP   rS   rV   r_   resultr7   r7   r8   test_get_packed_offsets_fixed   s    	rc   )rR   r   )r   g??)r   r@   rC   )r   g      @r>   c                 C   s:   t | ||dd}|d |d ks$J t|d |d  d S )NrL   rY   r   r$   r`   ra   r7   r7   r8   test_get_packed_offsets_expand   s    	re   )r\   r^   r]   rA   )r   r   r?   )r\   r^   r]   r   r   )r   r   r$   r   )rf   r]   )皙?r   c                 C   s:   t | ||dd}|d |d ks$J t|d |d  d S )NrX   rY   r   r$   r`   ra   r7   r7   r8   test_get_packed_offsets_equal   s    rh   c                   C   sD   t t& tdgd d d dd W d    n1 s60    Y  d S )Nr]   r>   rX   )rS   rV   rM   )pytestZraises
ValueErrorr   r7   r7   r7   r8   1test_get_packed_offsets_equal_total_none_sep_none   s    rk   
child_type)r;   imagetext	boxcoords)axes fractionaxes pixelsaxes pointsdatac           	         s  | dkr,t dd}|tjddddd nP| dkrPtd}d|d< t|}n,| d	krjtd
ddid}nds|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r0|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 )Nr;   r@   r   r   )r   rm   )r@   r@   )r   r   rn   u   ■Zfontsize)Z	textpropsFzUnknown picking child type r   )ro   TZ
pick_eventc                    s
     | S )N)append)eventZcallsr7   r8   <lambda>       ztest_picking.<locals>.<lambda>rr   r   H   rq   r$   rU   )r	   r,   r'   r(   npZonesr   r   r%   r&   r   Z
set_pickerr:   Zmpl_connectr+   Ztransform_pointdpir;   clearZbutton_press_eventr   LEFTlenZartistr-   r.   )	rl   ro   Zpicking_childimr0   r1   abxyr7   rv   r8   test_picking   sF    








"
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 textrF   rg   haleft)r!   r#   propr   rG   rE   )r%   r&   r   r,   )r0   r1   Ztext0Ztext1Ztext2r7   r7   r8   &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)r?   r>   r   )Zfigsizer{   )r   r$   r   r$   Z
Annotation)rd   rd   )皙?r   z->)Z
arrowstyleFZbaseliner   )ZxyZxytext
arrowpropsZclip_onvar      r   Tr   )i       r   )gɿr   rs   rp   )r   r   )xyboxxycoordsro   Zbox_alignmentr   r   r>   )Zzoom)r   g333333ӿ)r   K   zoffset pointsg333333?)r   r   ro   r#   r   )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  r?   )!r%   ZrcParamsupdateZrcParamsDefaultr&   ZaxisZannotatedictr	   r'   ZCircler,   r   r   rz   randomZrandrm   Zaxesr:   r;   Zget_rendererZget_window_extentZget_tightbboxr   ZextentsioBytesIOZsavefigseekZimreadshaperN   )r0   r1   Zan1r3   pZab3r   Zab6ZrendererZbb1wZbb1eZtarget1Zbb3wZbb3eZtarget3Zbb6wZbb6eZtarget6bufr   Ztargetshaper7   r7   r8   test_annotationbbox_extents  sb    














r   c                   C   s   t ddjdksJ d S )N*   )zorder)r
   r   r7   r7   r7   r8   test_zorderF  s    r   ).collectionsr   r   Znumpyrz   Znumpy.testingr   ri   Zmatplotlib.testing.decoratorsr   Zmatplotlib.pyplotZpyplotr%   Zmatplotlib.patchesZpatchesr'   Zmatplotlib.lineslinesr)   Zmatplotlib.backend_basesr   Zmatplotlib.offsetboxr   r   r   r	   r
   r   r   r   r9   r=   rJ   rO   markZparametrizerZ   Z_Paramsrc   re   rh   rk   r   r   r   r   r7   r7   r7   r8   <module>   s   (
"%	







0
C