
    P/PhI                     	   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 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             Z, e#dg          d             Z- e#dgd          d             Z. e#dgd          d             Z/d Z0 e#dg          d             Z1d Z2ej3        4                    de5e6dfe5d d gdfe7ddfe7d d!fe7d"d#fe7d$d%ff          d&             Z8 e#d'g          d(             Z9 e#d)gd          d*             Z: e#d+g          d,             Z;d- Z<d. Z=ej3        4                    d/d0d1gd2d3g4          d5             Z>d6 Z?d7 Z@d8 ZAd9 ZBd: ZCd; ZDej3        4                    d<g d=          ej3        4                    d>g d?          d@                         ZE e#dAg          dB             ZF e#dCg          dD             ZG e#dEg          dF             ZHdG ZI e#dHg          dI             ZJdJ ZK e#dKg          dL             ZLej3        4                    dMg dN          dO             ZMdP ZNdQ ZOdR ZPe%dS             ZQe%dT             ZRej3        4                    dUg dV          dW             ZS e#dXg          dY             ZT e#dZg          d[             ZUd\ ZVd] ZW e"d^g_          d`             ZX e#dagd          db             ZYej3        4                    dcg dd          de             ZZdf Z[dg Z\dh Z]di Z^ e"d^g_          dj             Z_dk Z`dl Zadm Zbej3        4                    dndodpgg          dq             Zcdr Zd e#dsgd          dt             Zedu Zfej3        g                    e+jh        dvk    dwx          dy             Ziej3        g                    e+jh        dvk    dwx          dz             Zj e#d{gd          d|             Zk e#d}gd          d~             Zle%d             Zmd Znd Zod Zp e"d^g_          d             Zq e"            d             Zr e"            d             Zsd Ztd Zud Zvd Zw e#dgd^g          d             Zx e#dgd^g          d             ZydS )    )datetimeN)assert_almost_equal)parse)
MouseEvent)RendererAgg)Figure)FontProperties)GridSpec)check_figures_equalimage_comparison)needs_usetex)Text
Annotation
OffsetFromfont_stylesc                    	
 	
fd} ddl m	m
 t          j        ddt
          d           t          j                    \  }} | dd	d	d
          }|                    ddd|          }|	                                dk    sJ |
                                d	k    sJ |                                d	k    sJ |                                d	k    sJ |                                d	k    sJ  | dd	d	ddd
          }|                    ddd|            | ddd	ddd
          }|                    ddd|            | dd	d	ddd
          }|                    ddd|            | dd	d	ddd
          }|                    d d!d|           |                    g            |                    g            d S )"Nc                  h     di | } |t          j                              } |          S )N)	directory)fname )mplget_data_path)kwproppathr	   findfonts      Z/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/matplotlib/tests/test_text.pyfind_matplotlib_fontz.test_font_styles.<locals>.find_matplotlib_font   sH    ~####x(9(;(;<<<~D))))    r   )r	   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 SansFooboldi  )r$   r%   r&   weightstretchr'   z	Bold Font)r(   皙?
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annotateget_fontnameget_fontstyleget_fontvariant
get_weightget_stretch
set_xticks
set_yticks)r   figaxnormal_fonta	bold_fontbold_italic_font
light_fontcondensed_fontr	   r   s            @@r   test_font_stylesrN      s   * * * * * *
 A@@@@@@@I(	* * * * lnnGC&&	  K
 	 "	 	 	$ 	$A
 >>},,,,??(((((****<<>>X%%%%==??h&&&&$$  I KK  	  " " " ,+   KK '	  ) ) ) &%  J KK !	  # # # *)  N KK %	  ' ' ' MM"MM"r   	multilinec                     t          j                     t          j        ddd          } |                     d           t          j        dddddd	           t          j        ddd
ddd	           t          j        dddddd	           t          j        dd           t          j        dd           |                     g            |                     g            d S )N   zmultiline
text alignmentr0   r7   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textxlimylimrD   rE   rG   s    r   test_multiliner^   t   s    JLLL	Q1		BLL,---HS'bX%I I I I HS3"    HS3"    HQNNNHQMM"MM"r   
multiline2mpl20)r%   c            	         dt           j        d<   t          j                    \  } }|                    ddg           |                    ddg           |                    ddd	           g d
}| j                                        fd}d}t          |          D ]1\  }}|	                    d|z  dz   d||d          } |||           2|	                    dddd           |                    ddd	           t          |          D ]1\  }}|	                    d|z  dz   d||d          } |||           2|	                    dddd           |                    ddd	           t          |          D ]1\  }}|	                    d|z  dz   d||d          } |||           2|	                    dddd           |                    ddd	           t          |          D ]2\  }}|	                    d|z  dz   d||dd          } |||           3|	                    dddd           d S )N   text.kerning_factorr   gffffff?   r7   C2r3   )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                    t          j        dddd| j                  }|                    |                                                  | j                                                  j                   |                     |           d S )Nr   r   rQ   F)clip_on	transform)	mpatches	Rectangle	transAxes
set_boundsget_window_extenttransformedinvertedbounds	add_patch)rG   ttrrenderers      r   draw_boxz!test_multiline2.<locals>.draw_box   s    vq!U)+7 7 7	  **[..0011	 	 	 	Qr   leftr0   r(   bottom)horizontalalignmentverticalalignmentg333333?zBottom alignrf   g?rT   z	Top aligng?baselinezBaseline alignrR   )r|   r}   rotationzBot align, rot20)
r<   rcParamsr=   set_xlimset_ylimaxhlinecanvasget_renderer	enumeraterZ   )	rF   rG   stsry   horalnnstrv   rx   s	           @r   test_multiline2r      s    +,CL&'lnnGCKKCKKAJJs$#J...A A ACz&&((H     EC..  BWWS2X^S"%'/  1 1RGGCnDG111JJs$#J...C..  BWWS2X^S"%',  . .RGGCkG...JJs$#J...C..  BWWS2X^S"%'1  3 3RGGC&dG333JJs$#J...C..  BWWS2X^S"%'/"  > >RGGC(G55555r   zantialiased.pngc                  b   dt           j        d<   t          j        d          } |                     dddddd	
           |                     dddddd	
           d	t           j        d<   |                     dddddd
           |                     dddddd
           dt           j        d<   d S )NFtext.antialiased)g      @      ?figsizer3   r   antialiasedrS   T)r|   r}   r         ?z
