o
    Gf}                     @   s  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mZ	 d dl
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 d dlmZmZ d dlmZ d d	l m!Z!m"Z"m#Z# e	e
j$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dd Z)dd Z*edgdd Z+dd Z,ej-.de/e0d fe/d d gd!fe1d"d#fe1d$d%fe1d&d'fe1d(d)ffd*d+ Z2ed,gd-d. Z3ed/gddd0d1 Z4ed2gd3d4 Z5d5d6 Z6d7d8 Z7ej-j.d9d:d;gd<d=gd>d?d@ Z8dAdB Z9dCdD Z:dEdF Z;dGdH Z<dIdJ Z=dKdL Z>ej-.dMg dNej-.dOg dPdQdR Z?edSgdTdU Z@edVgdWdX ZAedYgdZd[ ZBd\d] ZCed^gd_d` ZDdadb ZEedcgddde ZFej-.dfg dgdhdi ZGdjdk ZHdldm ZIdndo ZJedpdq ZKedrds ZLej-.dtg dudvdw ZMedxgdydz ZNed{gd|d} ZOd~d ZPdd ZQedgddd ZRedgdddd ZSej-.dg ddd ZTdd ZUdd ZVdd ZWdd ZXedgddd ZYdd ZZdd Z[dd Z\ej-.dddggdd Z]dd Z^edgdddd Z_dd Z`ej-jae%jbdkdddd Zcej-jae%jbdkdddd Zdedgdddd Zeedgdddd Zfedd Zgdd Zhdd Zidd Zjedgddd ZkdS )    )datetimeN)assert_almost_equal)parse)
MouseEvent)FontProperties)check_figures_equalimage_comparison)needs_usetex)Text
Annotation
OffsetFromZfont_stylesc            	         s^   fdd} ddl m m tjddtdd t \}}| d	d
d
dd}|jddd|d}|	 dks7J |
 d
ks?J | d
ksGJ | d
ksOJ | d
ksWJ | 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)Z	directory)fname )mplZget_data_path)kwZproppathr   findfontr   :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)modulez
sans-serifZnormal   )familystylevariantsizezNormal Font)皙?r   axes fraction)xycoordsfontpropertieszDejaVu SansZFooboldi  )r   r   r   weightZstretchr   z	Bold Font)r   皙?z
sans serifZitalici  zBold Italic Font)r   333333?   z
Light Font)r   皙?d   zCondensed Font)r         ?)matplotlib.font_managerr   r   warningsfilterwarningsUserWarningpltsubplotsannotateZget_fontnameZget_fontstyleZget_fontvariantZ
get_weightZget_stretch
set_xticks
set_yticks)	r   figaxZnormal_fontaZ	bold_fontZbold_italic_fontZ
light_fontZcondensed_fontr   r   r   test_font_styles   s   
r5   Z	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 )N   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   )	r-   figuresubplot	set_titletextZxlimZylimr0   r1   r3   r   r   r   test_multilineq   s$   

rA   Z
multiline2Z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(   ZC2r$   )colorZ	linewidth)Z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   r6   F)clip_on	transform)	mpatchesZ	Rectangle	transAxesZ
set_boundsget_window_extentZtransformedinvertedZboundsZ	add_patch)r3   ttrrendererr   r   draw_box   s   z!test_multiline2.<locals>.draw_boxleftr#   r   bottom)horizontalalignmentverticalalignmentg333333?zBottom alignrE   g?r9   z	Top aligng?baselinezBaseline alignr7   )rT   rU   rotationzBot align, rot20)
r-   rcParamsr.   set_xlimset_ylimZaxhlinecanvasget_renderer	enumerater?   )r2   r3   stsrQ   ZhoralnnstrM   r   rO   r   test_multiline2   sH   

	rb   zantialiased.pngc                  C   s   dt jd< tjdd} | jdddddd	d
 | jdddddd	d
 d	t jd< | jddddddd
 | jddddddd
 dt jd< d S )NFtext.antialiased)g      @      ?figsizer$   rd   antialiasedr8   T)rT   rU   rg         ?z
$\sqrt{x}$ffffff?znot antialiased)r   rY   r-   r<   r?   r2   r   r   r   test_antialiasing   s    

rk   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 )NZ	Helveticaafm)ZfontextrbZVAVAVAVAVAVA)g     @i  )r   font_managerr   openZ_afmZAFMZstring_width_height)fnZfhrl   r   r   r   test_afm_kerning   s
   rq   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(   r6   rh   rd      r&   zhello worldr8   )r:   fontsizerX   ZyellowZredorV   )r-   r<   Zaxesr   r\   npZlinspaceZmeshgridr?   drawzipZflatgcarJ   rH   xycontainsZviewLimfrozenplotset)r2   r3   ZmeventZxsystxtrz   r{   r|   _rE   Z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 )
