U
    mdC6                     @   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dddg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)d d!d"gdd!d#d d$d%gfd&e)d d!d"gd'd!d'd d$d%gfd&e)d d!d"gd(d!d(d d$d%gfd&gd)d* Z*ej&'de)dddgddd!d d+d,gfd&e)d d!d"gd'd!d'd d(d#gfd&e)d d!d"gd(d!d(d d-d gfd&gd.d/ Z+ej&'de)d d"d!gd%dd%d d"d$gfd&e)d d"d!d0gd"dd"d d0d!d1gfd&e)d0d!d2gdd!d%d d"d$gfd&gd3d4 Z,d5d6 Z-ej&'d7d8d9d:gej&'d;d<d=d>d?gd@dA Z.e	dBgddCdDdEdF Z/dGdH Z0dIdJ Z1dKdL Z2ej&'dMdNdOdPdQdRdSgdTdU Z3dVdW Z4dS )X    )
namedtupleN)assert_allclose)image_comparison)MouseButton
MouseEvent)AnchoredOffsetboxAnnotationBboxAnchoredTextDrawingArea	OffsetBoxOffsetImage	PaddedBoxTextArea_get_packed_offsetsHPackerVPackerZ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   	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 r<   X/home/sam/Atlas/atlas_env/lib/python3.8/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rtd|_| jst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   r0   r1   canvasdrawstaleAssertionErrorZclip_childrenr4   r<   r<   r=   test_offsetbox_clip_children6   s8    
"	




rC   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 right
upper leftz
lower leftzlower rightrightcenter leftcenter rightzlower centerzupper centerr"   r   )r&   r'   )r*   r+   r
   r   r1   r?   r@   )codesr5   r6   r8   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)labelzseries 2expand)Zncolsmode)r*   r+   ZplotZlegendtight_layout)r5   r6   Zd1Zd2r<   r<   r=   test_expand_with_tight_layoutp   s    rV   widths   g?total)   r   r   Nsep)rZ   r)   r   r[   rT   )rS   fixedequalc                 C   s   t | |||d d S )NrT   )r   )rW   rY   r\   rT   r<   r<   r=   test_get_packed_offsets}   s    r`   _paramszwd_list, total, sep, expectedzwidths, total, sep, expectedrD   r)   r   rI   rE   rG   )rY   r\   expectedr   rF   c                 C   s:   t | ||dd}|d |d ks$tt|d |d  d S )Nr]   r_   r   r)   r   rB   r   rW   rY   r\   rb   resultr<   r<   r=   test_get_packed_offsets_fixed   s    	rf   g??g      @c                 C   s:   t | ||dd}|d |d ks$tt|d |d  d S )NrS   r_   r   r)   rc   rd   r<   r<   r=   test_get_packed_offsets_expand   s    	rh   r   r   皙?c                 C   s:   t | ||dd}|d |d ks$tt|d |d  d S )Nr^   r_   r   r)   rc   rd   r<   r<   r=   test_get_packed_offsets_equal   s    
rj   c                	   C   s0   t t tdddgd d dd W 5 Q R X d S )Nr)   r^   )rY   r\   rT   )pytestZraises
ValueErrorr   r<   r<   r<   r=   1test_get_packed_offsets_equal_total_none_sep_none   s    rm   
child_typer@   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|t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     td|j||tj  t dkr d j|kst|dd |dd |j     td|j||tj  t dkstd S )Nr@   rF   r   r   )r   ro   )rF   rF   )r   r   rp   u   ■Zfontsize)Z	textpropsFzUnknown picking child type r$   )rq   TZ
pick_eventc                    s
     | S )N)append)eventZcallsr<   r=   <lambda>       ztest_picking.<locals>.<lambda>rt   r   H   rs   Zbutton_press_eventr)   r[   )r
   r1   r,   r-   npZonesr   r   rB   r*   r+   r   Z
set_pickerr?   Zmpl_connectr0   Ztransform_pointdpir@   clearr   r   LEFTZ_processlenZartistr2   r3   )	rn   rq   Zpicking_childimr5   r6   abxyr<   rx   r=   test_picking   s^    








    "
    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 textrM   ri   haleft)r&   r(   propr"   rN   rL   )r*   r+   r	   r1   )r5   r6   Ztext0Ztext1Ztext2r<   r<   r=   &test_anchoredtext_horizontal_alignment   s      
 
 r   c               
   C   s  t jt j t jddd\} }|ddddg |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 }||}	||}
d"d#d$d%g}t|	j|d&d' t|
j|d&d' ||}||}d(d)d*d+g}t|j|d&d' t|j|d&d' ||}||}d,d-d.d/g}t|j|d&d' t|j|d&d' t }| j|d0d1 |d t |j}d2}t||d&d' | j  |    | j  d S )3N)rE   rD   r   )Zfigsizer}   r   r)   Z
Annotation)rg   rg   )皙?r   ->)
arrowstyleFbaseliner   )ZxyZxytext
arrowpropsZclip_onvar      Tr   )i       r   gɿr   ru   rr   r#   r   xyboxxycoordsrq   Zbox_alignmentr   r   rD   )Zzoom)r   g333333ӿ)r   K   zoffset points333333?)r   r   rq   r(   r   gffffft@gYn@g     0}@gfffffr@r   )Zatolg1g      `@gfffffi@gd@g     f@g      @g     l@g9W@Ztight)Zbbox_inches)i^  i  rE   )!r*   ZrcParamsupdateZrcParamsDefaultr+   ZaxisZannotatedictr
   r,   ZCircler1   r   r   r|   randomZrandro   Zaxesr?   r@   get_rendererZget_window_extentZget_tightbboxr   ZextentsioBytesIOZsavefigseekZimreadshaperU   )r5   r6   Zan1r8   pZab3r   Zab6rendererZbb1wZbb1eZtarget1Zbb3wZbb3eZtarget3Zbb6wZbb6eZtarget6bufr   Ztargetshaper<   r<   r=   test_annotationbbox_extents  sj    
  
 
 










