
    h
9                     .   S SK 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	r
S SK	Jr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  S SKJr  S S	KJr  S S
KJrJ r   S SK!J"r"  \ " S/5      S 5       r#\RH                  RK                  SSS/5      \RH                  RK                  SSS/5      S 5       5       r&S r'S r(S r)S r*S r+S r,S r-S r.S r/S r0\"S 5       r1S  r2\ " S!/5      S" 5       r3\ " S#/5      S$ 5       r4\
Rj                  Rm                  S%5      \" S&S'/S(9S) 5       5       r7\"S* 5       r8S+ r9\ " S,/5      S- 5       r:S. r;\ " S//S0S19S2 5       r<\ " S3/S4S19S5 5       r=\RH                  RK                  S6S7S8/5      S9 5       r>\ " S:/5      S; 5       r?g)<    N)Path)pyplotrcParamsfont_manager)_get_data_path)FT2Font)findfontFontProperties)get_glyphs_subsetfont_as_file)PdfPages)	Rectangle)check_figures_equalimage_comparison)needs_usetexzpdf_use14corefonts.pdfc            	          S[         S'   S[         S'   S[         S'   S/[         S'   S	[         S
'   Sn [        R                  " 5       u  pUR                  S5        UR	                  SSU SSSS9  UR                  SSS9  g )NTzpdf.use14corefontsz
sans-serifzfont.family   z	font.size	Helveticazfont.sans-serifr   pdf.compressionu   A three-line text positioned just above a blue line
and containing some French characters and the euro symbol:
"Merci pépé pour les 10 €"z0Test PDF backend with option use14corefonts=Trueg      ?centerbottom   )horizontalalignmentverticalalignmentfontsize)	linewidth)r   pltsubplots	set_titletextaxhline)r    figaxs      S/var/www/html/env/lib/python3.13/site-packages/matplotlib/tests/test_backend_pdf.pytest_use14corefontsr%      s    %)H!"*H]H[#.-H"#H"D llnGCLLCDGGCd&   JJscJ"    zfontname, fontfile)DejaVu SanszDejaVuSans.ttf)WenQuanYi Zen Heiwqy-zenhei.ttcfonttype   *   c                 Z   [        [        [        U /S95      5      R                  U:w  a  [        R
                  " SU < S35        U[        S'   [        R                  " 5       u  p4UR                  / SQ5        UR                  SU S9  UR                  [        R                  " 5       SS	9  g )
NfamilyFont  may be missingpdf.fonttype      r+   z
Axes Title)fontpdfformat)r   r	   r
   namepytestskipr   r   r   plotr   savefigioBytesIO)fontnamefontfiler*   r"   r#   s        r$   test_embed_fontsrC   ,   s     H^H:678==IeH<78'H^llnGCGGILLHL-KK

