o
    h>                     @   sB  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	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g d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*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 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d4dd4g d5fd%e*g d6dd"d1g d2fd%gd7d8 Z-d9d: Z.ej'(d;g d<ej'(d=g d>d?d@ Z/e
dAgddBdCdDdE Z0ej'(dFdGdHgdIdJ Z1dKdL Z2dMdN Z3ej'(dOg dPdQdR Z4dSdT Z5dUdV Z6dWdX Z7e	 dYdZ Z8e
d[gddBdCd\d] Z9d^d_ Z:d`da Z;dS )b    )
namedtupleN)assert_allclose)check_figures_equalimage_comparison)MouseButton
MouseEvent)AnchoredOffsetboxAnnotationBboxAnchoredTextDrawingAreaHPacker	OffsetBoxOffsetImage	PaddedBoxTextAreaVPacker_get_packed_offsetsoffsetbox_clippingT)remove_textc               	   C   s   t  \} }d}t||dd}|jsJ 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   clip_childrenmpatches	RectanglemlinesLine2Dr   	transAxes
add_artistset_xlimset_ylimfigaxsizedabglineanchored_box rE   s/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/matplotlib/tests/test_offsetbox.pytest_offsetbox_clipping   s6   	

"
	


rG   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)   )r2   r3   r   r5   r6   r7   r8   r   r9   r:   canvasdrawstaler4   r=   rE   rE   rF   test_offsetbox_clip_children7   s8   
"
	



rK   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 )Nr1   r!                     	   r#   )
upper right
upper leftz
lower leftlower rightrightcenter leftcenter rightzlower centerzupper centerr&   r   )r*   r+   )r2   r3   r   r   r:   rH   rI   )codesr>   r?   rA   coderD   rE   rE   rF   test_offsetbox_loc_codes\   s"   
r[   c                  C   sR   t  \} }ddg}ddg}|j|dd |j|dd |jddd |   d S )Nr1   r!   zseries 1)labelzseries 2expand)ncolsmode)r2   r3   plotlegendtight_layout)r>   r?   d1d2rE   rE   rF   test_expand_with_tight_layoutq   s   re   widths   )rg   rg   rg   皙?total)   r   r   Nsep)rj   r1   r   rk   r_   )r]   fixedequalc                 C   s   t | |||d d S )Nr_   )r   )rf   ri   rl   r_   rE   rE   rF   test_get_packed_offsets~   s   rp   _Paramszwd_list, total, sep, expectedzwidths, total, sep, expected)rL   r1   r!   r1   rQ   )r   rM   rO   )ri   rl   expectedr#   rN   c                 C   :   t | ||dd}|d |d ksJ t|d |d  d S )Nrm   ro   r   r1   r   r   rf   ri   rl   rr   resultrE   rE   rF   test_get_packed_offsets_fixed      	rw   )rh   rh   rh   )r   g??)r   rN   rQ   )r   g      @rL   c                 C   rs   )Nr]   ro   r   r1   rt   ru   rE   rE   rF   test_get_packed_offsets_expand   rx   rz   )rL   r!   r1   rO   )r   r!   rM   )rL   r!   r1   r   r!   )r   r   r1   r    )r   r1   皙?c                 C   rs   )Nrn   ro   r   r1   rt   ru   rE   rE   rF   test_get_packed_offsets_equal   s   
r|   c                   C   sD   t t tg dd d dd W d    d S 1 sw   Y  d S )N)r1   r1   r1   rn   )ri   rl   r_   )pytestraises
ValueErrorr   rE   rE   rE   rF   1test_get_packed_offsets_equal_total_none_sep_none   s   "r   
child_type)rI   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     td|j||tj  t dkr d j|ksJ |dd |dd |j     td|j||tj  t dksJ d S )NrI   rN   r   r   )r   r   )rN   rN   )r!   r!   r   u   ■fontsize)	textpropsFzUnknown picking child type r(   )r   T
pick_eventc                    s
     | S )N)append)eventcallsrE   rF   <lambda>   s   
 ztest_picking.<locals>.<lambda>r   r   H   r   button_press_eventr1   rk   )r   r:   r5   r6   nponesr   r   r2   r3   r	   
set_pickerrH   mpl_connectr9   transform_pointdpirI   clearr   r   LEFT_processlenartistr;   r<   )	r   r   picking_childimr>   r?   abxyrE   r   rF   test_picking   sR   







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 textrW   r{   haleft)r*   r,   propr&   rX   rV   )r2   r3   r
   r:   )r>   r?   text0text1text2rE   rE   rF   &test_anchoredtext_horizontal_alignment   s   

r   extent_kindwindow_extent	tightbboxc              
   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!}|| t|d"|   }	g d#}
t|	j|
d$d% t|d"|   }g d&}t|j|d$d% t|d"|   }g d'}t|j|d$d% t }|j|d(d) |d t |j}d*}t||d$d% |j  |  |j  d S )+N)rM   rL   r   )figsizer   )r   r1   r   r1   
Annotation)ry   ry   )皙?r   ->)
arrowstyleFbaseliner   )xyxytext
arrowpropsclip_onvar      r   Tr   )i       r   皙ɿr   r   r   r'   r   xyboxxycoordsr   box_alignmentr   r#   rL   )zoom)r   g333333ӿ)r   K   zoffset points333333?)r   r   r   r,   r   get_)gffffft@gYn@g     0}@gfffffr@r!   )atol)g1g      `@gfffffi@gd@)g     f@g      @g     l@g9W@tight)bbox_inches)i^  i  rM   )r2   rcParamsupdatercParamsDefaultr3   axisannotatedictr   r5   Circler:   r	   r   r   randomrandr   axesgetattrr   extentsioBytesIOsavefigseekimreadshaperH   rI   rb   )r   r>   r?   an1rA   pab3r   ab6bb1target1bb3target3bb6target6bufr   targetshaperE   rE   rF   test_annotationbbox_extents  sR   