$\sqrt{x}$ffffff?znot antialiased)r   r   r<   rW   rZ   rF   s    r   test_antialiasingr      s    ',CL#$
*\
*
*
*CHHS$8'T  ; ; ;HHS$8'T  ; ; ; (,CL#$HHS$)x'U  < < <HHS$8'U  < < < (-CL#$$$r   c                     t           j                            dd          } t          | d          5 }t           j                            |          }d d d            n# 1 swxY w Y   |                    d          dk    sJ d S )N	Helveticaafm)fontextrbVAVAVAVAVAVA)g     @i  )r   font_managerr   open_afmAFMstring_width_height)fnfhr   s      r   test_afm_kerningr      s    			"	";	"	>	>B	b$ 2hll2              "">22mCCCCCCs    AA"%A"ztext_contains.pngc                     t          j                    } t          j                    }t          d| j        dddd           }t          j        ddd          }t          j        ddd          }t          j        ||          \  }}t          j        dddd	dd
          }| j        	                                 t          |j        |j                  D ]\  }}t          j                    j                            ||g          \  |_        |_        |                    |          \  }}	|rdnd}
|j                                        }|                    ||d|
           |j                            |           d S )Nbutton_press_eventr7   rQ   r   r      r5   zhello worldrS   )rU   fontsizer   yellowredor~   )r<   rW   axesr   r   nplinspacemeshgridrZ   drawzipflatgcaro   rl   xycontainsviewLimfrozenplotset)rF   rG   meventxsystxtr   r   r   _rf   vls               r   test_containsr      sd   
