o
    iW                     @   s6  d dl m Z  d dlZd dlZd dlZd dlmZ d dl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 ejje	d d	d
Zedgdd Zedgdd Zedgdddd Zedgdd Z dd Z!edgdd Z"dd Z#ed gd!d" Z$ed#gddd$d% Z%ed&gd'd( Z&d)d* Z'ejj(d+d,d-gd.d/gd0d1d2 Z)d3d4 Z*d5d6 Z+d7d8 Z,d9d: Z-d;d< Z.d=d> Z/ej(d?g d@ej(dAg dBdCdD Z0edEgdFdG Z1edHgdIdJ Z2edKgdLdM Z3dNdO Z4edPgdQdR Z5dSdT Z6edUgdVdW Z7ej(dXg dYdZd[ Z8d\d] Z9d^d_ Z:ed`da Z;edbdc Z<ej(ddg dedfdg Z=edhgdidj Z>edkgdldm Z?dndo Z@dpdq ZAedrgdsdtdu ZBedvgdddwdx ZCdydz ZDd{d| ZEd}d~ ZFedrgdsdd ZGdd ZHdd ZIdS )    )datetimeN)assert_almost_equal)
MouseEvent)FontProperties)check_figures_equalimage_comparison)TextTz"This test needs a TeX installation)reasonfont_stylesc                     s   fdd} ddl m m tjddtdd t  td	d	d	}| d
dddd}|j	ddd|d | ddddddd}|j	ddd|d | ddddddd}|j	ddd|d | d
dddddd}|j	ddd|d | d
dddd dd}|j	d!d"d|d |
g  |g  d S )#Nc                     s(    di | }|t  d} |dS )N)	directory)fname )mplget_data_path)kwproppathr   findfontr   U/var/www/edux/Edux_v2/venv/lib/python3.10/site-packages/matplotlib/tests/test_text.pyfind_matplotlib_font   s   
z.test_font_styles.<locals>.find_matplotlib_fontr   r   ignorez>findfont: Font family \[u?'Foo'\] not found. Falling back to .zmatplotlib.font_manager)module   z
sans-serifnormal   )familystylevariantsizezNormal Font)皙?r    axes fraction)xycoordsfontpropertiesFooboldi  )r   r   r   weightstretchr   z	Bold Font)r    皙?z
sans serifitalici  zBold Italic Font)r    333333?   z
Light Font)r    皙?d   zCondensed Font)r          ?)matplotlib.font_managerr   r   warningsfilterwarningsUserWarningpltfiguresubplotannotate
set_xticks
set_yticks)r   ax
normalFontboldFontboldItemFont	lightFontcondensedFontr   r   r   test_font_styles   s   
r?   	multilinec                  C   s   t   t ddd} | d t jddddddd	 t jddd
dddd	 t jddddddd	 t dd t dd | g  | g  d S )Nr   zmultiline
text alignmentr(   r.   zTpTpTp
$M$
TpTpTp   centertop)r   havazTpTpTp
$M^{M^{M^{M}}}$
TpTpTpg?zTpTpTp
$M_{q_{q_{q}}}$
TpTpTpr   )	r3   r4   r5   	set_titletextxlimylimr7   r8   r9   r   r   r   test_multilinel   s$   

rK   
multiline2mpl20)r   c               	      s  dt jd< t  \} }|ddg |ddg |jdddd	 g d
}| j   fdd}d}t|D ]\}}|j	d| d d||dd}||| q6|j	ddddd |jdddd	 t|D ]\}}|j	d| d d||dd}||| qc|j	ddddd |jdddd	 t|D ]\}}|j	d| d d||dd}||| q|j	ddddd |jdddd	 t|D ]\}}|j	d| d d||ddd}||| q|j	ddddd d S )N   text.kerning_factorr   gffffff?   r.   C2r*   )color	linewidth)Linez2 Lineg
 2 Lgz$\sum_i x $zhi $\sum_i x $
