U
    fq                     @   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! 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 Z'dd Z(edgdd Z)dd Z*ej+,de-e.d fe-d d gd!fe/d"d#fe/d$d%fe/d&d'fe/d(d)ffd*d+ Z0ed,gd-d. Z1ed/gddd0d1 Z2ed2gd3d4 Z3d5d6 Z4d7d8 Z5ej+j,d9d:d;gd<d=gd>d?d@ Z6dAdB Z7dCdD Z8dEdF Z9dGdH Z:dIdJ Z;dKdL Z<ej+,dMdNdOdPgej+,dQdNdRdSdTdUgdVdW Z=edXgdYdZ Z>ed[gd\d] Z?ed^gd_d` Z@dadb ZAedcgddde ZBdfdg ZCedhgdidj ZDej+,dkdldmdngdodp ZEdqdr ZFdsdt ZGdudv ZHedwdx ZIedydz ZJej+,d{d|d}d~gdd ZKedgdd ZLedgdd ZMdd ZNdd ZOed|gddd ZPedgdddd ZQej+,dddddgdd ZRdd ZSdd ZTdd ZUed|gddd ZVdd ZWdd ZXdd ZYej+,dddggdd ZZdd Z[edgdddd Z\dd Z]ej+j^e#j_dkdddd Z`ej+j^e#j_dkdddd Zaedgdddd Zbedgdddd Zcedd ZddS )    )datetimeN)assert_almost_equal)parse)
MouseEvent)FontProperties)check_figures_equalimage_comparison)needs_usetex)TextZ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snt
| d
ks~t
| d
kst
| d
kst
| d
kst
| 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$    f | }|t  d} |dS )N)	directory)fname)mplZget_data_path)kwproppathr   findfont A/tmp/pip-target-lpfmz8o1/lib/python/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-serif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 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subplotsannotateZget_fontnameAssertionErrorZ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    
r8   	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ylimr3   r4   r6   r   r   r   test_multilineq   s>    
             
rE   Z
multiline2Zmpl20)r   c               	      s  dt jd< t  \} }|ddg |ddg |jdddd	 d
dddddg}| j   fdd}d}t|D ].\}}|j	d| d d||dd}||| qt|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 ]0\}}|j	d| d d||dd}||| q(|j	ddddd |jdddd	 t|D ]2\}}|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	linewidthZ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)	mpatchesZ	Rectangle	transAxesZ
set_boundsget_window_extentZtransformedinvertedZboundsZ	add_patch)r6   ttrrendererr   r   draw_box   s    
z!test_multiline2.<locals>.draw_boxleftr$   r   bottomhorizontalalignmentverticalalignmentg333333?zBottom alignrI   g?r=   z	Top aligng?baselinezBaseline alignr;   )rY   rZ   rotationzBot align, rot20)
r/   rcParamsr0   set_xlimset_ylimZaxhlinecanvasget_renderer	enumeraterC   )r5   r6   stsrU   ZhoralnnstrQ   r   rS   r   test_multiline2   sP    
 
	 rg   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*   rh   Zantialiasedr<   rX         ?z
$\sqrt{x}$)r   r^   r/   r@   rC   r5   r   r   r   test_antialiasing   s    
rm   c               	   C   sH   t jjddd} t| d}t j|}W 5 Q R X |ddksDtd S )NZ	Helveticaafm)ZfontextrbZVAVAVAVAVAVA)g     @i  )r   font_managerr   openZ_afmZAFMZstring_width_heightr2   )fnfhrn   r   r   r   test_afm_kerning   s    rt   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 ]f\}}t  j||g\|_|_||\}}	|rdnd}
|j }|j||d|
d |j| q~d S )Nbutton_press_eventr*   r:   rk   rh      r(   zhello worldr<   )r>   fontsizer]   yellowredor[   )r/   r@   Zaxesr   ra   npZlinspaceZmeshgridrC   drawzipZflatgcarN   rL   xycontainsZviewLimfrozenplotset)r5   r6   ZmeventZxsystxtr   r   r   _rI   Zvlr   r   r   test_contains   s,         