*,,C	B,cj#sAtLLF	T4	$	$B	T4	$	$B[R  FB
(S-HrBH H HC JOOBGRW%%  1 WYY0::Aq6BB&(ll6**!$/% Z  
1c'''

r r   c                  *   t          j                    \  } }|                    dddddi          }| j                                         t          d| j        g|j                            d          R  }|                    |          d	i fk    sJ d S )
Nhello)r5   r5   )333333?r   
arrowstylez->)xyxytext
arrowpropsr   )r7   r   F)	r<   r=   r>   r   r   r   	transDatarl   r   )rF   rG   annevents       r   test_annotation_containsr      s     lnnGC
++HX<:N  P PCJOOcjM+-<+A+A(+K+KM M ME<<5"+------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                     t          j                    \  }}t          j        | |          5  |                    ddd|           |j                                         d d d            d S # 1 swxY w Y   d S )Nmatchr   rj   r7   r7   )r   r*   )r<   r=   pytestraisesr>   r   r   )errr*   r   rF   rG   s        r   test_annotate_errorsr     s     lnnGC	s%	(	(	(  
D&hGGG
                 s   3A--A14A1titlesc                     t          j                     t          j        ddd          } |                     dd           |                     dd           |                     g            |                     g            d S )NrQ   z
left titlerz   loczright titleright)r<   rW   rX   rY   rD   rE   r]   s    r   test_titlesr     sx     JLLL	Q1		BLL6L***LLGL,,,MM"MM"r   text_alignmentc                     t          j                     t          j        ddd          } d}dD ]T}dD ]O}|                     |d|dz   ||t	          ddd	          
           |                     |dd||           |dz  }PU|                     ddgddg           |                     ddgddg           |                     dd           |                     dd           |                     g            | 	                    g            d S )NrQ   r(   )r   r   )rT   r{   r   rS   r7   z Tjroundwheat)boxstyle	facecoloralpha)rV   r   bboxg      ?z$\sum_{i=0}^{j}$)rV   r   r   g      ?)
r<   rW   rX   rZ   dictr   r   r   rD   rE   )rG   r   r   	alignments       r   test_alignmentr     sK   JLLL	Q1		BA  @ 	 	IGG3	E)i(7gSIII  K K K GG3+	H  N N NHAA	 GGQFS#JGGQFS#JKK1KK3MM"MM"r   zaxes_titles.pngc                      t          j                     t          j        ddd          } |                     dddd           |                     dddd           |                     d	d	dd           d S )
NrQ   rS   rR   i  )r   r   
fontweightrz      i  r   )r<   rW   rX   rY   r]   s    r   test_axes_titlesr   7  sv     JLLL	Q1		BLLx"LEEELLVbSLAAALLgsLCCCCCr   c                  J   t          j                    \  } }|                    dddd          }| j                                         |                    | j        j                  }d}|                    ||f           | j                                         |                    | j        j                  }t          |j	        |j	                  D ]\  }}||z   |k    sJ |                    dddd          }| j                                         |                    | j        j                  }d}||f|_
        | j                                         |                    | j        j                  }t          |j	        |j	                  D ]\  }}||z   |k    sJ d S )Ntestrj   figure pixels)r   
textcoords   )r<   r=   r>   r   r   rq   rx   set_positionr   minxyann)rF   rG   r   init_pos	shift_valpost_posrI   bs           r   test_set_positionr   A  s   lnnGC ++v/  C CCJOO$$SZ%899HIi+,,,JOO$$SZ%899HHL(,// " "19}!!!!! ++v/  C CCJOO$$SZ%899HII&CIJOO$$SZ%899HHL(,// " "19}!!!!!" "r   c                     t          j                    } |                     ddd          }|                    d           |                                }|j        |j        z
  }|                    d           |                                }|j        |j        z
  }|                    d           |                                }|j        }|                    ||z
            dk    sJ |                    |          dk    sJ |                    |d|z  z             dk    sJ |                    |d	|z  z             d
k    sJ |                    ||dz  z             dk    sJ |                    ||dz  z   |dz  z             dk    sJ |                    ||dz  z   |dz  z             dk    sJ |                    ||dz  z   |dz  z             dk    sJ d S )Nr(   ? imiiiimmmmr   gV-?gx&1?rQ               
   )r<   rW   rZ   set_textrq   x1x0_char_index_at)rF   rZ   r   size_isize_morigins         r   test_char_index_atr
  a  s   
*,,C88Cb!!DMM#!!##DWtwFMM#!!##DWtwFMM*!!##DWFv//14444v&&!++++vf455::::vf455::::vq011Q6666vq06!8;<<AAAAvq06!8;<<AAAAvq06"9<==BBBBBBr   rZ   r   Oemptyz	non-empty)idsc                    t          j                    \  }}|                    dd| dd          }|j                                         |j        }|                                }|                    |dz            }t          j        	                    |
                                |
                                dz  d           |j        |k    sJ d S )	Nr7   rz   r{   )rU   rV   r  dpi皙?rtol)r<   r=   rZ   r   r   r  rq   r   testingassert_allclose
get_points)rZ   rF   rG   t1r  bbox1bbox2s          r   test_non_default_dpir  {  s    lnnGC	c4Fx	8	8BJOO
'C  ""E  S2X ..EJu//1153C3C3E3E3J$(  * * * 7c>>>>>>r   c                      t          d                                          dk    sJ t          d                                          dk    sJ d S )N
horizontalr           verticalg     V@r   get_rotationr   r   r   test_get_rotation_stringr"    sX    &&&3355;;;;$$$1133s::::::r   c                  `    dD ]*} t          |                                           | k    sJ +d S )N)g      .@g333330@gYS@r  r   r   s    r   test_get_rotation_floatr%    sF     4 4Q,,..!333334 4r   c                  z    dD ]7} t          |                                           t          |           k    sJ 8d S )N)C      )   r  )r   r!  floatr$  s    r   test_get_rotation_intr+    sL     ; ;Q,,..%((:::::; ;r   c                      t          j        t                    5  t          d           d d d            d S # 1 swxY w Y   d S )N
hozirontalr  r   r   
ValueErrorr   r   r   r   test_get_rotation_raisesr0    s    	z	"	" $ $l####$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $s   8<<c                  V    t          d                                           dk    sJ d S )Nr  r  r   r   r   r   test_get_rotation_noner2    s0    ++--444444r   c                      t          g dg d          D ]5\  } }t          t          |                                           |           6d S )N)g     v@g     w@g	@)r  g      1@gfffff&f@r  )r   r   r   r!  )r   js     r   test_get_rotation_mod360r5    se    +++-=-=-=>> @ @1D!,,,99;;Q????@ @r   rU   )rS   r   rz   rV   )rS   rT   r{   r   center_baselinec                    t          j                    \  }}t          d||           } |j        dddi|} |j        dddi|}|j                                         t          |                    |j        j                  	                                |                    |j        j                  	                                           d S )Nr   )r   rV   rU   )r7   r7   r   rotation_modeanchordefault)
r<   r=   r   rZ   r   r   r   rq   rx   r  )rU   rV   rF   rG   r   t0r  s          r   %test_null_rotation_with_rotation_moder<    s     lnnGC	qRB	'	'	'B		>	>x	>2	>	>B		?	?y	?B	?	?BJOO,,SZ-@AALLNN,,SZ-@AALLNNP P P P Pr   text_bboxclipc                      t          j        ddddd           t          j        dddd	          } |                     d
di           d S )Nr   r0   zIs bbox clipped?rw   T)backgroundcolorrk   r7   zIs fancy bbox clipped?rk   r   zround, pad=0.1)r<   rZ   set_bbox)ts    r   test_bbox_clippingrC    sU    HS#)3MMMMc3TBBBAJJ
,-.....r   z!annotation_negative_ax_coords.pngc            	         t          j                    \  } }|                    dddgdddgdd           |                    dddgdddgddd	
           |                    dddgdddgdd           |                    dddgdddgddd	
           |                    dddgdddgdd           |                    dddgdddgddd	
           d S )N+ ptsr   rR   zaxes points    r   r   r   r*   r   - ptsirT   r   r   r   r*   r   rV   + fracr   r  r)   - frac皙+ pixels      zaxes pixels- pixelsir<   r=   r>   rF   rG   s     r   "test_annotation_negative_ax_coordsrS    s]   lnnGCKKBxM8mb  B B B KKCy]9}r     KKd|$</B  H H H KKe}%=?R    
 KK
Ry]9}r  C C C KK
Szm:      r   z"annotation_negative_fig_coords.pngc            	         t          j                    \  } }|                    dddgdddgdd           |                    ddd	gddd	gddd
           |                    dddgdddgdd           |                    dddgdddgddd
           |                    dddgdddgdd           |                    dddgdddgddd
           d S )NrE  r  x   zfigure pointsrF  rG  rH     rT   rI  rJ  r  g?zfigure fractionrK  rL  r7   rM  2   r   rP  ir6   rQ  rR  s     r   #test_annotation_negative_fig_coordsrY    sa   lnnGCKKCy_9  E E E KKSzo:"     KKd|0A$<*;b  J J J KKs|0A3<*;b    
 KK
BxO8o  D D D KK
Szo:"      r   c                     t          j        dd          \  } \  }}t          j                     |j        rJ |j        rJ | j        rJ |                    ddd          }|j        sJ |j        sJ | j        sJ |                    dddg          }|j        sJ |j        sJ | j        sJ t          j                     |j        rJ |j        rJ | j        rJ d S )NrQ   rd   r7   aardvarkr   )r<   r=   draw_allstalerZ   r>   )rF   ax1ax2txt1ann1s        r   test_text_stalerc    s   l1a((OC#sLNNNyyy88BJ''D9:9<<
Bx<00D9:9LNNNyyyr   zagg_text_clip.pngc                  $   t           j                            d           t          j        d          \  } \  }}t           j                            dd          D ]5\  }}|                    ||dd           |                    ||d           6d S )NrQ   rd   r  r   Tr@  )r   randomseedr<   r=   randrZ   )rF   r_  r`  r   r   s        r   test_agg_text_cliprh    s    INN1l1ooOC#s	r1%%  1Aud+++Au r   c                      dt           j        d<   t           j                            d          } |                                 }dt           j        d<   ||                                 k    sJ d S )Nr  z	font.sizelarger'   r6   )r   r   r   r	   get_size_in_points)fpsz1s     r   test_text_size_bindingro    sg     "CL			(	(g	(	6	6B



!
!C #CL"''))))))))r   zfont_scaling.pdfc                     dt           j        d<   t          j        d          \  } }|j                            t          j                               |j                            t          j                               |                    dd           t          t          ddd	                    D ]$\  }}|                    d
|dz  | d|           %d S )N*   pdf.fonttype)g@g(@r   rV  iX  r   +   rd   r(   r   z pt font size)r   )r   r   r<   r=   xaxisset_major_locatorNullLocatoryaxisr   r   rangerZ   )rF   rG   r   fss       r   test_font_scalingrz    s    #%CL l;///GCHs00111Hs00111KKS5B??++ > >2
QrTb///"====> >r   zspacing1, spacing2))r5   rd   )rd   r5   )rd   rd   c                    d}t          j                    }|j                                        }|                    dd||           }|                    dd||          }|j                                         |                    |          }|                    |          }|j        |j        k    sJ | |k    r|j        |j        k    sJ d S |j        |j        k    sJ d S )Nzline1
line2r   r7   linespacingrx   )	r<   rW   r   r   rZ   r   rq   widthheight)	spacing1spacing2text_stringrF   rx   text1text2box1box2s	            r   test_two_2line_textsr  )  s     K
*,,Cz&&((HHHT3HBBEHHT3HBBEJOO""H"55D""H"55D :####8{dk)))))){dk))))))r   c                      t          j        t                    5  t          j        dddd           d d d            d S # 1 swxY w Y   d S )Nr   r7   r   abcr|  )r   r   	TypeErrorr<   rZ   r   r   r   test_validate_linespacingr  >  s    	y	!	! 4 4b%U33334 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4   A  AAc                      t          j                    \  } }|                    dt          j        d           |                    t          j        dd           | j                                         d S )Nr   naninf)r<   r=   rZ   r   r  r  r   r   rR  s     r   test_nonfinite_posr  C  sY    lnnGCGGArvuGGBFAuJOOr   c                     dt           j        d<   t          j                    } |                     ddd          }|                     t          j                    d           |                                j        }|                     t          j                    d           t          j
                            |                                j        |d	           d S )
NrQ   ztext.hinting_factorr7   z	some textsvgformatpngr(   r  )r<   r   rW   rZ   savefigioBytesIOrq   	intervalxr   r  r  )rF   rB  expecteds      r   test_hinting_factor_backendsr  J  s    *+CL&'
*,,Cc;''AKK
UK+++""$$.HKK
UK+++Jq2244>$'  ) ) ) ) )r   c                  f   t          j                    } dt           j        d<   |                     d          }dt           j        d<   |                     d          }| j                                         |df|dffD ]3\  }}|j        j        D ]!}|j        	                                |k    sJ "4d S )NFtext.usetexy   Tz   )
r<   rW   r   add_subplotr   r   rt  
majorTickslabel1
get_usetex)rF   r_  r`  rG   usetexrB  s         r   test_usetex_is_copiedr  X  s     *,,C"'CL
//#

C"&CL
//#

CJOOU|c4[1 3 3
F$ 	3 	3A8&&((F22222	33 3r   c                      t          j                    } |                     dddd           | j                                         d S )Nr7   z	$\frac12$Tr  )r<   rW   rZ   r   r   r   s    r   test_single_artist_usetexr  g  sA    
 *,,CHHR\$H///JOOr   fmt)r  pdfr  c                     dt           j        d<   t          j                    }|                    dddd           |                    t          j                    |            d S )NTr  r7   2_2_2Fr  r  )r<   r   rW   rZ   r  r  r  )r  rF   s     r   test_single_artist_usenotexr  q  sW     #'CL
*,,CHHRWUH+++KK
SK)))))r   ztext_as_path_opacity.svgc                     t          j                     t          j                                                     t          j        dddd           t          j        dddd           t          j        ddd	dd
           d S )Nr   cr   r   r   r7   r~   r7   rI   r   r   r   r   r   r   rQ   r   rf   )r<   rW   r   set_axis_offrZ   r   r   r   test_text_as_path_opacityr  }  sx    JLLLGIIHT4N3333HT33''''HT4C|<<<<<<r   ztext_as_text_opacity.svgc                  &   dt           j        d<   t          j                     t          j                                                     t          j        dddd           t          j        dddd	           t          j        dd
ddd           d S )Nnonezsvg.fonttyper   z50% using `color`r  r~   r7   z50% using `alpha`r  r   z"50% using `alpha` and 100% `color`r  r  )r   r   r<   rW   r   r  rZ   r   r   r   test_text_as_text_opacityr    s    #)CL JLLLGIIHT4,NCCCCHT3+37777HT4=S! ! ! ! ! !r   c                      t          j        ddgddg           t          t          j        dgdd                     d S )NABrQ   rd   r7   Boo)r<   r   reprrZ   r   r   r   test_text_reprr    s@    Hc3Z!Q   3%e	$	$%%%%%r   c                     t          j        dd          \  } }|                    dd          }|                    | j                                                  }|                                  |                    | j                                                  }t          j        |	                                |	                                d          rJ d S )NrQ   
annotationr   r\  gư>r  )
r<   r=   r>   rq   r   r   tight_layoutr   allcloser  )rF   rG   anextent1extent2s        r   test_annotation_updater    s    l1a  GC	\j	1	1B""3:#:#:#<#<==G""3:#:#:#<#<==G{7--//1C1C1E1E $& & & & & & & &r   r  )
extensionsc                    |                                  }|                    t          j                    dd           |                    dt          j                    dfddd           |                                 }|                    t          j                    dd           |                    dt          j                    dfd	           d S )
NrQ   r   r   r7   )datar)   rj   offset points)r*   r   r   )r*   )r  r   r   nowr>   fig_testfig_refrG   s      r   test_annotation_unitsr    s    					BGGHLNNAs###KKhlnnc*5N/  ; ; ; 
				BGGHLNNAs###KKhlnnc*5NKOOOOOr   zlarge_subscript_title.pngc                     dt           j        d<   d t           j        d<   t          j        dddd          \  } }|d	         }|                    d
           |                    dd           |                    g            |d         }|                    d