NZhello)r&   r&   )333333?r   Z
arrowstylez->)xyxytextZ
arrowpropsrr   )r(   r   F)	r-   r.   r/   r\   rw   r   Z	transDatarH   r|   )r2   r3   annZeventr   r   r   test_annotation_contains   s   

r   zerr, xycoords, matchz<xycoords callable must return a BboxBase or Transform, not az,'xycoords' must be an instance of str, tuplefooz'foo' is not a valid coordinatezfoo barz#'foo bar' is not a valid coordinatez
offset fooz'xycoords cannot be an offset coordinatezaxes fooz'foo' is not a recognized unitc                 C   s\   t  \}}tj| |d |jddd|d |j  W d    d S 1 s'w   Y  d S )Nmatchr   rF   r(   r(   )r   r   )r-   r.   pytestraisesr/   r\   rw   )errr   r   r2   r3   r   r   r   test_annotate_errors  s
   	"r   Ztitlesc                  C   sJ   t   t ddd} | jddd | jddd | g  | g  d S )Nr6   z
left titlerR   loczright titleright)r-   r<   r=   r>   r0   r1   r@   r   r   r   test_titles  s   
r   Z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 | dd | g  | 	g  d S )Nr6   r   )r   rs   )r9   rS   rW   r8   r(   z TjroundZwheat)boxstyleZ	facecoloralpha)r;   rX   bboxg      ?z$\sum_{i=0}^{j}$)r;   rX   r   g      ?)
r-   r<   r=   r?   dictr~   rZ   r[   r0   r1   )r3   rz   rX   Z	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 )
Nr6   r8   r7   i  )r   rt   Z
fontweightrR      i  r   )r-   r<   r=   r>   r@   r   r   r   test_axes_titles4  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testrF   figure pixels)r   
textcoords   )r-   r.   r/   r\   rw   rK   rP   Zset_positionrx   minZxyann)r2   r3   r   Zinit_posZ	shift_valZpost_posr4   br   r   r   test_set_position>  s0   




r   c                  C   sJ  t  } | ddd}|d | }|j|j }|d | }|j|j }|d | }|j}||| dks@J ||dksIJ ||d|  dksVJ ||d	|  d
kscJ |||d  dkspJ |||d  |d  dksJ |||d  |d  dksJ |||d  |d  dksJ d S )Nr   ? imZiiiimmmmr   gV-?gx&1?r6               
   )r-   r<   r?   Zset_textrK   Zx1Zx0Z_char_index_at)r2   r?   r   Zsize_iZsize_moriginr   r   r   test_char_index_at^  s&   


""&r   r?   r   Oemptyz	non-empty)Z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(   rR   rS   )r:   r;   r   )dpi皙?Zrtol)r-   r.   r?   r\   rw   r   rK   rv   testingassert_allclose
get_points)r?   r2   r3   t1r   Zbbox1Zbbox2r   r   r   test_non_default_dpix  s   
r   c                   C   s0   t dd dksJ t dd dksJ d S )NZ
horizontalrX           Zverticalg     V@r
   get_rotationr   r   r   r   test_get_rotation_string  s   r   c                  C   s$   dD ]} t | d | ksJ qd S )N)g      .@g333330@gYS@r   r   r   r   r   r   test_get_rotation_float  s   r   c                  C   s(   dD ]} t | d t| ksJ qd S )N)C      )   r   )r
   r   floatr   r   r   r   test_get_rotation_int  s   r   c                   C   s:   t t tdd W d    d S 1 sw   Y  d S )NZ