r   c                   C   s   t ddjdkstd S )N*   )zorder)r   r   rB   r<   r<   r<   r=   test_zorderF  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|k	sDt|d dksTtd S )Nr   r   Tr   r   )r   gffffff?)r   relposr   r   ru   rr   r   r   r   )r
   r   r   rB   )r8   r   r   r<   r<   r=   test_arrowprops_copiedJ  s    
 r   alignr   bottomtopr   rL   r"   c                 C   s  t jdd}|j }d\}}d\}}t||}t||}t||g| d}	|	| |	|}
|	|
|\}}t	|
j
dd|| t||f | dkrd}n&| dkr|| }n| d	kr|| d
 }t	dd |	 D ||| f|| |fg t||g| d}|| ||}
||
|\}}t	|
j
dt|| t|||| f | dkrVd}n*| dkrj|| }n| d	kr|| d
 }t	dd | D || |f||| fg d S )Nr{   )r}   )r   r   )r   <   )childrenr   r   )r   r   r   )rL   r   r"   r   c                 S   s   g | ]}|  qS r<   
get_offset.0r'   r<   r<   r=   
<listcomp>o  s     z test_packers.<locals>.<listcomp>c                 S   s   g | ]}|  qS r<   r   r   r<   r<   r=   r     s     )r*   Zfigurer?   r   r
   r   r@   Zget_bboxr   r   ZboundsmaxZget_childrenr   )r   r5   r   x1y1Zx2y2r1r2ZhpackerZbboxZpxpyZy_heightZvpackerZx_heightr<   r<   r=   test_packersT  sD    







&



r   c                  C   s>   t  \} }tdd}t|ddidd}|| |   d S )NZfoorK   r   rT)Zpatch_attrsZ
draw_frame)r*   r+   r	   r   r1   Zdraw_without_rendering)r5   r6   atZpbr<   r<   r=   test_paddedbox  s
    

r   )5collectionsr   r   numpyr|   Znumpy.testingr   rk   Zmatplotlib.testing.decoratorsr   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>   rC   rQ   rV   markZparametrizer`   Z_Paramsrf   rh   rj   rm   r   r   r   r   r   r   r   r<   r<   r<   r=   <module>   s   4
"%	
         
         
   
      	
2
C
  
/