d           |                    dd           |                    g            d S )Nrb   rc   zaxes.titleyrQ   rd   )	   g      @T)r   constrained_layoutr   z$\sum_{i} x_i$zNew wayrz   r   g)\(?)r   zOld Way)r<   r   r=   rY   set_xticklabels)rF   axsrG   s      r   test_large_subscript_titler    s     +,CL&'"&CL|Aq(tLLLHC	QBLL"###LLL'''r	QBLL"dL+++LLL'''rr   zx, rotation, halign))r   r   rz   )r7   _   rz   )r3   r   r   )r3      rz   c                 *   t          j        d          }t          dd|          }|                    |d                   }d}|                    | d|d||	          }|j                                         |                                d
k    sJ d S )N)   r  r   r   )nrowsncolsrW   rQ   rQ   z?This is a very long text that should be wrapped multiple times.r   T)wrapr   rU   z?This is a very long
text that should be
wrapped multiple
times.)r<   rW   r
   add_subfigurerZ   r   r   _get_wrapped_text)r   r   halignrF   gssubfigsrZ   s           r   	test_wrapr    s     *X
&
&
&C	3	/	/	/Br$x((F 	JA;;q#qth6;JJDJOO!!## )1 2 2 2 2 2 2r   c                      t          j        d          } d}|                     dd|dd          }| j                                         |                                d	k    sJ d S )
Nrb   r   r   z;This is a very $\overline{\mathrm{long}}$ line of Mathtext.r   r7   (   T)r'   r  z;This is a very $\overline{\mathrm{long}}$
line of Mathtext.r<   rW   rZ   r   r   r  )rF   r  rZ   s      r   test_mathwrapr    sx    
*V
$
$
$CFA88AsABT822DJOO!!## )< = = = = = =r   c                  ^   t          j        d          } |                     dd           | j                                        }t          j        d          }|                    d           |j                                        }|j        |j        k    sJ |j        |j        k    sJ d S )N)r   r   r   z.suptitle that is clearly too long in this caseTr  z.suptitle that is clearly
too long in this case)r<   rW   suptitle	_suptitlerq   y0y1)fig1window_extent_testfig2window_extent_refs       r   test_get_window_extent_wrappedr    s     :f%%%DMMBMNNN99;;:f%%%DMMCDDD88:: $5$88888 $5$8888888r   c                      t          j        d          } |                     dddd          }| j                                         |                                dk    sJ d S )Nr  r   g      #@r  AlonglineoftexttowrapTr  r  rF   rZ   s     r   test_long_word_wrapr    sd    
*V
$
$
$C88C3$8??DJOO!!##'>>>>>>>r   c                      t          j        d          } |                     dddd          }| j                                         |                                dk    sJ d S )Nr  r   r   znon wrapped textTr  r  r  s     r   test_wrap_no_wrapr    sd    
*V
$
$
$C88Aq,4888DJOO!!##'9999999r   c                 b   |                                  }|                    ddg           |                    ddg           |j        j        d         j                            d           |                                 }|                    ddg           |                    ddg           d S )Nr   rQ   u   €rI   wr   )r  rE   set_yticklabelsrw  r  r  	set_colorr  s      r   test_buffer_sizer     s    
 
				BMM1a&s|$$$H!++C000					BMM1a&r{#####r   c                      t          j                     t          j        ddd          } t          j        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)r<   rW   xlabelylabelget_size)r  r  s     r   $test_fontproperties_kwarg_precedencer  
  sw    JLLLJw/@tLLLEJxd;LMMME>>t####>>t######r   c                      t          j                    } t          j                                        d          }|                     ddd|d          }|                                }t          |d           d S )Nr   r   r   T)rl   transform_rotates_text)r<   r   mtransformsAffine2D
rotate_degrZ   r!  r   )rG   rl   rZ   results       r   test_transform_rotates_textr    ss    	B$&&11"55I771a9*.  0 0D  F#####r   c                      t          t          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cacherB  s      r   test_update_mutate_inputr    s    
nF;;;  CIIEAHHSMMM E*:$;;;;;v;%-''''''r   r   zinvalid stringZ   c                     t          j        t          d          5  t          ddd|            d d d            d S # 1 swxY w Y   d S )Nz5rotation must be 'vertical', 'horizontal' or a numberr   r   r   r  r.  r  s    r   test_invalid_rotation_valuesr  &  s    	J
M 
M 
M - - 	Q58,,,,- - - - - - - - - - - - - - - - - -s   =AAc                      t          j        t                    5  t          j        dddd           d d d            d S # 1 swxY w Y   d S )Nr7   r   foobar)r  )r   r   r/  r<   figtextr   r   r   test_invalid_colorr  .  s    	z	"	" / /BEX..../ / / / / / / / / / / / / / / / / /r  ztext_pdf_kerning.pdfc                  \    t          j                     t          j        dddd           d S )Nr(   r7   ATATATATATATATATATAr   rk  )r<   rW   r  r   r   r   test_pdf_kerningr  3  s-    JLLLKS/b999999r   c                    t          j                    }|                    ddd          }|j                                         t          d | D                       sJ d | D             d|                                 dz   fdgk    sJ d S )Nr7   u   ০c              3   J   K   | ]}t          |j        t                    V  d S N)
isinstancemessager;   .0warns     r   	<genexpr>z*test_unsupported_script.<locals>.<genexpr>=  s.      IIz$,44IIIIIIr   c                 &    g | ]}|j         j        S r   )r"  argsr#  s     r   
<listcomp>z+test_unsupported_script.<locals>.<listcomp>?  s    ///t	///r   z9Glyph 2534 (\N{BENGALI DIGIT ZERO}) missing from font(s) .)z7Matplotlib currently does not support Bengali natively.)r<   rW   rZ   r   r   allr?   )recwarnrF   rB  s      r   test_unsupported_scriptr-  9  s    
*,,CR122AJOOIIIIIIIIII//w///
F!!$$$% 
'	F	H	H 	H 	H 	H 	H 	Hr   )r   rQ   r   z1Error messages are incorrect with pyparsing 3.1.0)reasonc                  b   t          j                    \  } }|                    dddd           | j                                         |                    dddd           t          j        t          d          5  | j                                         d d d            d S # 1 swxY w Y   d S )Nr   $ \wrong{math} $F)
parse_mathTUnknown symbolr   )r<   r=   rZ   r   r   r   r   r/  rR  s     r   test_parse_mathr3  F  s     lnnGCGGAq%%G888JOOGGAq%$G777	z)9	:	:	:  
                 s   =B$$B(+B(c                     t          j                    \  } }|                    ddd           t          j        t
          d          5  | j                                         d d d            n# 1 swxY w Y   t          j	        ddi          5  t          j                    \  } }|                    ddd           | j                                         d d d            d S # 1 swxY w Y   d S )Nr   r0  r2  r   ztext.parse_mathF)