r   c                   C   s   t ddjdks
J d S )N*   )zorder)r   r   rE   rE   rE   rF   test_zorder?  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|us"J |d dks*J d S )Nr   r   Tr   r   )r   gffffff?)r   relposr   r   r   r   r   r   r   )r   r	   r   )rA   r   r   rE   rE   rF   test_arrowprops_copiedC  s   
r   align)r   bottomtopr   rV   r&   c                 C   s  t jdd}|j }d\}}d\}}t||}t||}t||g| d}	|	| |	|}
|	|
|\}}t	|
j
dd|| t||f | dv rMd}n| dv rV|| }n
| d	kr`|| d
 }t	dd |	 D ||| f|| |fg t||g| d}|| ||}
||
|\}}t	|
j
dt|| t|||| f | dv rd}n| dv r|| }n
| d	kr|| d
 }t	dd | D || |f||| fg d S )Nr   )r   )r#   r   )r   <   )childrenr   r   )r   r   r   )rV   r   r&   r!   c                 S      g | ]}|  qS rE   
get_offset.0r+   rE   rE   rF   
<listcomp>h      z test_packers.<locals>.<listcomp>c                 S   r   rE   r   r   rE   rE   rF   r   z  r   )r2   figurerH   get_rendererr   r   rI   get_bboxr   r   boundsmaxget_childrenr   )r   r>   rendererx1y1x2y2r1r2hpackerbboxpxpyy_heightvpackerx_heightrE   rE   rF   test_packersM  sD   







&
r  c                  C   s>   t  \} }tdd}t|ddidd}|| |   d S )NfoorT   r   rT)patch_attrs
draw_frame)r2   r3   r
   r   r:   draw_without_rendering)r>   r?   atpbrE   rE   rF   test_paddedbox_default_values~  s
   

r  c                  C   sx   t tddddddddd} | jdksJ | jdksJ t tdddddddddd	d
} | jdks3J | jd	ks:J d S )Nr   r   Tr   r(   r   )r   )r   g?r   )r   r   r   )r	   r   xyann	anncoords)r   rE   rE   rF   test_annotationbbox_properties  s   r  c                  C   sX   t d} |  dksJ |  rJ | d | d |  dks$J |  s*J d S )NFooBarT)r   get_textget_multilinebaselineset_textset_multilinebaseline)tarE   rE   rF   test_textarea_properties  s   

r#  c                 C   sH   |  }tdd}|| |   }tdd}|| |jd d S )Nr  rT   r  )add_subplotr
   r:   txtr   )fig_testfig_refax_refr   ax_testr   rE   rE   rF   test_textarea_set_text  s   



r*  zpaddedbox.pngc                  C   s   t  \} }td}t|dddidd}td|d}|| td	}t|d
ddid}td|d}|| td}t|ddd}td|d}|| d S )Nr  rN   r   r  T)r,   r  r  rT   )r+   barr#   b)r,   r  rS   foobar   )r,   r  rU   )r2   r3   r   r   r   r:   )r>   r?   r"  r  r   rE   rE   rF   test_paddedbox  s   

r/  c                  C   sB   t  \} }|dd}|d |  td| jdd  d S )Nr  r(   Tbutton_release_eventr1   )r2   r3   r   	draggableremover   rH   r   )r>   r?   anrE   rE   rF   test_remove_draggable  s
   
r4  c                  C   sZ   t  } |  g ddd}|d | j  td| jdd	  |j
js+J d S )N)r   r   r1   r1   r  r   Tr   r1   )r2   r   
subfiguresadd_axesr   r1  rH   rI   r   r   
_draggable
got_artist)r>   annrE   rE   rF   test_draggable_in_subfigure  s   

r:  )<collectionsr   r   numpyr   numpy.testingr   r}   matplotlib.testing.decoratorsr   r   matplotlib.pyplotpyplotr2   matplotlib.patchespatchesr5   matplotlib.lineslinesr7   matplotlib.backend_basesr   r   matplotlib.offsetboxr   r	   r
   r   r   r   r   r   r   r   r   rG   rK   r[   re   markparametrizerp   rq   rw   rz   r|   r   r   r   r   r   r   r  r  r  r#  r*  r/  r4  r:  rE   rE   rE   rF   <module>   s    4
#%
	


	2

:

/	

