
    
3j8                     
   S SK r S SKJr  S SKrS SKJr  S SKrS SKrS SKr	S SK
Jr  S SKrS SKrS SKJr  S SKJrJr  S SKJrJr  S SKJr  S SKJr  S S	KJrJr  S S
K J!r!J"r"J#r#  S SK$J%r%J&r&J'r'J(r(  \!" S 5      u  r)r*0 S 4S jr+\RX                  R[                  SSS\ R                   " SSS\ R\                  " \ R^                  " S 5      5      S9S4/5      S 5       r0\RX                  R[                  S/ SQ5      S 5       r1\(\%\RX                  Re                  S5      S 5       5       5       r3S r4\(\RX                  Re                  S5      \#" S/SS9S  5       5       5       r5 \Rl                  " S!5      Rn                  \" S"5      :  r8\'\RX                  Ru                  \" S$5      (       + S%S&9\RX                  Ru                  \" S'5      (       + S(S&9\RX                  Re                  S5      \#" S)/S\8(       a  S*OS S+9S, 5       5       5       5       5       r;\(\'\Rx                  R{                  S5      \RX                  Re                  S5      S- 5       5       5       5       r>\(\Rx                  R{                  S5      \RX                  Re                  S5      S. 5       5       5       r?\(\RX                  Re                  S5      \#" S//SS9S0 5       5       5       r@\(\Rx                  R{                  S5      \RX                  Re                  S5      S1 5       5       5       rA\Rx                  R{                  S5      \RX                  Re                  S5      \RX                  R[                  S2\R                  " S3\&/S49\R                  " S5\'/S49\R                  " S6\(/S49/5      S7 5       5       5       rC\Rx                  R{                  S5      \RX                  Re                  S5      \RX                  R[                  S2\R                  " S3\&/S49\R                  " S5\'/S49\R                  " S6\(/S49/5      S8 5       5       5       rD\(S9 5       rE\(S: 5       rF\(S; 5       rG\(\%S< 5       5       rH\(\RX                  Re                  S5      \#" S=/S>S9S? 5       5       5       rI\(S@ 5       rJ\"" SA/SB9\RX                  R[                  SCSD5      \RX                  Re                  S5      SE 5       5       5       rK\RX                  Re                  S5      SF 5       rL\(\RX                  Ru                  \" SG5      (       + SHS&9\RX                  Re                  S5      \#" SI/SS#SJ9SK 5       5       5       5       rMg! \Rr                   a    S#r8 GNf = f)L    N)BytesIO)Path)parse)FontPropertiesfindfont)_has_tex_package_check_for_pgf)ImageComparisonFailure)compare_images)_metadata_to_strPdfPages)_image_directoriescheck_figures_equalimage_comparison)needs_ghostscriptneeds_pgf_lualatexneeds_pgf_pdflatexneeds_pgf_xelatexc                      g)Nz
dummy func r       [/home/wildlama/miniconda3/lib/python3.13/site-packages/matplotlib/tests/test_backend_pgf.py<lambda>r      s    lr   c                 r   [         R                  R                  [        U 5      n[        R
                  " U40 UD6  [         R                  R                  [        SU -  5      n[        R                  " [         R                  R                  [        U 5      U5        [        XCUS9nU(       a  [        U5      eg )Nzexpected_%stol)ospathjoin
result_dirpltsavefigshutilcopyfilebaseline_dirr   r
   )fnamesavefig_kwargsr   actualexpectederrs         r   compare_figurer+      s|    WW\\*e,FKK).)ww||J(=>H
OOBGGLLu5x@
s
3C
$S)) r   zkey, value, expected_str)AuthormezAuthor={me}ModDate        tzinfozModDate={D:19680801000000Z}c                 &    [        X5      U:X  d   eg )N)r   )keyvalueexpected_strs      r   test__metadata_to_strr8   (   s     C'<777r   r6   )zBackslashes, e.g. in \commandszfunny braces {}zand square brackets]c                     [         R                  " [        SS9   [        SU 5        S S S 5        g ! , (       d  f       g = f)Nz value must not contain the chars)matchTitle)pytestraises
ValueErrorr   )r6   s    r   test__metadata_to_str_errorr?   2   s*     
z)K	L%( 
M	L	Ls   0
>pgfc                    [         R                  " 5       nUR                  SSS5        [        5       nUR	                  USSS9  UR                  S5        [         R                  " U5      nUS:H  R                  5       (       a   eg )N      ?z%_^ $a_b^c$pngr@   )formatbackendr   r1   )r!   figuretextr   r"   seekimreadall)tmp_pathfigbufts       r   test_tex_special_charsrO   <   sg     **,CHHR]#
)CKKE5K1HHQK