r<   r=   rZ   r   r   r/  r   r   r   
rc_contextrR  s     r   test_parse_math_rcparamsr6  S  s[    lnnGCGGAq%&&&	z)9	:	:	:  
               
*E2	3	3  ,..R
1)***
                 s%   	A//A36A3AC$$C(+C(ztext_pdf_font42_kerning.pdfc                  z    dt           j        d<   t          j                     t          j        dddd           d S )Nrq  rr  r(   r7   ATAVATAVATAVATAVATAr   rk  r<   r   rW   r  r   r   r   test_pdf_font42_kerningr:  c  s9    #%CL JLLLKS/b999999r   ztext_pdf_chars_beyond_bmp.pdfc                      dt           j        d<   dt           j        d<   t          j                     t          j        dddd	           d S )
Nrq  rr  stixsanszmathtext.fontsetr(   r7   u   Mass $m$ 𐌈r   rk  r9  r   r   r   test_pdf_chars_beyond_bmpr=  j  sF    #%CL '1CL#$JLLLKS/b999999r   c                     t           j        j                                         t	          j                    } |                     ddd           |                     dddd           |                     dddd           | j                                         |                                 }i fd}||_	        | j                                         g ddgk    sJ t          d                   t          d                   cxk    rd	k    sn J t           j        j                                        }|j        |j        k    sJ d S )
Nr3   r7   foo
barTr  c                      | ^}}}}}                     |t                                                    |           d S r   )
setdefaultr   add)r(  kwargsrx   r   r   r  r   r   s          r   callz test_metrics_cache.<locals>.call~  s?     $!QA
a##A&&&&&r   r   barrQ   )r   rZ   !_get_text_metrics_with_cache_implcache_clearr<   rW   r   r   _get_rendererdraw_texlen
cache_infohitsmisses)rF   rx   rD  infor   s       @r   test_metrics_cacherO  r  sS   H.::<<<
*,,CHHRZ   HHRZH---HHRZH---JOO  ""H	B' ' ' ' ' HJOOR5UEN""""
 r%y>>SE^^0000q00000085@@BBD 9t{""""""r   c                     t          j                    \  } ddgddgfdt          d          D             }d |D             \  }}| j                                         t          |          t          |          k    sJ d S )Nr  zoffset fontsize)r  r  r  c                 ^    g | ])}                     d d|         dd|                   *S )r   r   10r  )r   r   r   r*   r   )r>   )r$  r   rG   text_coordsxy_texts     r   r)  z1test_annotate_offset_fontsize.<locals>.<listcomp>  s\     F F F 89	 KK:&qz!%!'#.q>	  3 3 F F Fr   rd   c              3   >   K   | ]}|                                 V  d S r   )rq   )r$  r   s     r   r&  z0test_annotate_offset_fontsize.<locals>.<genexpr>  s.      %N%N#c&;&;&=&=%N%N%N%N%N%Nr   )r<   r=   rx  r   r   str)rF   annspoints_coordsfontsize_coordsrG   rS  rT  s       @@@r   test_annotate_offset_fontsizerZ    s    lnnGC"$56K GF F F F F F =B!HH	F F FD
 &O%N%N%N%N"M?JOO}_!5!5555555r   c                     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    sJ |                     d           | j        du sJ |                                 | j        k    sJ d S )Nr7   r?  r   TF)r   _antialiasedr   r   get_antialiasedset_antialiased)r   s    r   test_get_set_antialiasedr_    s    
