U
    \	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 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$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-gd 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 d0dgfd(gd1d2 Z&ej!"d e$d!d#d"gd'dd'd dd&gfd(e$d!d#d"d3gdddd d4d$d5gfd(e$d3d"d6gdd$d'd dd&gfd(gd7d8 Z'd9d: Z(ej!"d;d<d=d>gej!"d?d@dAdBdCgdDdE Z)e	dFgddGdHdIdJ Z*dKdL Z+dS )M    )
namedtupleN)assert_allclose)image_comparison)MouseButton)AnchoredOffsetboxAnnotationBboxAnchoredTextDrawingArea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 r6   C/tmp/pip-unpacked-wheel-wjyw_3jo/matplotlib/tests/test_offsetbox.pytest_offsetbox_clipping   s4    	
"	



r8   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   r*   r+   canvasdrawstaleAssertionErrorZclip_childrenr.   r6   r6   r7   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+   r9   r:   )codesr/   r0   r2   coder5   r6   r6   r7   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)r/   r0   d1Zd2r6   r6   r7   test_expand_with_tight_layoutp   s    rP   wd_list)   r#   r>   )皙?r#   r   total)   r   r   Nsep)rU   r#   r   rV   rM   )rL   fixedequalc                 C   s   t | |||d d S )NrM   )r   )rQ   rT   rW   rM   r6   r6   r7   test_get_packed_offsets}   s    r[   _paramszwd_list, total, sep, expected)r>   r   r#   r   )r   r   r#   rC   r?   rA   )rT   rW   expectedr   r@   c                 C   s:   t | ||dd}|d |d ks$tt|d |d  d S )NrX   rZ   r   r#   r   r<   r   rQ   rT   rW   r^   resultr6   r6   r7   test_get_packed_offsets_fixed   s    	rb   )rS   r   g??g      @c                 C   s:   t | ||dd}|d |d ks$tt|d |d  d S )NrL   rZ   r   r#   r_   r`   r6   r6   r7   test_get_packed_offsets_expand   s    	rd   )r   r   r   r   )皙?r   c                 C   s:   t | ||dd}|d |d ks$tt|d |d  d S )NrY   rZ   r   r#   r_   r`   r6   r6   r7   test_get_packed_offsets_equal   s    rf   c                	   C   s0   t t tdgd d d dd W 5 Q R X d S )Nr]   r>   rY   )rT   rW   rM   )pytestZraises
ValueErrorr   r6   r6   r6   r7   1test_get_packed_offsets_equal_total_none_sep_none   s    ri   
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     |j||tj t dkr d j|kst|dd |dd |j     |j||tj t dkstd S )Nr:   r@   r   r   )r   rk   )r@   r@   )r   r   rl   u   ■Zfontsize)Z	textpropsFzUnknown picking child type r   )rm   TZ
pick_eventc                    s
     | S )N)append)eventZcallsr6   r7   <lambda>       ztest_picking.<locals>.<lambda>rp   r   H   ro   r#   rV   )r	   r+   r&   r'   npZonesr
   r   r<   r$   r%   r   Z
set_pickerr9   Zmpl_connectr*   Ztransform_pointdpir:   clearZbutton_press_eventr   LEFTlenZartistr,   r-   )	rj   rm   Zpicking_childimr/   r0   abxyr6   rt   r7   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   re   haleft)r    r"   propr   rG   rE   )r$   r%   r   r+   )r/   r0   Ztext0Ztext1Ztext2r6   r6   r7   &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)r?   r>   r   )Zfigsizery   r   r#   Z
Annotation)rc   rc   )皙?r   z->)Z
arrowstyleFZbaseliner   )ZxyZxytext
arrowpropsZclip_onvar      Tr   )i       r   )gɿr   rq   rn   )r   r   )xyboxxycoordsrm   Zbox_alignmentr   r   r>   )Zzoom)r   g333333ӿ)r   K   zoffset pointsg333333?)r   r   rm   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  r?   )!r$   ZrcParamsupdateZrcParamsDefaultr%   ZaxisZannotatedictr	   r&   ZCircler+   r   r
   rx   randomZrandrk   Zaxesr9   r:   Zget_rendererZget_window_extentZget_tightbboxr   ZextentsioBytesIOZsavefigseekZimreadshaperN   )r/   r0   Zan1r2   pZab3r}   Zab6ZrendererZbb1wZbb1eZtarget1Zbb3wZbb3eZtarget3Zbb6wZbb6eZtarget6bufr   Ztargetshaper6   r6   r7   test_annotationbbox_extents  sj    
  
 
 










r   ),collectionsr   r   Znumpyrx   Znumpy.testingr   rg   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   r8   r=   rJ   rP   markZparametrizer[   Z_Paramsrb   rd   rf   ri   r   r   r   r6   r6   r6   r7   <module>   s   $
"%	
         
         
   
    
0