3AQ||~~~r   c                  X   [         R                  " 5         [        R                  " SSS5      n [         R                  " X S-  S5        [         R                  " U SU S-  -
  S5        [         R
                  " SS/SS/S	S
SS9  [         R                  " / SQ/ SQS5        [         R                  " S/S/SSS9  [         R                  " SSSSSS9  [         R                  " SSSS9  [         R                  " SSSSSS9  [         R                  " SS5        [         R                  " SS5        g ) Nr   r1         zb-zg>        g?z//	lightgrayred)hatch	facecolor	edgecolor)   rY   皙?rZ   rY   )rR   r[   r   rR   bg?rB   rorY   )
markersizeu/   unicode (ü, °, §) and math ($\mu_i = x_i^2$)right   )hafontsizez*sans-serif, blue, $\frac{\sqrt{x}}{y^2}$..
sans-serifblue)familycolorz2should be clipped as default clip_box is Axes bboxT)rb   clip_on)r!   rF   nplinspaceplotfill_betweenfillrG   ylabelxlimylim)xs    r   create_figurerq   I   s    JJL
Aq"A HHQQ HHQAqD$ b"XBxt{$&HH 137 HHcUSE4A.HHS#W"&JJ="&2HHQG$( HHQNHHQNr   zpgf_xelatex.pdfdefault)stylec                  `    SSS.n [         R                  R                  U 5        [        5         g )NserifFfont.familypgf.rcfontsmplrcParamsupdaterq   )
rc_xelatexs    r   test_xelatexr~   f   s(     ")!&(JLL
#Or   gsz9.50Ttype1eczneeds type1ec.sty)reasonucszneeds ucs.styzpgf_pdflatex.pdfgQk'@)rs   r   c                  d    SSSSS.n [         R                  R                  U 5        [        5         g )Nru   Fpdflatexz4\usepackage[utf8x]{inputenc}\usepackage[T1]{fontenc})rw   rx   pgf.texsystempgf.preamblery   )rc_pdflatexs    r   test_pdflatexr   x   s4     #*"'$.%@BK
 LL$Or   c            	         SSSSSSS.SSS	S
SSSS./n [         (       a  SS/OSS/n[        U 5       H  u  p#[        R                  " U5         S HJ  u  pEU[        R                  S   ;   d  M  [        U5      (       a  M0  [        R                  " SU S35        ML     [        5         [        SUS-    S3X   S9  S S S 5        M     g ! , (       d  f       M  = f)Nrc      g?
   Fxelatex)rw   	font.sizefigure.subplot.leftlines.markersizerx   r   	monospaceg?r`   r   zG\usepackage[utf8x]{inputenc}\usepackage[T1]{fontenc}\usepackage{sfmath})rw   r   r   r   rx   r   r   r   gffffff*@))sfmathr   )utf8xr   r   zneeds z.stypgf_rcupdater1   .pdfr   )
_old_gs_version	enumeraterz   
rc_contextr{   r   r<   skiprq   r+   )rc_setsr   irc_set	substringpkgs         r   test_rcupdater      s    
  ,')$&$!*,  +')$&$!+"8:;G '1d)QFCw'	^^F#"J	n!== 0 5 5KK&T 23 #K O\!a%536B $# (##s   C.C ;C
C	c                  *   [         R                  R                  S5        [        R                  R                  SSS.5        [        R                  " SS5      u  pUS   R                  SS	/SS	/5        US   R                  SS5        US   R                  SS5        US   R                  SS/SS/5        US   R                  [         R                  R                  S
S9SSS/S9  US   R                  S5        U R                  [!        5       SS9  g )Ni!N,ru   Frv   r1   rR   r   rS   g}Ô%ITi  )sizer`   ir   )binsrangelogpdfrD   )rh   randomseedrz   r{   r|   r!   subplotsrj   set_xlimset_ylimscatterhistnormal
set_xscaler"   r   )rL   axss     r   test_pathclipr      s     IINN8LLFG||Aq!HCFKKUb%[)FOOAqFOOAqFNNAq6Aq6"FKK		  d +"S"IKFFeKK	%K(r   zpgf_mixedmode.pdfc                      [         R                  R                  SSS.5        [        R                  SSS2SSS24   u  p[
        R                  " US-  U S-  -   5      R                  S5        g )	Nru   Frv   r1   y              D@rR   T)rz   r{   r|   rh   ogridr!   pcolorset_rasterized)YXs     r   test_mixedmoder      s_     LLFG88BqHb3h&'DAJJq!tad{**40r   c                     [         R                  R                  SSS.5        [        R                  " SS5      u  n u  pUR                  [        S5      5        UR                  [        S5      5        [        R                  " 5         UR                  5       R                  U R                  R                  5       5      n[        SSU0S	S
9  g )Nru   Frv   r1   rR      zpgf_bbox_inches.pdfbbox_inchesr   )r'   r   )rz   r{   r|   r!   r   rj   r   tight_layoutget_window_extenttransformeddpi_scale_transinvertedr+   )rL   ax1ax2bboxs       r   test_bbox_inchesr      s     LLFGll1a(OC#HHU1XHHU1X  "..s/B/B/K/K/MND(-9Nr   systemlualatex)marksr   r   c                    SSU S.n[         R                  R                  U5        [        R                  " 5       u  p#UR                  [        S5      5        UR                  5         [        R                  " SS9u  pEUR                  [        S5      5        UR                  5         [        R                  R                  [        SU  S35      nS	S
SS[        R                  " SSS[        R                  " [        R                  " S5      5      S9SS.n[        XgS9 nUR!                  U5        UR!                  U5        UR!                  U5        UR#                  5       S:X  d   e S S S 5        g ! , (       d  f       g = f)Nru   F)rw   rx   r   r   )rY   rR   figsize	pdfpages_r   r-   Multipage PDF with pgf	Test pagetest,pdf,multipager/   r0   r1   r   r2   Unknownr,   r;   SubjectKeywordsr.   TrappedmetadatarY   )rz   r{   r|   r!   r   rj   r   r   r   r   r   r    datetimetimezone	timedeltar   r"   get_pagecount)	r   r   fig1r   fig2r   r   mdr   s	            r   test_pdf_pagesr      s1    K
 LL$IDHHU1XV,IDHHU1X77<<
ixt$<=D)($$!Qx001C1CA1FGI
B 
$	$DDD  "a''' 
%	$	$s   A
E22
F c                    [         R                  " S5      nU R                  SS5        [        R                  R                  SU05        [        R                  " 5       u  p4UR                  [        S5      5        SSSS	[        R                  " S
SS[        R                  " [        R                  " S5      5      S9SS.n[        R                  R                  [         SU S35      n[#        XeS9 nUR%                  U5        S S S 5        UR&                  R)                  U5       nUR*                  R-                  5        VV	s0 s H  u  pU[/        U	5      _M     n
nn	S S S 5        SW
;   a  U
S	 SU
;   a  U
S	 U
R1                  S5      nUS[        R2                   3:X  d  US:X  a  SU;   d   eU
SSS[        R2                   S3S	SSSSS.:X  d   eg ! , (       d  f       N= fs  sn	nf ! , (       d  f       N= f) NpikepdfSOURCE_DATE_EPOCH0r   r   r-   r   r   r   r/   r0   r1   r   r2   Truer   pdfpages_meta_check_r   r   z/PTEX.FullBannerz/PTEX.Fullbannerz	/ProducerzMatplotlib pgf backend vr   LuaTeXzD:19700101000000ZzMatplotlib vz, https://matplotlib.orgzD:19680801000000Zz/True)z/Authorz/CreationDatez/Creatorz	/Keywordsz/ModDatez/Subjectz/Titlez/Trapped)r<   importorskipsetenvrz   r{   r|   r!   r   rj   r   r   r   r   r   r   r   r    r   r"   Pdfopendocinfoitemsstrpop__version__)monkeypatchr   r   rL   axr   r   r   kvinfoproducers               r   test_pdf_pages_metadata_checkr      s    !!),G*C0LL&12llnGCGGE!H )($$!Qx001C1CA1FGI
B 77<<
&:6($$GHD	$	$C 
% 
		$	3&)kk&7&7&9:&9da3q6	&9: 
  T!#$T!#$ xx$H1#//1BCCj X%9; ; ,"3??"33KL)'*	 	 	 	# 
%	$ ; 
 	s*   2G'G+G%G+
G"%G++
G9c                 R   U S-  n[        U5       n S S S 5        UR                  5       (       a   eU S-  n[        U5       nUR                  [        R                  " 5       5        S S S 5        UR                  5       (       d   eg ! , (       d  f       Nz= f! , (       d  f       N7= f)Nza.pdfzb.pdf)r   existsr"   r!   rF   )rK   fnr   s      r   test_multipage_keep_emptyr   8  s{     
G	B	" 
yy{{? 
G	B	"CJJL! 
99;;; 
 
s   B%B
B
B&c                  d   [         R                  " 5       n U R                  S5        [        R                  " [
        5         U R                  [        5       SS9  S S S 5        [         R                  " 5       n U R                  S5        U R                  [        5       SS9  g ! , (       d  f       NM= f)Nz\oopsr@   r   z
this is ok)r!   rF   suptitler<   r=   r>   r"   r   )rL   s    r   test_tex_restart_after_errorr   G  sp    
**,CLL	z	"GIe, 
# **,CLLKK	%K( 
#	"s   B!!
B/c                      [         R                  " 5       u  pUR                  SS/SS//5        U R                  [	        5       SSSS9  g )	Nr   r1   rR   rY   r   r@   tight)rD   rE   r   )r!   r   imshowr"   r   )rL   r   s     r   test_bbox_inches_tightr   S  s>    llnGCII1v1vKK	%GKLr   c                      [        5       n [        R                  " 5       R                  U SSSS9  U R	                  S5        [        R
                  " U 5      nUS   S:H  R                  5       (       d   eg )NrC   r@   T)rD   rE   transparentr   ).rY   )r   r!   rF   r"   rH   rI   rJ   )rM   rN   s     r   test_png_transparencyr  Z  s]     )CJJLUEtLHHQK

3AfIN!!!!r   zttc_pgf.pdfmpl20c            
         [        S/S9n [        [        U 5      5      R                  S:w  a  [        R
                  " S5        SSS.n[        R                  " SSS0UD6  [        R                  " S	[        U5      S
-  4S9R                  [        U5      5      n[        UR                  5       U5       H,  u  p4UR                  SSU S[        R                   3USSS9  M.     g )NzWenQuanYi Zen Hei)re   zwqy-zenhei.ttcz"Font wqy-zenhei.ttc may be missingzWenQuanYi Zen Hei Mono)rc   r   r         rR   r   rB   z: center)fonthorizontalalignmentverticalalignment)r  )r   r   r   namer<   r   r!   rcrF   len
subfigureszipvaluesrG   stringascii_uppercase)fpfontsfigsr  rL   s        r   test_ttc_outputr  d  s     
 34	5BHRL"2289.=UVEFF$$e$::q#e*q.12==c%jID.	cdV2f&<&<%=>T%- 	 	K /r   c                 T   U R                  S5         S[        R                  S'   [        R                  " SSS5        [        R
                  " [        5       SS9  S S S 5        SU R                   Vs/ s H  oR                  5       PM     sn;   d   eg ! , (       d  f       N?= fs  snf )	NWARNINGzthis-font-does-not-existrw   rB   zhello, worldr@   r   z/Ignoring unknown font: this-font-does-not-exist)	at_levelrz   r{   r!   figtextr"   r   records
getMessage)caplogrs     r   test_unknown_fontr  u  s    		#&@]#BN+GIe, 
$ = &A0 .1A0 0 0 0	 
$	#A0s   A	B2B%
B"r   )
extensions	texsystem)r   r   r   c                     [        U5      (       d  [        R                  " US-   5        U[        R                  S'   U R                  SSS5        UR                  SSS5        g )Nz + pgf is requiredr   rB   z$-1$u   $−1$)r	   r<   r   rz   r{   rG   )fig_testfig_refr!  s      r   test_minus_signs_with_texr%    sP     )$$I 445$-CLL!MM"b&!LLR,-r   c                     [         R                  " SS9u  pUR                  / 5        UR                  / 5        UR	                  S5        UR                  SS/5      u  nUR                  SSSS	9  [        5        nU R                  US
S9  UR                  5       R                  5       nS S S 5        SnUW;   d   eg ! , (       d  f       N= f)N)rY   rY   r   Fr   r1   r   r   *   )scalelength
randomnessr@   r   aR  \pgfpathmoveto{\pgfqpoint{0.375000in}{0.300000in}}%
\pgfpathlineto{\pgfqpoint{2.700000in}{2.700000in}}%
\usepgfmodule{decorations}%
\usepgflibrary{decorations.pathmorphing}%
\pgfkeys{/pgf/decoration/.cd, segment length = 0.150000in, amplitude = 0.100000in}%
\pgfmathsetseed{42}%
\pgfdecoratecurrentpath{random steps}%
\pgfusepath{stroke}%)r!   r   
set_xticks
set_yticksset_frame_onrj   set_sketch_paramsr   r"   getvaluedecode)rL   r   handlefdrM   baselines         r   test_sketch_paramsr4    s    ll6*GCMM"MM"OOEggq!foGF
1RB?	bBu%kkm""$ 
H s?? 
s   :/B<<
C
zunicode-mathzneeds unicode-math.styzpgf_document_font_size.pdf)rs   remove_textc                      [         R                  R                  SSSS.5        [        R                  " 5         [        R
                  " / SS9  [        R
                  " / SS9  [        R                  " 5         g )Nr   Fz\usepackage{unicode-math})r   rx   r   zM$this is a very very very long math label a \times b + 10^{-3}$ and some text)labelz:\normalsize the document font size is \the\fontdimen6\font)rz   r{   r|   r!   rF   rj   legendr   r   r   test_document_font_sizer9    s`     LL"4 
 JJLHHR$ HHRP JJLr   )Nr   ior   r   pathlibr   r#   r  numpyrh   packaging.versionr   parse_versionr<   
matplotlibrz   matplotlib.pyplotpyplotr!   matplotlib.font_managerr   r   matplotlib.testingr   r	   matplotlib.testing.exceptionsr
   matplotlib.testing.comparer   matplotlib.backends.backend_pgfr   r   matplotlib.testing.decoratorsr   r   r   matplotlib.testing._markersr   r   r   r   r%   r    r+   markparametrizer   r   r8   r?   rE   rO   rq   r~   _get_executable_infoversionr   ExecutableNotFoundErrorskipifr   rs   contextr   r   r   r   paramr   r   r   r   r   r  r  r  r%  r4  r9  r   r   r   <module>rQ     s     	     4    < ? @ 5 F? ? 
 ..BC j *, * 3#tQ(*;*;H<N<Nq<Q*RS"$6 88  # 
)
)
 U   : U$%Y7 8    &..v1FF  (33<OP(//HU%&i.eA77  I Q  9UC    C8 9U)   )" U&'y91 :  1 9U    9U
LL$6#78
LL$6#78
LL#4"56$ 
 (   (F 9U
LL$6#78
LL$6#78
LL#4"56$ 
/  /d   ) ) M M "  " U=/1K 2  K 0 0 (&IJU.  K ). U 6 ((1I   U/0	tT U  s	 "" Os   %U U,+U,