r2z
"
"Cs|,>?????  CL1C$DDDDDt####  C$44444u$$$$  C$4444444r   c                     t          ddd          } | j        du sJ |                                 | j        k    sJ t          ddd          }|j        du sJ |                                |j        k    sJ t          ddd          }|                    d           |                                du sJ |j        du sJ t          dd          }|j        t          j        d         k    sJ d S )Nr?  r   Tr   Fr   )r   r\  r]  r^  r   r   )annotannot2annot3annot4s       r   test_annotation_antialiasedrf    s   z8>>>E%%%%  ""e&88888
H%@@@F%''''!!##v':::::
H%@@@F
4   !!##t++++$&&&&
H--F#,/A"BBBBBBBr   c                    |                                  }|                    ddgddg          \  }t          j        ddg          }|                    dt          ||          dd           d|d d <   |                                 }|                    ddgddg          \  }t          j        ddg          }|                    d||dd	
           d|d d <   d S )Nr   rd   r7   r   )r  r   rj   )r   r   r   rQ   r  )r   r*   r   r   )r  r   r   arrayr>   r   )r  r  rG   lof_xyan_xys         r   'test_annotate_and_offsetfrom_copy_inputrl    s     
				B	!Q!Q	 	 BAHb"XEKK*Q"6"6w    E!!!H					B	!Q!Q	 	 BAHb"XEKK%!GKXXXE!!!HHHr   c                     |                      dddd           dt          j        d<   |                     ddd           d S )Nr7   6 inches x 2 inchesFra  r   rZ   r   r   r  r  s     r   +test_text_antialiased_off_default_vs_manualrq    sS    MM#s1).  0 0 0 (-CL#$LLc011111r   c                     |                      dddd           dt          j        d<   |                     ddd           d S )Nr7   rn  Tra  r   ro  rp  s     r   *test_text_antialiased_on_default_vs_manualrs    sG    MM#s1tMDDD'+CL#$LLc011111r   c                     t          d          } t          ddd          }t          ddd          }|                    |            t	          ddd	          }|                    |            |                    |
          }|                    |
          }|j        |j        k    sJ |j        |j        k    sJ |                    d|j	        d          \  }}}|                    d|j	        d          \  }}}t          ||          }	|                                }
|
d         dk    sJ |
d         |j        k    sJ |
d         |	 k    sJ |
d         |j        |	z
  k    sJ d S )Nr6   r  r4   r   rj   r   )r   r*   r   )rZ   r   r   r~  rZ   F)ismathlpr  rQ   r   r   rQ   r  )r   r   r   
set_figurer   rq   r  r  get_text_width_height_descent_fontpropertiesmaxr  )rW   rx   r  rZ   r   	text_bboxr   dlp_d
below_linepointss              r   &test_text_annotation_get_window_extentr    s   ___F3S))H FvHHHJ&!!!VqA&&&DOOF'''::D&&&99I:((((;)*****44
*5 5 : :GAq!77j( 8 8 8JAq$QJ __F$<3$<9?****$<J;&&&&$<9+j8888888r   c                     d} t          j        d          \  }}|                    ddd          }|                    dddd	d
d| dd          }t          j                     |j        j        }|                    |          }|                    |          }|j                            |          }t          j        |          }	|j
        |j
        dz   k    sJ |	j        |j        k    sJ |	j
        |j
        k    sJ t          j                            |	|g          }