r   c                  C   s`   t  \} }|jdddddid}| j  td| jf|jd }||d	i fks\t	d S )
NZhello)r(   r(   )333333?r   Z
arrowstylez->)xyxytextZ
arrowpropsru   )r*   r   F)
r/   r0   r1   ra   r|   r   Z	transDatarL   r   r2   )r5   r6   anneventr   r   r   test_annotation_contains   s       
 
r   zerr, xycoords, matchzUnknown return typez!Unknown coordinate type: \[0, 0\]fooz$'foo' is not a recognized coordinatezfoo barz('foo bar' is not a recognized coordinatez
offset fooz'xycoords cannot be an offset coordinatezaxes fooz'foo' is not a recognized unitc              	   C   sF   t  \}}tj| |d" |jddd|d |j  W 5 Q R X d S )Nmatchr   rJ   r*   r*   )r   r    )r/   r0   pytestraisesr1   ra   r|   )errr    r   r5   r6   r   r   r   test_annotate_errors   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 titlerV   loczright titleright)r/   r@   rA   rB   r3   r4   rD   r   r   r   test_titles  s    
r   Ztext_alignmentc                  C   s   t   t ddd} d}dD ]N}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   rv   )r=   rW   r\   r<   r*   z TjroundZwheat)boxstyleZ	facecoloralpha)r?   r]   bboxg      ?z$\sum_{i=0}^{j}$)r?   r]   r   g      ?)
r/   r@   rA   rC   dictr   r_   r`   r3   r4   )r6   r   r]   Z	alignmentr   r   r   test_alignment  s6            
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:   r<   r;   i  )r   rw   Z
fontweightrV      i  r   )r/   r@   rA   rB   rD   r   r   r   test_axes_titles0  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snt
qn|jddddd}| j  || jj}d}||f|_| j  || jj}t|j	|j	D ]\}}|| |kst
qd S )NtestrJ   figure pixels)r   
textcoords   )r/   r0   r1   ra   r|   rO   rT   Zset_positionr}   minr2   Zxyann)r5   r6   r   Zinit_posZ	shift_valZpost_posr7   br   r   r   test_set_position:  s:       

   


r   c                  C   sP  t  } | ddd}|d | }|j|j }|d | }|j|j }|d | }|j}||| dkst||dkst||d|  dkst||d	|  d
kst|||d  dkst|||d  |d  dkst|||d  |d  dks(t|||d  |d  dksLtd S )Nr   ? imZiiiimmmmr   gV-?gx&1?r:               
   )	r/   r@   rC   Zset_textrO   x1Zx0Z_char_index_atr2   )r5   rC   r   Zsize_iZsize_moriginr   r   r   test_char_index_atZ  s&    


$$r   rC   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sttd S )	Nr*   rV   rW   )r>   r?   r   )dpi皙?Zrtol)r/   r0   rC   ra   r|   r   rO   r{   testingassert_allclose
get_pointsr2   )rC   r5   r6   t1r   Zbbox1Zbbox2r   r   r   test_non_default_dpit  s    
r   c                   C   s0   t dd dkstt dd dks,td S )N
horizontalr]           verticalg     V@r
   get_rotationr2   r   r   r   r   test_get_rotation_string  s    r   c                  C   s$   dD ]} t | d | kst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tqd S )N)C      )   r   )r
   r   floatr2   r   r   r   r   test_get_rotation_int  s    r   c                	   C   s$   t t tdd W 5 Q R X 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td S )Nr   r   r   r   r   r   r   test_get_rotation_none  s    r   c                  C   s8   t dddgdddgD ]\} }tt| d | qd S )Ng     v@g     w@g	@r   g      1@gfffff&f@r   )r}   r   r
   r   )r   jr   r   r   test_get_rotation_mod360  s    r   r>   r<   r   rV   r?   r=   rW   r\   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   )r]   r?   r>   r*   r   Zrotation_modeanchordefault)r*   r*   r   )r*   r*   r   )
r/   r0   r   rC   ra   r|   r   rO   rT   r   )r>   r?   r5   r6   r   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?rR   T)ZbackgroundcolorrK   r*   zIs fancy bbox clipped?rK   r   zround, pad=0.1)r/   rC   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+ ptsrv   r;   zaxes points    r   r   r   r    rw   - ptsir=   r   r   r   r    rw   r?   + fracrh   r   r   - frac皙+ pixels      zaxes pixels- pixelsir/   r0   r1   r5   r6   r   r   r   "test_annotation_negative_ax_coords  s\                      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      r=   r   r   r   g?zfigure fractionr   r   r*   r   2   r   r   ir)   r   r   r   r   r   #test_annotation_negative_fig_coords  s\                      r   c                  C   s   t dd\} \}}t   |jr&t|jr0t| jr:t|ddd}|jsRt|js\t| jsft|jdddgd}|jst|jst| jstt   |jrt|jrt| jrtd S )Nr:   rH   r*   Zaardvarkr   )r/   r0   Zdraw_allstaler2   rC   r1   )r5   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 )Nr:   rH   r   r   Tr   )r{   randomseedr/   r0   ZrandrC   )r5   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:td S )Nr   z	font.sizeZlarger   r)   )r   r^   rp   r   Zget_size_in_pointsr2   )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j|d|d qVd S )N*   pdf.fonttype)g@g(@ri   r   iX  r   +   rH   r   rv   z{fs} pt font size)fs)rw   )r   r^   r/   r0   xaxisZset_major_locatorZNullLocatoryaxisr`   rc   rangerC   format)r5   r6   r   r   r   r   r   test_font_scaling  s    
r  zspacing1, spacing2)r(   rH   )rH   r(   )rH   rH   c           	      C   s   d}t  }|j }|jdd|| d}|jdd||d}|j  |j|d}|j|d}|j|jkslt| |kr|j	|j	kstn|j	|j	kstd S )Nzline1
line2rk   r*   ZlinespacingrS   )
r/   r@   ra   rb   rC   r|   rO   widthr2   height)	Zspacing1Zspacing2Ztext_stringr5   rT   text1text2Zbox1Zbox2r   r   r   test_two_2line_texts"  s    