testztest
 $\sum_i x $z$\sum_i x $
 $\sum_i x $c                    sB   t jdddd| jd}|| | j j | | d S )Nr   r   r   F)clip_on	transform)	mpatches	Rectangle	transAxes
set_boundsget_window_extenttransformedinvertedbounds	add_patch)r9   ttrrendererr   r   draw_box   s   z!test_multiline2.<locals>.draw_boxleftr(   r    bottomhorizontalalignmentverticalalignmentg333333?zBottom alignrR   g?rC   z	Top aligng?baselinezBaseline alignrA   )ri   rj   rotationzBot align, rot20)
r3   rcParamssubplotsset_xlimset_ylimaxhlinecanvasget_renderer	enumeraterG   )figr9   stsre   horalnnstra   r   rc   r   test_multiline2   sH   

	r{   zantialiased.pngc                  C   sB   dt jd< tjdd} | jdddddd	 | jdd
dddd	 d S )NTztext.antialiased)g      @      ?figsizer.   r|   antialiasedrB   rh         ?z
$\sqrt{x}$)r   rn   r3   r4   rG   rv   r   r   r   test_antialiasing   s   

r   c                  C   s\   t jjddd} t| d}t j|}W d    n1 sw   Y  |ddks,J d S )N	Helveticaafm)fontextrbVAVAVAVAVAVA)g     @i  )r   font_managerr   openr   AFMstring_width_height)fnfhr   r   r   r   test_afm_kerning   s
   r   ztext_contains.pngc                  C   s   t  } t  }td| jdddd }tddd}tddd}t||\}}t jdddd	ddd
}| j	  t
|j|jD ]3\}}t  j||g\|_|_||\}}	|r\dnd}
|j }|j||d|
d |j| q?d S )Nbutton_press_eventr.   r   r   r|      r,   zhello worldrB   )rD   fontsizerm   yellowredork   )r3   r4   axesr   rs   nplinspacemeshgridrG   drawzipflatgcarZ   rW   xycontainsviewLimfrozenplotset)rv   r9   meventxsystxtr   r   r   _rR   vlr   r   r   test_contains   s$   

r   c                  C   sb   t  \} }|jdddddid}| j  td| jg|jdR  }||d	i fks/J d S )
Nhello)r,   r,   )333333?r   
arrowstylez->)xyxytext
arrowpropsr   )r.   r   F)	r3   ro   r6   rs   r   r   	transDatarW   r   )rv   r9   anneventr   r   r   test_annotation_contains   s   

r   titlesc                  C   sJ   t   t ddd} | jddd | jddd | g  | g  d S )Nr   z
left titlerf   loczright titleright)r3   r4   r5   rF   r7   r8   rJ   r   r   r   test_titles   s   
r   text_alignmentc                  C   s   t   t ddd} d}dD ]'}dD ]"}| j|d|d ||tdddd	d
 | j|dd||d |d7 }qq| ddgddg | ddgddg | ddg | ddg | g  | 	g  d S )Nr   r    )r   r   )rC   rg   rl   rB   r.   z Tjroundwheat)boxstyle	facecoloralpha)rE   rm   bboxg      ?z$\sum_{i=0}^{j}$)rE   rm   r   g      ?)
r3   r4   r5   rG   dictr   rp   rq   r7   r8   )r9   r   rm   	alignmentr   r   r   test_alignment  s(   


r   zaxes_titles.pngc                  C   sP   t   t ddd} | jddddd | jddddd | jd	d	ddd d S )
Nr   rB   rA   i  )r   r   
fontweightrf      i  r   )r3   r4   r5   rF   rJ   r   r   r   test_axes_titles  s
   r   c                  C   s  t  \} }|jddddd}| j  || jj}d}|||f | j  || jj}t|j	|j	D ]\}}|| |ksCJ q7|jddddd}| j  || jj}d}||f|_