t          |j        |
j                   d S )N   r6   r  r   r   )r  r   r   r        I@r  r  r   blackrd   r  r   r  	headwidthshrinkr   r   r*   r   r~  r  )r<   r=   rZ   r>   r   r   rx   rq   arrow_patchr   r  r  r
  Bboxunionr   )r  rF   rG   r   r   rx   r}  r   
arrow_bboxann_txt_bboxexpected_bboxs              r   1test_text_with_arrow_annotation_get_window_extentr    sT   Ils###GC
''Fa1'
%
%C
++o 1"c3 3	  4 4C HJJJz"H%%x%88I  ( 33D228<<J)#..L :4///// )"222220000$**L*+EFFM]%9:::::r   c                     d} | dz  }t          |           }|                    d           |                    d           t          ddd          }t	          dddd	d
dddd          }|                    |           |                    |           |                                }|                                }|j	        dk    sJ t          |j        d|z             |d         dk    sJ |d         dd|z  z
  k    sJ d S )Nr6   H   r         @r4   r   r  r  r   r  r  r  r  r  r  r  g      $@rj   rx     )r   set_figwidthset_figheightr   r   ry  r   rq   r  r  r   r  )r  dots_per_pointrW   rx   r  r   r  s          r   'test_arrow_annotation_get_window_extentr  $  s9   