hozirontalr   r   r   
ValueErrorr
   r   r   r   r   test_get_rotation_raises  s   "r   c                   C   s   t d d dksJ d S )Nr   r   r   r   r   r   r   test_get_rotation_none  s   r   c                  C   s4   t g dg dD ]\} }tt| d | q	d S )N)g     v@g     w@g	@)r   g      1@gfffff&f@r   )rx   r   r
   r   )r   jr   r   r   test_get_rotation_mod360  s   r   r:   )r8   r   rR   r;   )r8   r9   rS   rW   Z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   )rX   r;   r:   )r(   r(   r   Zrotation_modeZanchordefault)
r-   r.   r   r?   r\   rw   r   rK   rP   r   )r:   r;   r2   r3   r   Zt0r   r   r   r   %test_null_rotation_with_rotation_mode  s   
r   Ztext_bboxclipc                  C   s8   t jdddddd t jddddd	} | d
di d S )Nr   r#   zIs bbox clipped?rN   T)ZbackgroundcolorrG   r(   zIs fancy bbox clipped?rG   r   zround, pad=0.1)r-   r?   Z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+ ptsrs   r7   zaxes points    r   r   r   r   rt   - ptsir9   r   r   r   r   rt   r;   + fracrd   r   r   - frac皙+ pixels      zaxes pixels- pixelsir-   r.   r/   r2   r3   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      r9   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 )Nr6   rD   r(   Zaardvarkr   )r-   r.   Zdraw_allZstaler?   r/   )r2   ax1ax2Ztxt1Z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 )Nr6   rD   r   r   Tr   )rv   ZrandomZseedr-   r.   Zrandr?   )r2   r   r   rz   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.sizeZlarger   r'   )r   rY   rn   r   Zget_size_in_points)fpZ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|d q+d S )N*   pdf.fonttype)g@g(@re   r   iX  r   +   rD   r   rs   z pt font size)rt   )r   rY   r-   r.   xaxisZset_major_locatorZNullLocatoryaxisr[   r^   ranger?   )r2   r3   r   Zfsr   r   r   test_font_scaling  s   
r   zspacing1, spacing2))r&   rD   )rD   r&   )rD   rD   c           	      C   s   d}t  }|j }|jdd|| d}|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
line2rh   r(   ZlinespacingrO   )	r-   r<   r\   r]   r?   rw   rK   widthZheight)	Zspacing1Zspacing2Ztext_stringr2   rP   text1text2Zbox1Zbox2r   r   r   test_two_2line_texts&  s   

r   c                   C   sB   t t tjddddd W d    d S 1 sw   Y  d S )Nrh   r(   r   abcr   )r   r   	TypeErrorr-   r?   r   r   r   r   test_validate_linespacing;     "r   c                  C   s:   t  \} }|dtjd |tjdd | j  d S )Nr   naninf)r-   r.   r?   rv   r   r   r\   rw   r   r   r   r   test_nonfinite_pos@  s   r   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 )
Nr6   ztext.hinting_factorr(   z	some textsvgformatpngr   r   )r-   rY   r<   r?   savefigioBytesIOrK   Z	intervalxrv   r   r   )r2   r   Zexpectedr   r   r   test_hinting_factor_backendsG  s   


r  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   )
r-   r<   rY   add_subplotr\   rw   r   
majorTickslabel1Z
get_usetex)r2   r   r   r3   usetexr   r   r   r   test_usetex_is_copiedU  s   




r  c                  C   s(   t  } | jddddd | j  d S )Nr(   z	$\frac12$Tr  )r-   r<   r?   r\   rw   rj   r   r   r   test_single_artist_usetexd  s   r  fmt)r  Zpdfr   c                 C   s:   dt jd< t  }|jddddd |jt | d d S )NTr  r(   Z2_2_2Fr  r  )r-   rY   r<   r?   r  r  r  )r  r2   r   r   r   test_single_artist_usenotexn  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 )Nrh   cr   r   r   r(   rV   r(   r4   r   rd   rz   r   r   r   r6   r   rE   )r-   r<   ry   set_axis_offr?   r   r   r   r   test_text_as_path_opacityz  s
   r  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 )NZnonezsvg.fonttyperh   z50% using `color`r  rV   r(   z50% using `alpha`r  rd   z"50% using `alpha` and 100% `color`r  r  )r   rY   r-   r<   ry   r  r?   r   r   r   r   test_text_as_text_opacity  s   

r  c                   C   s,   t ddgddg tt dgdd d S )NABr6   rD   r(   ZBoo)r-   r~   reprr?   r   r   r   r   test_text_repr  s   r  c                  C   sf   t dd\} }|jddd}|| j }|   || j }tj|	 |	 ddr1J d S )Nr6   
annotationr   r   gư>r   )
r-   r.   r/   rK   r\   r]   Ztight_layoutrv   Zallcloser   )r2   r3   ZanZextent1Zextent2r   r   r   test_annotation_update  s   r!  r  )
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 )
Nr6   ru   rz   r(   )datar   rF   offset points)r   r   r   )r   )r  r~   r   Znowr/   fig_testfig_refr3   r   r   r   test_annotation_units  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 |g  |d }|jd
dd |jddd |g  d S )NrB   rC   zaxes.titleyr6   rD   )	   g      @T)rf   Zconstrained_layoutr   z$\sum_{i} x_i$zNew wayrR   r   g)\(?)r{   zOld Way)r-   rY   r.   r>   Zset_xticklabels)r2   Zaxsr3   r   r   r   test_large_subscript_title  s   