| j  || jj}t|j	|j	D ]\}}|| |ksJ qsd S )NtestrU   figure pixels)r   
textcoords   )r3   ro   r6   rs   r   r\   rd   set_positionr   minxyann)rv   r9   r   init_pos	shift_valpost_posabr   r   r   test_set_position&  s0   




r   rG    Oemptyz	non-empty)idsc                 C   sx   t  \}}|jdd| ddd}|j  |j}| }|j|d d}tjj	|
 |
 d dd |j|ks:J d S )	Nr.   rf   rg   )rD   rE   
   )dpi皙?rtol)r3   ro   rG   rs   r   r   r\   r   testingassert_allclose
get_points)rG   rv   r9   t1r   bbox1bbox2r   r   r   test_non_default_dpiF  s   
r   c                   C   s@   t jddks
J t jddksJ t jddksJ d S )N
horizontal        verticalg     V@z15.      .@r   rG   get_rotationr   r   r   r   test_get_rotation_stringV  s   r   c                  C   s"   dD ]} t j| | ksJ qd S )N)r   g333330@gYS@r   ir   r   r   test_get_rotation_float\  s   r   c                  C   s&   dD ]} t j| t| ksJ qd S )N)C      )   )r   rG   r   floatr   r   r   r   test_get_rotation_inta  s   r   c                   C   s<   t t tjd W d    d S 1 sw   Y  d S )N
hozirontal)pytestraises
ValueErrorr   rG   r   r   r   r   r   test_get_rotation_raisesf  s   "r   c                   C   s   t jd dks
J d S )Nr   r   r   r   r   r   test_get_rotation_nonek  s   r   c                  C   s2   t g dg dD ]\} }ttj| | q	d S )N)g     v@g     w@g	@)r   g      1@gfffff&f@)r   r   r   rG   r   )r   jr   r   r   test_get_rotation_mod360o  s   r   rD   )rB   r   rf   rE   )rB   rC   rg   rl   center_baselinec                 C   sv   t  \}}td|| d}|jdddi|}|jdddi|}|j  t||jj	 ||jj	  d S )Nr   )rm   rE   rD   )r.   r.   r   rotation_modeanchordefault)
r3   ro   r   rG   rs   r   r   r\   rd   r   )rD   rE   rv   r9   r   t0r   r   r   r   %test_null_rotation_with_rotation_modet  s   
r   text_bboxclipc                  C   s8   t jdddddd t jddddd	} | d
di d S )Ng?r(   zIs bbox clipped?rb   T)backgroundcolorrV   r.   zIs fancy bbox clipped?rV   r   zround, pad=0.1)r3   rG   set_bbox)tr   r   r   test_bbox_clipping  s   r  z!annotation_negative_ax_coords.pngc               	   C   s   t  \} }|jdddgdddgddd |jdddgdddgddd	d
 |jdddgdddgddd |jdddgdddgddd	d
 |jdddgdddgddd |jdddgdddgddd	d
 d S )N+ ptsr   rA   zaxes points    r   r   r   r"   r   - ptsirC   r   r   r   r"   r   rE   + fracr|   r   r!   - frac皙+ pixels      zaxes pixels- pixelsir3   ro   r6   rv   r9   r   r   r   "test_annotation_negative_ax_coords  8   






r  z"annotation_negative_fig_coords.pngc               	   C   s   t  \} }|jdddgdddgddd |jddd	gddd	gddd
d |jdddgdddgddd |jdddgdddgddd
d |jdddgdddgddd |jdddgdddgddd
d d S )Nr  r   x   zfigure pointsr  r	  r
     rC   r  r  r   g?zfigure fractionr  r  r.   r  2   r   r  ir-   r  r  r   r   r   #test_annotation_negative_fig_coords  r  r  c                  C   s   t dd\} \}}t   |jrJ |jrJ | jrJ |ddd}|js)J |js.J | js3J |jdddgd}|jsAJ |jsFJ | jsKJ t   |jrTJ |jrYJ | jr^J d S )Nr   rP   r.   aardvarkr   )r3   ro   draw_allstalerG   r6   )rv   ax1ax2txt1ann1r   r   r   test_text_stale  s"   