C2XN___F

3S))H 
{</ 12N NO O OJ &!!!OOH''))D__F:TN%:;;;$<3$<4!n"44444444r   c                     t          d          } |                     d           |                     d           t          ddd          }t	          dddd          }|                    |            |                    |           |                                }|                                }|d	         d
k    sJ |d         d
k    sJ |d         dk    sJ |d         dk    sJ d S )Nr6   r  r  r4   r   r  r   )r   r   r*   rj   r  rw  r  r  rx  )	r   r  r  r   r   ry  r   rq   r  )rW   rx   r  r   r  s        r   'test_empty_annotation_get_window_extentr  =  s
   ___F

3S))H 
{;J J JJ&!!!OOH''))D__F$<3$<3$<4$<4r   basictext_wrap)baseline_imagesr  c            
         t          j                    } t          j        g d           d}t          j        dd|ddd           t          j        d	d
|ddd           t          j        d
d
|ddd           t          j        d
d|ddddd           t          j        dd|dddd           t          j        dd|ddd           d S )Nr   r  r   r  This is a really long string that I'd rather have wrapped so that it doesn't go outside of the figure, but if it's long enough it will go off the top or bottom!r   rQ   rz   r   T)rU   r   r  rb   r  r   r  r  obliquerS   rT   )r   r%   rU   rV   r  r   serifr2   )r$   r%   rU   r  r   r<   rW   axisrZ   rF   rB  s     r   test_basic_wrapr  R  s     *,,CH^^^	*A HQ1"48888HQ1"48888HQ13T::::HQA)D" " " "HQ1WHtLLLLHRA&3T::::::r   fonttext_wrapc            
      l   t          j                    } t          j        g d           d}t          j        dd|ddddd	
           t          j        dd|dddd	           t          j        dd|dddd	           t          j        dd|ddd	           t          j        dd|ddddd	           d S )Nr  r  r   r  r  r  rz   r   T)r   r$   rU   r   r  rb   r  r1   )r$   rU   r   r  r  heavyrS   rT   )r.   rU   rV   r  r   	monospacer   )r$   rU   r  r   r#   r2   r  )r   r%   rU   r   r  r  r  s     r   test_font_wrapr  c  s     *,,CH^^^	*A HQA7v   HQ1\frMMMMHQAg(u4HHHHHQ1[W4@@@@HRA(v     r   )zr   r  r9   numpyr   numpy.testingr   packaging.versionr   parse_version	pyparsingr   
matplotlibr   matplotlib.backend_basesr   matplotlib.backends.backend_aggr   matplotlib.figurer   r8   r	   matplotlib.patchespatchesrm   matplotlib.pyplotpyplotr<   matplotlib.gridspecr
   matplotlib.transforms
transformsr
  matplotlib.testing.decoratorsr   r   matplotlib.testing._markersr   matplotlib.textr   r   r   __version__pyparsing_versionrN   r^   r   r   r   r   r   markparametrizer  printr/  r   r   r   r   r   r
  r  r"  r%  r+  r0  r2  r5  r<  rC  rS  rY  rc  rh  ro  rz  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-  xfailreleaser3  r6  r:  r=  rO  rZ  r_  rf  rl  rq  rs  r  r  r  r  r  r  r   r   r   <module>r     s
         				      - - - - - - 4 4 4 4 4 4          / / / / / / 7 7 7 7 7 7 $ $ $ $ $ $ 2 2 2 2 2 2 % % % % % %       ( ( ( ( ( ( + + + + + + O O O O O O O O 4 4 4 4 4 4 8 8 8 8 8 8 8 8 8 8!M)"788  =/""U U #"Up ;-    ! . <.00006 06 1006f $%W555- - 65-$D D D &'((  )(<	. 	. 	. /UVAGH9:ABHI=>2     8*   #$G444  54. $%&&D D '&D" " "@C C C4 "c+0FGG  HG; ; ;
4 4 4
; ; ;
$ $ $
5 5 5@ @ @
 :::;;  ?  ?  ? @ @P P@ @ <;P ?#$$/ / %$/ 6788  986 7899  :96  . &'((  )(* * * %&''> > ('> -/K/K/KLL* * ML*(4 4 4
  ) ) ) 3 3 3     5 5 566* * 76* -.//= = 0/= -.//! ! 0/!& & && & & (((P P )(P ./w???  @?"    2 2 2= = =9 9 9 ? ? ?: : : (((
$ 
$ )(
$$ $ $$ $ $( ( ( &6%=>>- - ?>-/ / /
 )*':::: : ;::
	I 	I 	I $,	9M  O O O O $,	9M  O O O O 01AAA: : BA: 237CCC: : DC: # # #<6 6 6 5 5 5C C C$ (((  )( 2 2 2 2 2 29 9 9> ;  ;  ;F5 5 52     * #3"4#W& & &; ;& &; ?"3#W& & & & &  r   