r*  zx, rotation, halign))ri   r   rR   )r(   _   rR   )r$   r   r   )r$      rR   c                 C   sD   t jdd}d}|j| d|d||d}|j  | dks J d S )N)rB   rB   re   z?This is a very long text that should be wrapped multiple times.ri   T)wraprX   r:   z?This is a very long
text that should be
wrapped multiple
times.r-   r<   r?   r\   rw   Z_get_wrapped_text)rz   rX   Zhalignr2   sr?   r   r   r   	test_wrap  s
   
r0  c                  C   sB   t jdd} d}| jdd|ddd}| j  | d	ksJ d S )
NrB   r   re   z;This is a very $\overline{\mathrm{long}}$ line of Mathtext.r   r(   (   T)r   r-  z;This is a very $\overline{\mathrm{long}}$
line of Mathtext.r.  )r2   r/  r?   r   r   r   test_mathwrap  s
   
r3  c                  C   sh   t jdd} | jddd | j }t jdd}|d |j }|j|jks*J |j|jks2J d S )N)r   r   re   z.suptitle that is clearly too long in this caseTr-  z.suptitle that is clearly
too long in this case)r-   r<   ZsuptitleZ	_suptitlerK   Zy0Zy1)Zfig1Zwindow_extent_testZfig2Zwindow_extent_refr   r   r   test_get_window_extent_wrapped  s   