r$  zagg_text_clip.pngc                  C   sZ   t jd td\} \}}t jddD ]\}}|j||ddd |||d qd S )Nr   rP   r   fooTr  )r   randomseedr3   ro   randrG   )rv   r   r!  r   r   r   r   r   test_agg_text_clip  s   r)  c                  C   s>   dt jd< t jjdd} |  }dt jd< ||  ksJ d S )Nr   z	font.sizelarge)r   r-   )r   rn   r   r   get_size_in_points)fpsz1r   r   r   test_text_size_binding  s
   

r.  zfont_scaling.pdfc                  C   s   dt jd< tjdd\} }|jt  |jt  |dd t	t
ddd	D ]\}}|jd
|d dj|d|d q+d S )N*   zpdf.fonttype)g@g(@r}   r  iX     +   rP   r    r   z{fs} pt font size)fs)r   )r   rn   r3   ro   xaxisset_major_locatorNullLocatoryaxisrq   ru   rangerG   format)rv   r9   r   r2  r   r   r   test_font_scaling  s   
 r9  zspacing1, spacing2))r,   rP   )rP   r,   )rP   rP   c           	      C   s   d}t  }|j }t jdd|| d}t jdd||d}|j  |j|d}|j|d}|j|jks6J | |krD|j|jksBJ d S |j|jksLJ d S )Nzline1
line2r   r.   )linespacingrc   )	r3   r4   rs   rt   rG   r   r\   widthheight)	spacing1spacing2text_stringrv   rd   text1text2box1box2r   r   r   test_two_2line_texts  s   

rD  c                  C   s:   t  \} }|dtjd |tjdd | j  d S )Nr   naninf)r3   ro   rG   r   rE  rF  rs   r   r  r   r   r   test_nonfinite_pos
  s   rG  c                  C   sj   dt jd< t  } | ddd}| jt dd | j}| jt dd t	j
j| j|dd	 d S )
Nr   ztext.hinting_factorr.   z	some textsvgr8  pngr    r   )r3   rn   r4   rG   savefigioBytesIOr\   	intervalxr   r   r   )rv   r  expectedr   r   r   test_hinting_factor_backends  s   


rP  c                  C   sx   t  } dt jd< | d}dt jd< | d}| j  |df|dffD ]\}}|jjD ]}|j	 |ks8J q-q%d S )NFtext.usetexy   Tz   )
r3   r4   rn   add_subplotrs   r   r3  
majorTickslabel1
get_usetex)rv   r   r!  r9   usetexr  r   r   r   test_usetex_is_copied  s   




rY  c                  C   s(   t  } | jddddd | j  d S )Nr.   z	$\frac12$TrX  )r3   r4   rG   rs   r   r   r   r   r   test_single_artist_usetex.  s   r[  fmt)rJ  pdfrH  c                 C   s:   dt jd< t  }|jddddd |jt | d d S )NTrQ  r.   2_2_2FrZ  rI  )r3   rn   r4   rG   rK  rL  rM  )r\  rv   r   r   r   test_single_artist_usenotex8  s   
r_  ztext_as_path_opacity.svgc                   C   sP   t   t    t jddddd t jddddd t jddd	dd
d d S )Nr   cr   r   r   r.   rk   r.   r   r   r|   r   r   r   r   r   r   rR   )r3   r4   r   set_axis_offrG   r   r   r   r   test_text_as_path_opacityD  s
   rf  ztext_as_text_opacity.svgc                   C   sZ   dt jd< t  t   tjddddd tjddddd	 tjdd
