
    gI                     h   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
jT                        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jf                  ji                  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jf                  ji                  d/d0d1gd2d3g4      d5        Z>d6 Z?d7 Z@d8 ZAd9 ZBd: ZCd; ZDejf                  ji                  d<g d=      ejf                  ji                  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jf                  ji                  dMg dN      dO        ZMdP ZNdQ ZOdR ZPe%dS        ZQe%dT        ZRejf                  ji                  dUg dV      dW        ZS e#dXg      dY        ZT e#dZg      d[        ZUd\ ZVd] ZW e"d^g_      d`        ZX e#dagd      db        ZYejf                  ji                  dcg dd      de        ZZdf Z[dg Z\dh Z]di Z^ e"d^g_      dj        Z_dk Z`dl Zadm Zbejf                  ji                  dndodpgg      dq        Zcdr Zd e#dsgd      dt        Zedu Zfejf                  j                  e+j                  dvk(  dwx      dy        Ziejf                  j                  e+j                  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        Zyy)    )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
      }|j                  ddd|      }|j                         dk(  sJ |j                         d	k(  sJ |j                         d	k(  sJ |j                         d	k(  sJ |j                         d	k(  sJ  | dd	d	ddd
      }|j                  ddd|        | ddd	ddd
      }|j                  ddd|        | dd	d	ddd
      }|j                  ddd|        | dd	d	ddd
      }|j                  d d!d|       |j                  g        |j                  g        y )"Nc                  ^     di | } |t        j                               } |      S )N)	directory)fname )mplget_data_path)kwproppathr	   findfonts      W/var/www/dash_apps/app1/venv/lib/python3.12/site-packages/matplotlib/tests/test_text.pyfind_matplotlib_fontz.test_font_styles.<locals>.find_matplotlib_font   s0    ##(9(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(	* llnGC&	K
 	 "	 	 	$A
 >>},,,??((((***<<>X%%%==?h&&&$I KK  	  " , KK '	  ) &J KK !	  # *N KK %	  ' MM"MM"r   	multilinec                     t        j                          t        j                  ddd      } | j                  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       | j                  g        | j                  g        y )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    JJL	Q1	BLL,-HHS'bX%I HHS3" HHS3" HHQNHHQMM"MM"r   
multiline2mpl20)r%   c            	         dt         j                  d<   t        j                         \  } }|j                  ddg       |j	                  ddg       |j                  ddd	       g d
}| j                  j                         fd}d}t        |      D ]*  \  }}|j                  d|z  dz   d||d      } |||       , |j                  dddd       |j                  ddd	       t        |      D ]*  \  }}|j                  d|z  dz   d||d      } |||       , |j                  dddd       |j                  ddd	       t        |      D ]*  \  }}|j                  d|z  dz   d||d      } |||       , |j                  dddd       |j                  ddd	       t        |      D ]+  \  }}|j                  d|z  dz   d||dd      } |||       - |j                  dddd       y )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	                        j                  | j                  j                               j                         | j                  |       y )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   se    vq!U)+7	  *[..01V	 	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)    +,CLL&'llnGCKKCKKAJJs$#J.ACzz&&(H EC. BWWS2X^S"%'/  1R GGCnDG1JJs$#J.C. BWWS2X^S"%',  .R GGCkG.JJs$#J.C. BWWS2X^S"%'1  3R GGC&dG3JJs$#J.C. BWWS2X^S"%'/"  >R GGC(G5r   zantialiased.pngc                  Z   dt         j                  d<   t        j                  d      } | j	                  dddddd	
       | j	                  dddddd	
       d	t         j                  d<   | j	                  dddddd
       | j	                  dddddd
       dt         j                  d<   y )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    ',CLL#$
**\
*CHHS$8'T  ;HHS$8'T  ; (,CLL#$HHS$)x'U  <HHS$8'U  < (-CLL#$r   c                      t         j                  j                  dd      } t        | d      5 }t         j                  j                  |      }d d d        j                  d      dk(  sJ y # 1 sw Y    xY w)N	Helveticaafm)fontextrbVAVAVAVAVAVA)g     @i  )r   font_managerr   open_afmAFMstring_width_height)fnfhr   s      r   test_afm_kerningr      sh    				"	";	"	>B	b$ 2hhll2"">2mCCC s    A--A6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                  j                          t        |j                  |j                        D ]  \  }}t        j                         j                  j                  ||g      \  |_        |_        |j#                  |      \  }}	|rdnd}
|j$                  j'                         }|j)                  ||d|
       |j$                  j+                  |        y )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      s3   