r5  c                  C   s<   t jdd} | jddddd}| j  | dksJ d S )Nr1  re   g      #@r   ZAlonglineoftexttowrapTr4  r.  r2   r?   r   r   r   test_long_word_wrap     
r7  c                  C   s<   t jdd} | jddddd}| j  | dksJ d S )Nr1  re   r   znon wrapped textTr4  r.  r6  r   r   r   test_wrap_no_wrap  r8  r9  c                 C   s`   |   }|ddg |ddg |jjd jd |  }|ddg |ddg d S )Nr   r6   u   €r4   wr   )r  r1   Zset_yticklabelsr   r  r  Z	set_colorr%  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   Zcounts)r   r    N)r-   r<   ZxlabelZylabelZget_size)r   r   r   r   r   $test_fontproperties_kwarg_precedence  s
   r=  c                  C   s@   t  } t d}| jddd|dd}| }t|d d S )Nrs   r   r   T)rH   Ztransform_rotates_text)r-   ry   mtransformsZAffine2DZ
rotate_degr?   r   r   )r3   rH   r?   resultr   r   r   test_transform_rotates_text  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   

rD  rX   zinvalid stringZ   c                 C   sD   t jtdd tddd| d W d    d S 1 sw   Y  d S )Nz5rotation must be 'vertical', 'horizontal' or a numberr   r   r   r   r   r   r   r   r   test_invalid_rotation_values  s   "rF  c                   C   sB   t t tjddddd W d    d S 1 sw   Y  d S )Nr(   r   Zfoobar)r  )r   r   r   r-   figtextr   r   r   r   test_invalid_color'  r   rH  ztext_pdf_kerning.pdfc                   C   s   t   t jddddd d S )Nr   r(   ZATATATATATATATATATArs   r   )r-   r<   rG  r   r   r   r   test_pdf_kerning,  s   rI  c                 C   sT   t  }|ddd |j  tdd | D sJ dd | D ddgks(J d S )	Nr(   u   ০c                 s   s    | ]	}t |jtV  qd S N)
isinstancemessager,   .0warnr   r   r   	<genexpr>6  s    z*test_unsupported_script.<locals>.<genexpr>c                 S   s   g | ]}|j jqS r   )rL  argsrM  r   r   r   
<listcomp>8      z+test_unsupported_script.<locals>.<listcomp>)z>Glyph 2534 (\N{BENGALI DIGIT ZERO}) missing from current font.)z7Matplotlib currently does not support Bengali natively.)r-   r<   r?   r\   rw   all)Zrecwarnr2   r   r   r   test_unsupported_script2  s   
rU  )r   r6   r   z1Error messages are incorrect with pyparsing 3.1.0)reasonc                  C   sx   t  \} }|jddddd | j  |jddddd tjtdd | j  W d    d S 1 s5w   Y  d S )Nr   $ \wrong{math} $F)Z
parse_mathTUnknown symbolr   )r-   r.   r?   r\   rw   r   r   r   r   r   r   r   test_parse_math>  s   
"rY  c                  C   s   t  \} }|ddd tjtdd | j  W d    n1 s$w   Y  t	ddi t  \} }|ddd | j  W d    d S 1 sNw   Y  d S )Nr   rW  rX  r   ztext.parse_mathF)
r-   r.   r?   r   r   r   r\   rw   r   Z
rc_contextr   r   r   r   test_parse_math_rcparamsK  s   "rZ  ztext_pdf_font42_kerning.pdfc                   C   s(   dt jd< t   t jddddd d S )Nr   r   r   r(   ZATAVATAVATAVATAVATArs   r   r-   rY   r<   rG  r   r   r   r   test_pdf_font42_kerning[  s   
r\  ztext_pdf_chars_beyond_bmp.pdfc                   C   s2   dt jd< dt jd< t   t jddddd	 d S )
Nr   r   Zstixsanszmathtext.fontsetr   r(   u   Mass $m$ 𐌈rs   r   r[  r   r   r   r   test_pdf_chars_beyond_bmpb  s   

r]  c                     s   t jj  t } | ddd | jddddd | jddddd | j  |  }i   fdd}||_	| j  g  dd	gksFJ t
 d t
 d	   krYd
ks\J  J t jj }|j|jksjJ d S )Nr$   r(   foo
barTr  c                     s&   | ^}}}}}  |t | d S rJ  )
setdefaultr   add)rQ  kwargsrP   rz   r{   r/  r   r   r   r   callv  s   z test_metrics_cache.<locals>.callr   Zbarr6   )r   r?   Z!_get_text_metrics_with_cache_implcache_clearr-   r<   r\   rw   Z_get_rendererZdraw_texlen
cache_infohitsmisses)r2   rP   rc  infor   rb  r   test_metrics_cachej  s   

,rj  c                     sj   t  \}  ddgddg fddtdD }dd |D \}}| j  t|t|ks3J d S )	Nr$  zoffset fontsize)r   r   )r6   r6   c              
      s*   g | ]} j d d| dd| dqS )r   r   Z10r#  )r   r   rt   r   r   )r/   )rN  r   r3   Ztext_coordsZxy_textr   r   rR    s    
z1test_annotate_offset_fontsize.<locals>.<listcomp>rD   c                 S   s   g | ]}|  qS r   )rK   )rN  r   r   r   r   rR    rS  )r-   r.   r   r\   rw   str)r2   ZannsZpoints_coordsZfontsize_coordsr   rk  r   test_annotate_offset_fontsize  s   
rm  c                  C   s   t ddd} | jtjd ksJ |  tjd ksJ | d | jdu s'J |  | jks0J | d | jdu s<J |  | jksEJ d S )Nr(   r^  rc   TF)r
   _antialiasedr   rY   get_antialiasedset_antialiased)r   r   r   r   test_get_set_antialiased  s   

rq  c                  C   s   t dddd} | jdu sJ |  | jksJ t dddd}|jdu s%J | |jks.J t dddd}|d | du sBJ |jdu sIJ t dd}|jtjd ksXJ d S )Nr^  r   T)rg   Frc   )r   rn  ro  rp  r   rY   )ZannotZannot2Zannot3Zannot4r   r   r   test_annotation_antialiased  s   

rr  c                 C   s   |   }|ddgddg\}tddg}|jdt||ddd d|d d < |  }|ddgddg\}tddg}|jd||dd	d
 d|d d < d S )Nr   rD   r(   r   )r   r   rF   )r   r   r   r6   r$  )r   r   r   r   )r  r~   rv   Zarrayr/   r   )r&  r'  r3   lZof_xyZan_xyr   r   r   'test_annotate_and_offsetfrom_copy_input  s   rt  )lr   r  r*   Znumpyrv   Znumpy.testingr   Zpackaging.versionr   Zparse_versionZ	pyparsingr   Z
matplotlibr   Zmatplotlib.backend_basesr   r)   r   Zmatplotlib.patchesZpatchesrI   Zmatplotlib.pyplotZpyplotr-   Zmatplotlib.transformsZ
transformsr>  Zmatplotlib.testing.decoratorsr   r   Zmatplotlib.testing._markersr	   Zmatplotlib.textr
   r   r   __version__Zpyparsing_versionr5   rA   rb   rk   rq   r   r   ZmarkZparametrizer   printr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r!  r(  r*  r0  r3  r5  r7  r9  r;  r=  r@  rD  rF  rH  rI  rU  ZxfailreleaserY  rZ  r\  r]  rj  rm  rq  rr  rt  r   r   r   r   <module>   s   

X

3





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

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