dddd d S )Nnonezsvg.fonttyper   z50% using `color`ra  rk   r.   z50% using `alpha`rb  r|   z"50% using `alpha` and 100% `color`rc  rd  )r   rn   r3   r4   r   re  rG   r   r   r   r   test_text_as_text_opacityM  s   

rh  c                  C   s0   t ddgddg t dgdd} t|  d S )NABr   rP   r.   Boo)r3   r   rG   print)r   r   r   r   test_text_reprX  s   rm  c                  C   sf   t dd\} }|jddd}|| j }|   || j }tj|	 |	 ddr1J d S )Nr   
annotation)r.   r.   r  gư>r   )
r3   ro   r6   r\   rs   rt   tight_layoutr   allcloser   )rv   r9   anextent1extent2r   r   r   test_annotation_update_  s   rt  rJ  )
extensionsc                 C   sl   |   }|t dd |jdt dfdddd |  }|t dd |jdt dfdd	 d S )
Nr   r   r   r.   )datar!   rU   zoffset points)r"   r   r   )r"   )rT  r   r   nowr6   fig_testfig_refr9   r   r   r   test_annotation_unitsj  s   r{  zlarge_subscript_title.pngc                  C   s   dt jd< d t jd< t jddddd\} }|d	 }|d
 |jddd |d |d }|jd
dd}|jddd |d d S )NrN   rO   zaxes.titleyr   rP   )	   g      @T)r~   constrained_layoutr   z$\sum_{i} x_i$zNew wayrf   r   r   g)\(?)r   zOld Way)r3   rn   ro   rF   set_xticklabels)rv   axsr9   ra   r   r   r   test_large_subscript_titlev  s   



r  c                  C   s@   t jdd} d}| jdd|dd}| j  | dksJ d S )	NrN   r0  r}   z?This is a very long text that should be wrapped multiple times.gffffff?r.   Twrapz?This is a very long
text that should be
wrapped multiple
times.r3   r4   rG   rs   r   _get_wrapped_text)rv   srG   r   r   r   	test_wrap  s
   
r  c                  C   s<   t jdd} | jddddd}| j  | dksJ d S )Nr  r}   g      #@   AlonglineoftexttowrapTr  r  rv   rG   r   r   r   test_long_word_wrap     
r  c                  C   s<   t jdd} | jddddd}| j  | dksJ d S )Nr  r}   r   znon wrapped textTr  r  r  r   r   r   test_wrap_no_wrap  r  r  c                 C   s`   |   }|ddg |ddg |jjd jd |  }|ddg |ddg d S )Nr   r   u   €r   wr   )rT  r8   set_yticklabelsr6  rU  rV  	set_colorrx  r   r   r   test_buffer_size  s   r  c                  C   sL   t   t jdddd} t jdddd}|  dksJ | dks$J dS )z>Test that kwargs take precedence over fontproperties defaults.valuezTimes New Romang      D@)r#   r   counts)r   r#   N)r3   r4   xlabelylabelget_size)r@  rA  r   r   r   $test_fontproperties_kwarg_precedence  s
   r  c                  C   sV   t tddd d} t | }t }||  | d |d ksJ | d |d ks)J d S )Nr%   )r&   )r#   r   r#   r   )r   r   r   update)inpcacher  r   r   r   test_update_mutate_input  s   

r  )Jr   rL  r0   numpyr   numpy.testingr   r   
matplotlibr   matplotlib.backend_basesr   r/   r   matplotlib.patchespatchesrX   matplotlib.pyplotpyplotr3   matplotlib.testing.decoratorsr   r   matplotlib.textr   markskipifcheckdep_usetexneeds_usetexr?   rK   r{   r   r   r   r   r   r   r   r   parametrizer   r   r   r   r   r   r   r   r  r  r  r$  r)  r.  r9  rD  rG  rP  rY  r[  r_  rf  rh  rm  rt  r{  r  r  r  r  r  r  r  r   r   r   r   <module>   s    

T

3





	 





	



	








	