UK+r&   c                     [        [        R                  " 5       5       n U R                  5       S:X  d   e[        R
                  " 5       u  pUR                  / SQ5        UR                  U SS9  U R                  5       S:X  d   eU R                  5         U R                  5       S:X  d   e S S S 5        g ! , (       d  f       g = f)Nr   r3   r7   r8   r4   r5   )r   r?   r@   get_pagecountr   r   r=   r>   )r7   r"   r#   s      r$   test_multipage_pagecountrF   <   s    	"**,	3  "a''',,.
	C&  "a'''  "a''' 
 		s   BB66
Cc                  |   [         R                  " 5       n [        U 5       n[        S5       H;  n[        R
                  " 5       u  p4UR                  S5        UR                  USS9  M=     S S S 5        U R                  5       nUR                  S5      S:X  d   e[        U5      S:  d   eg ! , (       d  f       NG= f)N
   zThis is a long titler7   r8   s	   startxrefr4   i@  )r?   r@   r   ranger   r   r   r>   getvaluecountlen)pdfior7   ir"   r#   ss         r$   test_multipage_properfinalizerP   G   s    JJLE	%CrAllnGCLL/0KKEK*  

 	A77< A%%%q6E>> 
s   AB--
B;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   figure)tmp_pathfnr7   s      r$   test_multipage_keep_emptyrV   S   sy    	G	B	" 
yy{{? 
G	B	"CJJL! 
99;;; 
 
s   B%B
B
B&c                  j   [         R                  " [         R                  " SSS5      [         R                  " SSS5      5      u  p[         R                  " US-  5      n[        R
                  " 5       u  p4UR                  SS5        UR                  U/ SQS9  UR                  US S S	2   / S
QS9  S[        R                  S'   [        [        R                  " 5       5       nUR                  USS9  [        UR                  R                  5      S:X  d   e S S S 5        S[        R                  S'   [        [        R                  " 5       5       nUR                  USS9  [        UR                  R                  5      S:X  d   e S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)N   r4   r5   r   r+   )r   r4   r   r4   )extent)r5   r+   r   r4   Tzimage.composite_imager7   r8   F)npmeshgridarangesinr   r   set_xlimimshowr   r   r?   r@   r>   rL   _file_images)XYZr"   r#   r7   s         r$   test_composite_imagerg   a   s=    ;;ryyQ*BIIb!Q,?@DA
qAvAllnGCKK1IIaI%IIa"glI+,0CLL()	"**,	3C&399$$%*** 
  -2CLL()	"**,	3C&399$$%*** 
 		 
 	 
 	s   #6F6F$
F!$
F2c                  
   [         R                  " S5      n [        R                  " S[        R                  S9n[        R
                  " S5      US S 2SS4'   S[        S'   [        R                  " 5       nUR                  USS9  [        R                  " 5       nUR                  US	S
S9  U R                  R                  U5       nUR                  u  nUR                   R#                  5       u  nU R%                  U5      nUR&                  (       d   eUR)                  5       n[        R*                  " UR-                  S5      5      n	S S S 5        [        R.                  R1                  UW	5        g ! , (       d  f       N/= f)Npikepdf)   r4   r+   )dtyperj   r   Tr   )resizer7   rS   )r9   dpiRGB)r;   importorskipr\   zerosuint8r^   r   r   rS   figimager?   r@   r>   PdfopenpagesimagesvaluesPdfImageindexedas_pil_imageasarrayconverttestingassert_array_equal)
ri   datar"   bufr7   pageimage	pdf_image	pil_imagergbs
             r$   test_indexed_imager   t   s   !!),G88Krxx0DIIcNDAqM"&H
**,CLLdL#
**,CKKExK0			#	#		##%$$U+	    **,	jj**512 
 JJ!!$, 
	s   BE44
Fc                    [         R                  " S5      nU R                  SS5        [        R                  " 5       u  p#UR                  [        S5      5        SSSS[        R                  " S	S
S[        R                  " [        R                  " S5      5      S9SS.n[        R                  " 5       nUR                  XTSS9  UR                  R                  U5       nUR                  R!                  5        VVs0 s H  u  pxU[#        U5      _M     n	nnS S S 5        W	SSS[$        R&                   S3SSS[$        R&                   3SSSS.	:X  d   eg s  snnf ! , (       d  f       NJ= f)Nri   SOURCE_DATE_EPOCH0rY   meMultipage PDF	Test pagetest,pdf,multipage  r   r4   r   tzinfoTrueAuthorTitleSubjectKeywordsModDateTrappedr7   )metadatar9   D:19700101000000ZMatplotlib v, https://matplotlib.orgD:19680801000000ZMatplotlib pdf backend v/True	z/Authorz/CreationDatez/Creatorz	/Keywordsz/ModDatez	/Producerz/Subjectz/Titlez/Trapped)r;   ro   setenvr   r   r=   rI   datetimetimezone	timedeltar?   r@   r>   rs   rt   docinfoitemsstrmpl__version__
monkeypatchri   r"   r#   mdr   r7   kvinfos
             r$   test_savefig_metadatar      sF   !!),G*C0llnGCGGE!H  ($$!Qx001C1CA1FGI
B **,CKKK/			#	#&)kk&7&7&9:&9da3q6	&9: 
 ,"3??"33KL)'//@A!
 
 
 
 ; 
	s    E>EEE
E+c                     [         R                  " 5       u  p[        R                  " [        SS9   U R                  [        R                  " 5       SSS0S9  S S S 5        [        R                  " [        SS9   U R                  [        R                  " 5       SSS	0S9  S S S 5        [        R                  " [        S
S9   U R                  [        R                  " 5       SSS0S9  S S S 5        [        R                  " [        SS9   U R                  [        R                  " 5       SSS0S9  S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Ny= f! , (       d  f       g = f)Nz#Unknown infodict keyword: 'foobar'.)matchr7   foobarinvalid)r9   r   z%not an instance of datetime.datetime.r   z
1968-08-01z'not one of {"True", "False", "Unknown"}r   fooznot an instance of str.r   i  )r   r   r;   warnsUserWarningr>   r?   r@   r"   r#   s     r$   test_invalid_metadatar      s   llnGC	kA
CBJJL(I9NO
C 
kC
EBJJL'6 	 	8
E
 
kE
GBJJL)U9KL
G 
k)B	CBJJL'4I 
D	C
C 
C
E 
E

G 
G 
D	Cs/   'D99'E
'E	'E,9
E

E
E),
E:c                 F   [         R                  " S5      nU R                  SS5        [        R                  " 5       u  p#UR                  [        S5      5        SSSS[        R                  " S	S
S[        R                  " [        R                  " S5      5      S9SS.n[        R                  " 5       n[        XTS9 nUR                  U5        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  pxU[%        U5      _M     n	nnS S S 5        W	SSS[&        R(                   S3SSS[&        R(                   3SSSS.	:X  d   eg ! , (       d  f       N= fs  snnf ! , (       d  f       N[= f)Nri   r   r   rY   r   r   r   r   r   r   r4   r   r   r   r   )r   r   r   r   r   r   r   r   )r;   ro   r   r   r   r=   rI   r   r   r   r?   r@   r   r>   rs   rt   r   r   r   r   r   r   s
             r$   test_multipage_metadatar      sg   !!),G*C0llnGCGGE!H  ($$!Qx001C1CA1FGI
B **,C	#	#sCC 
$ 
		#	#&)kk&7&7&9:&9da3q6	&9: 
 ,"3??"33KL)'//@A!
 
 
 
 
$	#
 ; 
	s*   >#E;F"F:F;
F	F
F c                    ^^ [         R                  " S5      n Sm[        R                  " SS9nUR	                  SSST S3S9  UR	                  SS	S
T S3S9  [
        R                  " 5        nUR                  USS9  U R                  R                  U5       nUR                  S   R                  nS H^  u  nm[        UU4S jU 5       S 5      nUc   e[        USS 5      b   eUR                  S   [        R                   " U5      S-  :X  a  M^   e   S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nri   &https://test_text_urls.matplotlib.org/r5   r4   figsize皙?ztest plain 123plain)urlg?ztest mathtext $123$mathtextr7   r8   r   ))z0.1r   )z0.4r   c              3   f   >#    U  H&  oR                   R                  T T 3:X  d  M"  Uv   M(     g 7fNAURI).0afragmenttest_urls     r$   	<genexpr>!test_text_urls.<locals>.<genexpr>   s)     M1##''z(5L*LQQs   !1	1
QuadPointsr4   H   )r;   ro   r   rS   r    r?   r@   r>   rs   rt   ru   AnnotsnextgetattrRectdecimalDecimal)	ri   r"   fdr7   annotsyannotr   r   s	          @@r$   test_text_urlsr      s+   !!),G7H
**V
$CHHS#'z-?H@HHS#,XJh2GHH	Bu%[[b!SYYq\((F  G8MM (((ulD9AAAzz!}(:R(????  G " 
 "! 
s+   .,D:A6D)D)D:)
D7	3D::
Ec                  j  ^ [         R                  " S5      n Sm[        R                  " SS9nUR	                  SSSST S9  [
        R                  " 5        nUR                  US	S
9  U R                  R                  U5       nUR                  S   R                  n[        U4S jU 5       S 5      nUc   e[        USS 5      c   eUR                  S   UR                  S   [         R"                  " S5      -
  :X  d   e S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nri   r   )r4   r4   r   r   N-   )rotationr   r7   r8   r   c              3   `   >#    U  H#  oR                   R                  T :X  d  M  Uv   M%     g 7fr   r   r   r   r   s     r$   r   )test_text_rotated_urls.<locals>.<genexpr>  s"     ?FqccggH:&>Fs   .	.r      z0.00001)r;   ro   r   rS   r    r?   r@   r>   rs   rt   ru   r   r   r   r   r   r   r   ri   r"   r   r7   r   r   r   s         @r$   test_text_rotated_urlsr     s   !!),G7H
**V
$CHHS#sRzH;	Bu%[[b!SYYq\((F ?F?E $$$5,5AAA::a="W__Y%??@ @ @ " 
 "! 
s%   ,D$A>DD$
D!	D$$
D2c                  4  ^ [         R                  " S5      n Sm[        R                  " SS9nUR	                  SSSST S	3S
9  [
        R                  " 5        nUR                  USS9  U R                  R                  U5       nUR                  S   R                  n[        U4S jU 5       S 5      nUc   eUR                  S   [        R                  " S5      S-  :X  d   e S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nri   r   r   r   r   gffffff?ztest tex $123$Ttex)usetexr   r7   r8   r   c              3   d   >#    U  H%  oR                   R                  T S 3:X  d  M!  Uv   M'     g7f)r   Nr   r   s     r$   r   %test_text_urls_tex.<locals>.<genexpr>/  s'     BFqccggH:S1A&AFs    0	0r4   z0.7r   )r;   ro   r   rS   r    r?   r@   r>   rs   rt   ru   r   r   r   r   r   r   s         @r$   test_text_urls_texr     s    !!),G7H
**V
$CHHS#'XJc:JHK	Bu%[[b!SYYq\((F BFBE $$$::a=GOOE$:R$???? " 
 "! 
s%   ,D	A!C8'D	8
D	D		
Dc                      [        [        [        R                  5      5       n U R	                  [
        R                  " 5       5        S S S 5        g ! , (       d  f       g = fr   )r   r   osdevnullr>   r   rS   )r7   s    r$   test_pdfpages_fspathr   6  s3    	$rzz"	#sCJJL! 
$	#	#s   %A
Azhatching_legend.pdfc                      [         R                  " SS9n [        SS/SSSSS9n[        SS/SSSSS9nU R                  XX// SQ5        g	)
z.Test for correct hatching on patches in legend)r4   r5   r   r   greenXXXX)	facecolorhatchblue) r   r   r   N)r   rS   r   legend)r"   r   bs      r$   test_hatching_legendr   ;  sQ     **V
$C1a&!Q'@A1a&!Q&?AJJa|-.r&   zgrayscale_alpha.pdfc                  <   [         R                  SSS2SSS24   u  p[         R                  " U S-  US-  -   * 5      n[         R                  X"S:  '   [        R
                  " 5       u  p4UR                  USSS9  UR                  / 5        UR                  / 5        g)z9Masking images with NaN did not work for grayscale imagesr5   r   nonegray_r)interpolationcmapN)	r\   ogridexpnanr   r   ra   
set_xticks
set_yticks)xr   ddr"   r#   s        r$   test_grayscale_alphar  F  s     88BqGR"W$%DA	!Q$A+	B&&BBwKllnGCIIbXI6MM"MM"r&   defaultr7   eps)
extensionsc           	          U R                  5       nUR                  5         UR                  [        R                  " [        R
                  " SSS5      5      SSS9  UR                  5       nUR                  5         g )NrX   rY   d   r   r   )c)add_subplotset_axis_offr=   r\   r_   linspace)fig_testfig_refax_testax_refs       r$   'test_pdf_eps_savefig_when_color_is_noner  R  s`     ""$GLLB3/0#L@  "F
r&   c                      [         R                  " SSS9  [        R                  " [        5         [         R
                  " [        R                  " 5       SS9  SSS5        g! , (       d  f       g= f)z"Test failing latex subprocess callz$22_2_2$T)r   r7   r8   N)r   xlabelr;   raisesRuntimeErrorr>   r?   r@    r&   r$   test_failing_latexr  \  s>     JJz$'	|	$BJJL/ 
%	$	$s   )A""
A0c                      [         R                  " 5       u  pUR                  / / SS9  U R                  [        R
                  " 5       SS9  g )NT)
rasterizedr7   r8   )r   r   r=   r>   r?   r@   r   s     r$   test_empty_rasterizedr  d  s7    llnGCGGBtG$KK

UK+r&   zkerning.pdfc                  z    [         R                  " 5       n SnU R                  SSUSS9  U R                  SSUSS9  g )Nu   AVAVAVAVAVAVAVAV€AAVVr   g      ?rY   )sizeg      ?   )r   rS   r    )r"   rO   s     r$   test_kerningr#  k  s:    
**,C!AHHQQQHHHQQRH r&   c                  
   [        [        S5      5      n Sn[        U 5      nUR                  U5        [	        X5       n[        [        U5      5      nS S S 5        WR                  U5        UR                  5       nUR                  5       n1 UkU Vs1 s H  n[        U5      iM     sn:X  d   e[        U5      [        U5      :  d   eUR                  5       UR                  5       :X  d   eg ! , (       d  f       N= fs  snf )Nzfonts/ttf/DejaVuSerif.ttfz%these should be subsetted! 1234567890)
r   r   r   set_textr   r   get_charmapchrrL   get_num_glyphs)fpathchars	nosubfontsubsetsubfont	nosubcmapsubcmapkeys           r$   test_glyphs_subsetr1  s  s    :;<E3E Iu 
5	(F,v./ 
)U%%'I!!#G U8G4GSCG4444 w<#i.((( !!#y'?'?'AAAA 
)	( 5s   C/D /
C=zmulti_font_type3.pdfgffffff@)tolc                  ^   [         R                  " S/S9n [        [         R                  " U 5      5      R                  S:w  a  [
        R                  " S5        [        R                  " SSS/SS9  [        R                  " S	S
S9  [        R                  " 5       nUR                  SSS5        g )Nr(   r.   r)   Font may be missingr6   r'      r/   r!  r7   r+   r*   333333?ffffff?"   There are 几个汉字 in between!fmr
   r   r	   r:   r;   r<   r   rcrS   r    fpr"   s     r$   test_multi_font_type3r@    s    			#6"7	8BBKKO!!%55)*FF6=*=>RHFF51
**,CHHT5>?r&   zmulti_font_type42.pdfg@c                  ^   [         R                  " S/S9n [        [         R                  " U 5      5      R                  S:w  a  [
        R                  " S5        [        R                  " SSS/SS9  [        R                  " S	S
S9  [        R                  " 5       nUR                  SSS5        g )Nr(   r.   r)   r4  r6   r'   r5  r6  r7   r,   r7  r8  r9  r:  r;  r>  s     r$   test_multi_font_type42rB    s    			#6"7	8BBKKO!!%55)*FF6=*=>RHFF52
**,CHHT5>?r&   zfamily_name, file_name)z	Noto SanszNotoSans-Regular.otf)FreeMonozFreeMono.otfc                    [         R                  " U /S9n[        [         R                  " U5      5      R                  U:w  a  [
        R                  " SU  S35        [        R                  " SU /SS9  [        R                  " 5       nUR                  SSS	5        UR                  [        R                  " 5       S
S9  g )Nr.   r0   r1   r6   r5  r6  r8  r9  u   Привет мир!r7   r8   )r<  r
   r   r	   r:   r;   r<   r   r=  rS   r    r>   r?   r@   )family_name	file_namer?  r"   s       r$   test_otf_font_smokerG    s    
 
		;-	0BBKKO!!Y.eK=89FF6;-b1
**,CHHT501KK

UK+r&   ztruetype-conversion.pdfc                     S[         R                  S'   [        R                  " 5       u  pUR	                  SSS[        [        5      R                  S5      SS9  UR                  / 5        UR                  / 5        g )Nr+   r2   r   ABCDEzmpltest.ttfP   )r6   r   )
r   r   r   r   r    r   __file__	with_namer  r  )recwarnr"   r#   s      r$   test_truetype_conversionrN    sc     $%CLL llnGCGGAq'h))-82  GMM"MM"r&   )@r   r   r?   r   pathlibr   numpyr\   r;   
matplotlibr   r   r   r   r   r<  matplotlib.cbookr   matplotlib.ft2fontr   matplotlib.font_managerr	   r
   #matplotlib.backends._backend_pdf_psr   r   matplotlib.backends.backend_pdfr   matplotlib.patchesr   matplotlib.testing.decoratorsr   r   matplotlib.testing._markersr   r%   markparametrizerC   rF   rP   rV   rg   r   r   r   r   r   r   r   r   r   r  stylecontextr  r  r  r#  r1  r@  rB  rG  rN  r  r&   r$   <module>r^     s8     	 	      , & < O 4 ( O 4 +,-# .#& -%+0  aW-, .	
,(	+&-0 FJ("J@6@4 @ @0"
 ()*/ +/ ()* + 9/ 0  0 0, =/"! #!B4 )*4	@ 5	@ *+5	@ 6	@ 1?689
,9
, ,-. /r&   