**,C	B,cjj#sAtLF	T4	$B	T4	$B[[R FB
((S-HrBHC JJOOBGGRWW% 1 WWY00::Aq6B&(ll6*!$% ZZ 
1c'


rr   c                  $   t        j                         \  } }|j                  dddddi      }| j                  j	                          t        d| j                  g|j                  j                  d       }|j                  |      d	i fk(  sJ y )
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     llnGC
++HX<:N  PCJJOOcjjM+-<<+A+A(+K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  |j	                  ddd|       |j
                  j                          d d d        y # 1 sw Y   y xY w)Nmatchr   rj   r7   r7   )r   r*   )r<   r=   pytestraisesr>   r   r   )errr*   r   rF   rG   s        r   test_annotate_errorsr     sX     llnGC	s%	( 
D&hG

  s   0A((A1titlesc                      t        j                          t        j                  ddd      } | j                  dd       | j                  dd       | j	                  g        | j                  g        y )NrQ   z
left titlerz   loczright titleright)r<   rW   rX   rY   rD   rE   r]   s    r   test_titlesr     sW     JJL	Q1	BLL6L*LLGL,MM"MM"r   text_alignmentc                     t        j                          t        j                  ddd      } d}dD ]J  }dD ]C  }| j                  |d|dz   ||t	        ddd	      
       | j                  |dd||       |dz  }E L | j                  ddgddg       | j                  ddgddg       | j                  dd       | j                  dd       | j                  g        | j                  g        y )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     s    JJL	Q1	BA @ 	IGG3	E)i(7gSI  K GG3+	H  NHA	 GGQFS#JGGQFS#JKK1KK3MM"MM"r   zaxes_titles.pngc                      t        j                          t        j                  ddd      } | j                  dddd       | j                  dddd       | j                  d	d	dd       y )
NrQ   rS   rR   i  )r   r   
fontweightrz      i  r   )r<   rW   rX   rY   r]   s    r   test_axes_titlesr   7  s[     JJL	Q1	BLLx"LELLVbSLALLgsLCr   c                     t        j                         \  } }|j                  dddd      }| j                  j	                          |j                  | j                  j                        }d}|j                  ||f       | j                  j	                          |j                  | j                  j                        }t        |j                  |j                        D ]  \  }}||z   |k(  rJ  |j                  dddd      }| j                  j	                          |j                  | j                  j                        }d}||f|_
        | j                  j	                          |j                  | j                  j                        }t        |j                  |j                        D ]  \  }}||z   |k(  rJ  y )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   llnGC ++v/  CCJJOO$$SZZ%8%89HIi+,JJOO$$SZZ%8%89HHLL(,,/ "19}!!!" ++v/  CCJJOO$$SZZ%8%89HII&CIJJOO$$SZZ%8%89HHLL(,,/ "19}!!!"r   c                  f   t        j                         } | j                  ddd      }|j                  d       |j	                         }|j
                  |j                  z
  }|j                  d       |j	                         }|j
                  |j                  z
  }|j                  d       |j	                         }|j                  }|j                  ||z
        dk(  sJ |j                  |      dk(  sJ |j                  |d|z  z         dk(  sJ |j                  |d	|z  z         d
k(  sJ |j                  ||dz  z         dk(  sJ |j                  ||dz  z   |dz  z         dk(  sJ |j                  ||dz  z   |dz  z         dk(  sJ |j                  ||dz  z   |dz  z         dk(  sJ y )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WWtwwFMM#!!#DWWtwwFMM*!!#DWWFv/1444v&!+++vf45:::vf45:::vq01Q666vq06!8;<AAAvq06!8;<AAAvq06"9<=BBBr   rZ   r   Oemptyz	non-empty)idsc                    t        j                         \  }}|j                  dd| dd      }|j                  j	                          |j
                  }|j                         }|j                  |dz        }t        j                  j                  |j                         |j                         dz  d       |j
                  |k(  sJ y )	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    llnGC	c4Fx	8BJJOO
''C  "E  S2X .EJJu//153C3C3E3J$(  * 77c>>r   c                      t        d      j                         dk(  sJ t        d      j                         dk(  sJ y )N
horizontalr           verticalg     V@r   get_rotationr   r   r   test_get_rotation_stringr"    s:    &335;;;$113s:::r   c                  P    dD ]!  } t        |       j                         | k(  r!J  y )N)g      .@g333330@gYS@r  r   r   s    r   test_get_rotation_floatr%    s-     4Q,,.!3334r   c                  b    dD ]*  } t        |       j                         t        |       k(  r*J  y )N)C      )   r  )r   r!  floatr$  s    r   test_get_rotation_intr+    s1     ;Q,,.%(:::;r   c                  x    t        j                  t              5  t        d       d d d        y # 1 sw Y   y xY w)N
hozirontalr  r   r   
ValueErrorr   r   r   r   test_get_rotation_raisesr0    s+    	z	" $l#$ $ $s   09c                  B    t        d       j                         dk(  sJ y )Nr  r  r   r   r   r   test_get_rotation_noner2    s    ++-444r   c                  |    t        g dg d      D ])  \  } }t        t        |       j                         |       + y )N)g     v@g     w@g	@)r  g      1@gfffff&f@r  )r   r   r   r!  )r   js     r   test_get_rotation_mod360r5    s8    +-=> @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                  j                          t        |j                  |j                  j                        j                         |j                  |j                  j                        j                                y )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     llnGC	qRB	'B		>x	>2	>B		?y	?B	?BJJOO,,SZZ-@-@ALLN,,SZZ-@-@ALLNPr   text_bboxclipc                      t        j                  ddddd       t        j                  dddd	      } | j                  d
di       y )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    s>    HHS#)3Mc3TBAJJ
,-.r   z!annotation_negative_ax_coords.pngc            	      |   t        j                         \  } }|j                  dddgdddg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       |j                  dddgdddgddd	
       |j                  dddgdddgdd       |j                  dddgdddgddd	
       y )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   llnGCKKBxM8mb  B KKCy]9}r   KKd|$</B  H KKe}%=?R  
 KK