r	  c                	   C   s,   t t tjddddd W 5 Q R X d S )Nrk   r*   r   abcr  )r   r   	TypeErrorr/   rC   r   r   r   r   test_validate_linespacing7  s    r  c                  C   s:   t  \} }|dtjd |tjdd | j  d S )Nr   naninf)r/   r0   rC   r{   r  r  ra   r|   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 )
Nr:   ztext.hinting_factorr*   z	some textsvgr  pngr   r   )r/   r^   r@   rC   savefigioBytesIOrO   Z	intervalxr{   r   r   )r5   r   expectedr   r   r   test_hinting_factor_backendsC  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sZt
qZqJd S )NFtext.usetexy   Tz   )r/   r@   r^   add_subplotra   r|   r   
majorTickslabel1Z
get_usetexr2   )r5   r   r   r6   usetexr   r   r   r   test_usetex_is_copiedQ  s    




r  c                  C   s(   t  } | jddddd | j  d S )Nr*   z	$\frac12$Tr  )r/   r@   rC   ra   r|   rl   r   r   r   test_single_artist_usetex`  s    r!  fmtr  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/   r^   r@   rC   r  r  r  )r"  r5   r   r   r   test_single_artist_usenotexj  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 )Nrk   cr   r   r   r*   r[   r*   r7   r   rh   r   r   r   r   r:   r   rI   )r/   r@   r~   set_axis_offrC   r   r   r   r   test_text_as_path_opacityv  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 )Nnonezsvg.fonttyperk   z50% using `color`r%  r[   r*   z50% using `alpha`r&  rh   z"50% using `alpha` and 100% `color`r'  r(  )r   r^   r/   r@   r~   r)  rC   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Br:   rH   r*   Boo)r/   r   reprrC   r   r   r   r   test_text_repr  s    r1  c                  C   sf   t dd\} }|jddd}|| j }|   || j }tj|	 |	 ddrbt
d S )Nr:   
annotationr   r   gư>r   )r/   r0   r1   rO   ra   rb   Ztight_layoutr{   Zallcloser   r2   )r5   r6   ZanZextent1Zextent2r   r   r   test_annotation_update  s    r3  )
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:   rz   r   r*   )datar   rJ   zoffset points)r    r   r   )r    )r  r   r   nowr1   Zfig_testZfig_refr6   r   r   r   test_annotation_units  s     r8  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 )NrF   rG   zaxes.titleyr:   rH   )	   g      @T)rj   Zconstrained_layoutr   z$\sum_{i} x_i$zNew wayrV   r   g)\(?)r   zOld Way)r/   r^   r0   rB   Zset_xticklabels)r5   Zaxsr6   r   r   r   test_large_subscript_title  s    



r:  zx, rotation, halign)ffffff?r   rV   )r*   _   rV   )r&   r   r   )r&      rV   c                 C   sD   t jdd}d}|j| d|d||d}|j  | dks@td S )N)rF   rF   ri   z?This is a very long text that should be wrapped multiple times.r;  T)wrapr]   r>   z?This is a very long
text that should be
wrapped multiple
times.r/   r@   rC   ra   r|   Z_get_wrapped_textr2   )r   r]   Zhalignr5   srC   r   r   r   	test_wrap  s
    
rA  c                  C   sh   t jdd} | jddd | j }t jdd}|d |j }|j|jksTt|j|jksdtd S )N)r   r   ri   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	_suptitlerO   Zy0r2   y1)Zfig1Zwindow_extent_testZfig2Zwindow_extent_refr   r   r   test_get_window_extent_wrapped  s    


rD  c                  C   s<   t jdd} | jddddd}| j  | dks8td S )NrF   r   ri   g      #@r   ZAlonglineoftexttowrapTrB  r?  r5   rC   r   r   r   test_long_word_wrap  s    
rG  c                  C   s<   t jdd} | jddddd}| j  | dks8td S )NrE  ri   r   znon wrapped textTrB  r?  rF  r   r   r   test_wrap_no_wrap  s    
rH  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   €r7   wr   )r  r4   Zset_yticklabelsr   r  r  Z	set_colorr7  r   r   r   test_buffer_size  s    rJ  c                  C   sL   t   t jdddd} t jdddd}|  dks8t| dksHtdS )z>Test that kwargs take precedence over fontproperties defaults.valuezTimes New Romang      D@)r!   r   counts)r   r!   N)r/   r@   ZxlabelZylabelget_sizer2   )r  r  r   r   r   $test_fontproperties_kwarg_precedence  s
    rN  c                  C   s@   t  } t d}| jddd|dd}| }t|d d S )Nrv   r   r   T)rL   Ztransform_rotates_text)r/   r~   mtransformsZAffine2DZ
rotate_degrC   r   r   )r6   rL   rC   resultr   r   r   test_transform_rotates_text  s    rQ  c                  C   sV   t tddd d} t | }t }||  | d |d ks>t| d |d ksRtd S )Nr"   )r#   )r!   r   r!   r   )r   r   r
   updater2   )Zinpcacher   r   r   r   test_update_mutate_input  s    

rT  r]   zinvalid stringZ   c              	   C   s.   t jtdd tddd| d W 5 Q R X d S )Nz5rotation must be 'vertical', 'horizontal' or a numberr   r   r   r   r   r   r   r   r   test_invalid_rotation_values  s
    rV  c                	   C   s,   t t tjddddd W 5 Q R X d S )Nr*   r   Zfoobar)r$  )r   r   r   r/   figtextr   r   r   r   test_invalid_color  s    rX  ztext_pdf_kerning.pdfc                   C   s   t   t jddddd d S )Nr   r*   ZATATATATATATATATATArv   r   )r/   r@   rW  r   r   r   r   test_pdf_kerning  s    rY  c                 C   sT   t  }|ddd |j  tdd | D s6tdd | D ddgksPtd S )	Nr*   u   ০c                 s   s   | ]}t |jtV  qd S N)
isinstancemessager.   .0warnr   r   r   	<genexpr>)  s     z*test_unsupported_script.<locals>.<genexpr>c                 S   s   g | ]}|j jqS r   )r\  argsr]  r   r   r   
<listcomp>+  s     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@   rC   ra   r|   allr2   )Zrecwarnr5   r   r   r   test_unsupported_script%  s    
rd  )r   r:   r   z1Error messages are incorrect with pyparsing 3.1.0)reasonc               	   C   sb   t  \} }|jddddd | j  |jddddd tjtdd | j  W 5 Q R X d S )Nr   $ \wrong{math} $F)Z
parse_mathTUnknown symbolr   )r/   r0   rC   ra   r|   r   r   r   r   r   r   r   test_parse_math1  s    
rh  c               	   C   s   t  \} }|ddd tjtdd | j  W 5 Q R X t	ddi* t  \} }|ddd | j  W 5 Q R X d S )Nr   rf  rg  r   ztext.parse_mathF)
r/   r0   rC   r   r   r   ra   r|   r   Z
rc_contextr   r   r   r   test_parse_math_rcparams>  s    ri  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ATAVATAVATAVATAVATArv   r   r/   r^   r@   rW  r   r   r   r   test_pdf_font42_kerningN  s    
rk  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$ 𐌈rv   r   rj  r   r   r   r   test_pdf_chars_beyond_bmpU  s    

rl  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   dd	gkst
t d t d	   krd
ksn t
t jj }|j|jkst
d S )Nr&   r*   zfoo
barTr   c                     s&   | ^}}}}}  |t | d S rZ  )
setdefaultr   add)ra  kwargsrT   r   r   r@  r   r   r   r   calli  s    z test_metrics_cache.<locals>.callr   barr:   )r   rC   Z!_get_text_metrics_with_cache_implcache_clearr/   r@   ra   r|   Z_get_rendererZdraw_texr2   len
cache_infohitsmisses)r5   rT   rq  infor   rp  r   test_metrics_cache]  s    

*ry  )er   r  r,   numpyr{   Znumpy.testingr   Zpackaging.versionr   parse_version	pyparsingr   Z
matplotlibr   Zmatplotlib.backend_basesr   r+   r   Zmatplotlib.patchesZpatchesrM   Zmatplotlib.pyplotZpyplotr/   Zmatplotlib.transformsZ
transformsrO  Zmatplotlib.testing.decoratorsr   r   Zmatplotlib.testing._markersr	   Zmatplotlib.textr
   __version__Zpyparsing_versionr8   rE   rg   rm   rt   r   r   markZparametrizeRuntimeError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,  r1  r3  r8  r:  rA  rD  rG  rH  rJ  rN  rQ  rT  rV  rX  rY  rd  Zxfailreleaserh  ri  rk  rl  ry  r   r   r   r   <module>   s  

X

3






	 
 




	



	



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