Ry]9}r  C KK
Szm:  r   z"annotation_negative_fig_coords.pngc            	      |   t        j                         \  } }|j                  dddgdddg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       |j                  dddgdddgddd
       |j                  dddgdddgdd       |j                  dddgdddgddd
       y )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    s   llnGCKKCy_9  E KKSzo:"   KKd|0A$<*;b  J KKs|0A3<*;b  
 KK
BxO8o  D KK
Szo:"  r   c                  ,   t        j                  dd      \  } \  }}t        j                          |j                  rJ |j                  rJ | j                  rJ |j	                  ddd      }|j                  sJ |j                  sJ | j                  sJ |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 y )NrQ   rd   r7   aardvarkr   )r<   r=   draw_allstalerZ   r>   )rF   ax1ax2txt1ann1s        r   test_text_stalerc    s    ll1a(OC#sLLNyy=yy=yy=88BJ'D999:::999<<
Bx<0D999:::999LLNyy=yy=yy=yr   zagg_text_clip.pngc                     t         j                  j                  d       t        j                  d      \  } \  }}t         j                  j                  dd      D ]-  \  }}|j                  ||dd       |j                  ||d       / y )NrQ   rd   r  r   Tr@  )r   randomseedr<   r=   randrZ   )rF   r_  r`  r   r   s        r   test_agg_text_cliprh    sm    IINN1ll1oOC#s		r1% 1Aud+Aur   c                      dt         j                  d<   t         j                  j                  d      } | j	                         }dt         j                  d<   || j	                         k(  sJ y )Nr  z	font.sizelarger'   r6   )r   r   r   r	   get_size_in_points)fpsz1s     r   test_text_size_bindingro    s\     "CLL				(	(g	(	6B



!C #CLL"''))))r   zfont_scaling.pdfc                     dt         j                  d<   t        j                  d      \  } }|j                  j                  t        j                                |j                  j                  t        j                                |j                  dd       t        t        ddd	            D ]   \  }}|j                  d
|dz  | d|       " y )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    #%CLL ll;/GCHHs01HHs01KKS5B?+ >2
QrTbT/"=>r   zspacing1, spacing2))r5   rd   )rd   r5   )rd   rd   c                    d}t        j                         }|j                  j                         }|j	                  dd||       }|j	                  dd||      }|j                  j                          |j                  |      }|j                  |      }|j                  |j                  k(  sJ | |k(  r|j                  |j                  k(  sJ y |j                  |j                  k7  sJ y )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zz&&(HHHT3HBEHHT3HBEJJOO""H"5D""H"5D ::###8{{dkk))){{dkk)))r   c                      t        j                  t              5  t        j                  dddd       d d d        y # 1 sw Y   y xY w)Nr   r7   r   abcr|  )r   r   	TypeErrorr<   rZ   r   r   r   test_validate_linespacingr  >  s5    	y	! 4b%U34 4 4	   =Ac                      t        j                         \  } }|j                  dt        j                  d       |j                  t        j
                  dd       | j                  j                          y )Nr   naninf)r<   r=   rZ   r   r  r  r   r   rR  s     r   test_nonfinite_posr  C  sG    llnGCGGArvvuGGBFFAuJJOOr   c                     dt         j                  d<   t        j                         } | j                  ddd      }| j	                  t        j                         d       |j                         j                  }| j	                  t        j                         d       t        j                  j                  |j                         j                  |d	       y )
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    *+CLL&'
**,Cc;'AKK

UK+""$..HKK

UK+JJq224>>$'  )r   c                     t        j                         } dt         j                  d<   | j                  d      }dt         j                  d<   | j                  d      }| j                  j                          |df|dffD ]?  \  }}|j                  j                  D ]!  }|j                  j                         |k(  r!J  A y )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"'CLL
//#
C"&CLL
//#
CJJOOU|c4[1 3
F$$ 	3A88&&(F222	33r   c                      t        j                         } | j                  dddd       | j                  j	                          y )Nr7   z	$\frac12$Tr  )r<   rW   rZ   r   r   r   s    r   test_single_artist_usetexr  g  s1    
 **,CHHR\$H/JJOOr   fmt)r  pdfr  c                     dt         j                  d<   t        j                         }|j                  dddd       |j	                  t        j                         |        y )NTr  r7   2_2_2Fr  r  )r<   r   rW   rZ   r  r  r  )r  rF   s     r   test_single_artist_usenotexr  q  sG     #'CLL
**,CHHRWUH+KK

SK)r   ztext_as_path_opacity.svgc                     t        j                          t        j                         j                          t        j                  dddd       t        j                  dddd       t        j                  ddd	dd
       y )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  }  sU    JJLGGIHHT4N3HHT33'HHT4C|<r   ztext_as_text_opacity.svgc                  .   dt         j                  d<   t        j                          t        j                         j                          t        j                  dddd       t        j                  dddd	       t        j                  dd
ddd       y )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    si    #)CLL JJLGGIHHT4,NCHHT3+37HHT4=S!r   c                  z    t        j                  ddgddg       t        t        j                  dgdd             y )NABrQ   rd   r7   Boo)r<   r   reprrZ   r   r   r   test_text_reprr    s/    HHc3Z!Q 3%e	$%r   c                     t        j                  dd      \  } }|j                  dd      }|j                  | j                  j                               }| j                          |j                  | j                  j                               }t        j                  |j                         |j                         d      rJ y )NrQ   
annotationr   r\  gư>r  )
r<   r=   r>   rq   r   r   tight_layoutr   allcloser  )rF   rG   anextent1extent2s        r   test_annotation_updater    s    ll1a GC	\j	1B""3::#:#:#<=G""3::#:#:#<=G{{7--/1C1C1E $& & & &r   r  )
extensionsc                 |   | j                         }|j                  t        j                         dd       |j	                  dt        j                         dfddd       |j                         }|j                  t        j                         dd       |j	                  dt        j                         dfd	       y )
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GGHLLNAs#KKhllnc*5N/  ; 
			BGGHLLNAs#KKhllnc*5NKOr   zlarge_subscript_title.pngc                  t   dt         j                  d<   d t         j                  d<   t        j                  dddd      \  } }|d	   }|j                  d
       |j                  dd       |j	                  g        |d   }|j                  d
d       |j                  dd       |j	                  g        y )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     +,CLL&'"&CLL||Aq(t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|      }|j                  |d         }d}|j	                  | d|d||	      }|j
                  j                          |j                         d
k(  sJ y )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;JDJJOO!!# )1 2 2 2r   c                      t        j                  d      } d}| j                  dd|dd      }| j                  j	                          |j                         d	k(  sJ y )
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    s[    
**V
$CFA88AsABT82DJJOO!!# )< = = =r   c                  x   t        j                  d      } | j                  dd       | j                  j	                         }t        j                  d      }|j                  d       |j                  j	                         }|j
                  |j
                  k(  sJ |j                  |j                  k(  sJ y )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99;::f%DMMCD88:  $5$8$8888  $5$8$8888r   c                      t        j                  d      } | j                  dddd      }| j                  j	                          |j                         dk(  sJ y )Nr  r   g      #@r  AlonglineoftexttowrapTr  r  rF   rZ   s     r   test_long_word_wrapr    sM    
**V
$C88C3$8?DJJOO!!#'>>>>r   c                      t        j                  d      } | j                  dddd      }| j                  j	                          |j                         dk(  sJ y )Nr  r   r   znon wrapped textTr  r  r  s     r   test_wrap_no_wrapr    sM    
**V
$C88Aq,488DJJOO!!#'9999r   c                 @   | j                         }|j                  ddg       |j                  ddg       |j                  j                  d   j
                  j                  d       |j                         }|j                  ddg       |j                  ddg       y )Nr   rQ   u   €rI   wr   )r  rE   set_yticklabelsrw  r  r  	set_colorr  s      r   test_buffer_sizer     s    
 
			BMM1a&s|$HH!!++C0				BMM1a&r{#r   c                      t        j                          t        j                  ddd      } t        j                  ddd      }| j	                         dk(  sJ |j	                         dk(  sJ y)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  
  s[    JJLJJw/@tLEJJxd;LME>>t###>>t###r   c                      t        j                         } t        j                         j	                  d      }| j                  ddd|d      }|j                         }t        |d       y )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    s\    	B$$&11"5I771a9*.  0D F#r   c                      t        t        d      d       } t        |       }t               }|j                  |        | d   |d   k(  sJ | d   |d   k(  sJ y )Nr-   )r.   )r+   r   r+   r   )r   r	   r   update)inpcacherB  s      r   test_update_mutate_inputr    sa    
nF;CIEAHHSM E*:$;;;;v;%-'''r   r   zinvalid stringZ   c                     t        j                  t        d      5  t        ddd|        d d d        y # 1 sw Y   y xY w)Nz5rotation must be 'vertical', 'horizontal' or a numberr   r   r   r  r.  r  s    r   test_invalid_rotation_valuesr  &  s:    	J
M - 	Q58,- - -s   5>c                      t        j                  t              5  t        j                  dddd       d d d        y # 1 sw Y   y xY w)Nr7   r   foobar)r  )r   r   r/  r<   figtextr   r   r   test_invalid_colorr  .  s5    	z	" /BEX./ / /r  ztext_pdf_kerning.pdfc                  ^    t        j                          t        j                  dddd       y )Nr(   r7   ATATATATATATATATATAr   rk  )r<   rW   r  r   r   r   test_pdf_kerningr  3  s    JJLKKS/b9r   c                 8   t        j                         }|j                  ddd      }|j                  j	                          t        d | D              sJ | D cg c]  }|j                  j                   c}d|j                          dz   fdgk(  sJ y c c}w )Nr7   u   ০c              3   P   K   | ]  }t        |j                  t                 y wN)
isinstancemessager;   ).0warns     r   	<genexpr>z*test_unsupported_script.<locals>.<genexpr>=  s     Iz$,,4Is   $&z9Glyph 2534 (\N{BENGALI DIGIT ZERO}) missing from font(s) .)z7Matplotlib currently does not support Bengali natively.)	r<   rW   rZ   r   r   allr"  argsr?   )recwarnrF   rB  r$  s       r   test_unsupported_scriptr*  9  s    
**,CR12AJJOOIIIII'./t		/
F!"!$% 
'	F	H	HI	H/s   B)r   rQ   r   z1Error messages are incorrect with pyparsing 3.1.0)reasonc                  N   t        j                         \  } }|j                  dddd       | j                  j	                          |j                  dddd       t        j                  t        d      5  | j                  j	                          d d d        y # 1 sw Y   y xY w)Nr   $ \wrong{math} $F)
parse_mathTUnknown symbolr   )r<   r=   rZ   r   r   r   r   r/  rR  s     r   test_parse_mathr0  F  s}     llnGCGGAq%%G8JJOOGGAq%$G7	z)9	: 

  s   7BB$c                     t        j                         \  } }|j                  ddd       t        j                  t
        d      5  | j                  j                          d d d        t        j                  ddi      5  t        j                         \  } }|j                  ddd       | j                  j                          d d d        y # 1 sw Y   nxY w# 1 sw Y   y xY w)Nr   r-  r/  r   ztext.parse_mathF)
r<   r=   rZ   r   r   r/  r   r   r   
rc_contextrR  s     r   test_parse_math_rcparamsr3  S  s     llnGCGGAq%&	z)9	: 

 
*E2	3 ,,.R
1)*

 	  s   C ACCC#ztext_pdf_font42_kerning.pdfc                      dt         j                  d<   t        j                          t        j                  dddd       y )Nrq  rr  r(   r7   ATAVATAVATAVATAVATAr   rk  r<   r   rW   r  r   r   r   test_pdf_font42_kerningr7  c  s,    #%CLL JJLKKS/b9r   ztext_pdf_chars_beyond_bmp.pdfc                      dt         j                  d<   dt         j                  d<   t        j                          t        j                  dddd	       y )
Nrq  rr  stixsanszmathtext.fontsetr(   r7   u   Mass $m$ 𐌈r   rk  r6  r   r   r   test_pdf_chars_beyond_bmpr:  j  s;    #%CLL '1CLL#$JJLKKS/b9r   c                     t         j                  j                  j                          t	        j
                         } | j                  ddd       | j                  dddd       | j                  dddd       | j                  j                          | j                         }i fd}||_	        | j                  j                          g ddgk(  sJ t        d         t        d         cxk(  rd	k(  sJ  J t         j                  j                  j                         }|j                  |j                  kD  sJ y )
Nr3   r7   foo
barTr  c                  f    | ^}}}}}j                  |t                     j                  |       y 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   rA  infor   s       @r   test_metrics_cacherL  r  s   HH..::<
**,CHHRZ HHRZH-HHRZH-JJOO  "H	B' HJJOOR5UEN"""
 r%y>SE^0q000008855@@BD 99t{{"""r   c                  0   t        j                         \  } }ddg}ddg}t        d      D cg c]  }|j                  dd||   dd	||   
      ! }}d |D        \  }}| j                  j                          t        |      t        |      k(  sJ y c c}w )Nr  zoffset fontsize)r  r  r  rd   r   r   10r  )r   r   r   r*   r   c              3   <   K   | ]  }|j                           y wr   )rq   )r#  r   s     r   r%  z0test_annotate_offset_fontsize.<locals>.<genexpr>  s     %N#c&;&;&=%Ns   )r<   r=   rx  r>   r   r   str)rF   rG   text_coordsxy_textr   annspoints_coordsfontsize_coordss           r   test_annotate_offset_fontsizerV    s    llnGC"$56K G
 =B!H	F 89	 KK:&qz!%!'#.q>	  3 FD F
 &O%N"M?JJOO}_!5555Fs   $Bc                     t        ddd      } | j                  t        j                  d   k(  sJ | j	                         t        j                  d   k(  sJ | j                  d       | j                  du sJ | j	                         | j                  k(  sJ | j                  d       | j                  du sJ | j	                         | j                  k(  sJ y )Nr7   r<  r   TF)r   _antialiasedr   r   get_antialiasedset_antialiased)r   s    r   test_get_set_antialiasedr[    s    
r2z
"Cs||,>???? CLL1C$DDDDt### C$4$4444u$$$ C$4$4444r   c                     t        ddd      } | j                  du sJ | j                         | j                  k(  sJ t        ddd      }|j                  du sJ |j                         |j                  k(  sJ t        ddd      }|j                  d       |j                         du sJ |j                  du sJ t        dd      }|j                  t        j
                  d   k(  sJ y )Nr<  r   Tr   Fr   )r   rX  rY  rZ  r   r   )annotannot2annot3annot4s       r   test_annotation_antialiasedrb    s    z8>E%%%  "e&8&8888
H%@F%'''!!#v':'::::
H%@F
4 !!#t+++$&&&
H-F#,,/A"BBBBr   c                 ~   | j                         }|j                  ddgddg      \  }t        j                  ddg      }|j	                  dt        ||      dd       d|d d  |j                         }|j                  ddgddg      \  }t        j                  ddg      }|j	                  d||dd	
       d|d d  y )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_inputrh    s     
			B	!Q!Q	 BAHHb"XEKK*Q"6w  E!H				B	!Q!Q	 BAHHb"XEKK%!GKXE!Hr   c                 z    | j                  dddd       dt        j                  d<   |j                  ddd       y )Nr7   6 inches x 2 inchesFr]  r   rZ   r   r   r  r  s     r   +test_text_antialiased_off_default_vs_manualrm    s?    MM#s1).  0 (-CLL#$LLc01r   c                 z    | j                  dddd       dt        j                  d<   |j                  ddd       y )Nr7   rj  Tr]  r   rk  rl  s     r   *test_text_antialiased_on_default_vs_manualro    s7    MM#s1tMD'+CLL#$LLc01r   c                     t        d      } t        ddd      }t        ddd      }|j                  |        t	        ddd	      }|j                  |        |j                  |
      }|j                  |
      }|j                  |j                  k(  sJ |j                  |j                  k(  sJ |j                  d|j                  d      \  }}}|j                  d|j                  d      \  }}}t        ||      }	|j                         }
|
d   dk(  sJ |
d   |j                  k(  sJ |
d   |	 k(  sJ |
d   |j                  |	z
  k(  sJ y )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~    sg   _F3S)H FvHJ&!VqA&DOOF''':D&&&9I::(((;;)*****44
**5 5 :GAq!77j(( 8 8JAq$QJ __F$<3$<9??***$<J;&&&$<9++j8888r   c                     d} t        j                  d      \  }}|j                  ddd      }|j                  dddd	d
d| dd      }t        j                          |j
                  j                  }|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                  j                  |	|g      }
t        |j                  |
j                         y )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   ry  r   
arrow_bboxann_txt_bboxexpected_bboxs              r   1test_text_with_arrow_annotation_get_window_extentr    s>   Ills#GC
''Fa1'
%C
++o 1"c3	  4C HHJzz""H%%x%8I  ( 3D228<J))#.L ::4//// )"2"2222000$$**L*+EFM]%9%9:r   c                     d} | dz  }t        |       }|j                  d       |j                  d       t        ddd      }t	        dddd	d
dddd      }|j                  |       |j                  |       |j                         }|j                         }|j                  dk(  sJ t        |j                  d|z         |d   dk(  sJ |d   dd|z  z
  k(  sJ y )Nr6   H   r         @r4   r   r  r  r   r  r  r  r  r  r  r  g      $@rj   rt     )r   set_figwidthset_figheightr   r   ru  r   rq   r  r  r   r  )r  dots_per_pointrW   rx   r  r   r}  s          r   'test_arrow_annotation_get_window_extentr  $  s    
C2XN_F

3S)H 
{</ 12NOJ &!OOH'')D__F::TN%:;$<3$<4!n"44444r   c                  l   t        d      } | j                  d       | j                  d       t        ddd      }t	        dddd      }|j                  |        |j                  |       |j                         }|j                         }|d	   d
k(  sJ |d   d
k(  sJ |d   dk(  sJ |d   dk(  sJ y )Nr6   r  r  r4   r   r  r   )r   r   r*   rj   r  rs  r  r  rt  )	r   r  r  r   r   ru  r   rq   r  )rW   rx   r  r   r}  s        r   'test_empty_annotation_get_window_extentr  =  s    _F

3S)H 
{;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       y )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HH^	*A HHQ1"48HHQ1"48HHQ13T:HHQA)D"HHQ1WHtLHHRA&3T:r   fonttext_wrapc            
      x   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	       y )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HH^	*A HHQA7vHHQ1\frMHHQAg(u4HHHQ1[W4@HHR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releaser0  r3  r7  r:  rL  rV  r[  rb  rh  rm  ro  r~  r  r  r  r  r  r   r   r   <module>r     sC    	   - 4    / 7 $ 2 %  ( + O 4 8 8!)"7"78  =/"U #Up ;-  !. <.006 106f $%W5- 6-$D &'( )<	. /UVAGH9:ABHI=>2  8*  #$G4 5. $%&D 'D"@C4 "c+0FG H;
4
;
$
5@
 :;  ? @P@ <P ?#$/ %/ 678 96 789 :6. &'( )* %&'> (> -/KL* M*(4
) 3 3    56* 7* -./= 0= -./! 0!&& (P )P ./w? @" 22=9 ?: (
$ )
$$$( &6%=>- ?-/
 )*':: ;:
	I $,,	9M  OO $,,	9M  OO 01A: B: 237C: D: # #<6 5C$ ( ) 2 2 2 29> ;F52 * #3"4#W&;&; ?"3#W&&r   