
    P/Ph2                     t
   d dl 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
Z
d dlZd dlmZ d dlmZmZ d dlmZ d dlmZ d dlmZ d dlmZmZmZ d d	lmZmZm Z m!Z!  ed
           \  Z"Z#i d fdZ$e!ee
j%        &                    d          d                                     Z'd Z(e!e
j%        &                    d           edgd          d                                     Z)	  ej*        d          j+         e	d          k     Z,n# ej-        $ r dZ,Y nw xY we e
j%        .                     ed           d          e
j%        .                     ed           d          e
j%        &                    d           edgde,rdnd           d                                                             Z/e!e ej0        1                    d          e
j%        &                    d          d                                                 Z2e!ej0        1                    d          e
j%        &                    d          d                                      Z3e!e
j%        &                    d           ed!gd          d"                                     Z4e!ej0        1                    d          e
j%        &                    d          d#                                     Z5ej0        1                    d          e
j%        &                    d          e
j%        6                    d$ e
j7        d%eg&           e
j7        d'e g&           e
j7        d(e!g&          g          d)                                     Z8ej0        1                    d          e
j%        &                    d          e
j%        6                    d$ e
j7        d%eg&           e
j7        d'e g&           e
j7        d(e!g&          g          d*                                     Z9e!d+             Z:e!d,             Z;e!d-             Z<e!ed.                         Z=e!d/             Z> ed0g1          e
j%        6                    d2d3          e
j%        &                    d          d4                                     Z?e
j%        &                    d          d5             Z@e!e
j%        .                     ed6           d7          e
j%        &                    d           ed8gdd9          d:                                                 ZAdS );    N)BytesIO)parse)_has_tex_package_check_for_pgf)ImageComparisonFailure)compare_images)PdfPages)_image_directoriescheck_figures_equalimage_comparison)needs_ghostscriptneeds_pgf_lualatexneeds_pgf_pdflatexneeds_pgf_xelatexc                      dS )Nz
dummy func r       a/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/matplotlib/tests/test_backend_pgf.py<lambda>r      s    l r   c                 z   t           j                            t          |           }t	          j        |fi | t           j                            t          d| z            }t          j        t           j                            t          |           |           t          |||          }|rt          |          d S )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    W\\*e,,FK)).)))w||J(=>>H
OBGLLu55x@@@
6s
3
3
3C
 *$S)))* *r   pgfc                 ,   t          j                    }|                    ddd           t                      }|                    |dd           |                    d           t          j        |          }|dk                                    rJ d S )N      ?z%_^ $a_b^c$pngr(   )formatbackendr      )r   figuretextr   r   seekimreadall)tmp_pathfigbufts       r   test_tex_special_charsr8   %   s     *,,CHHR]###
))CKKE5K111HHQKKK
3AQ||~~r   c                  J   t          j                     t          j        ddd          } t          j        | | dz  d           t          j        | d| dz  z
  d           t          j        ddgddgd	d
d           t          j        g dg dd           t          j        dgdgdd           t          j        ddddd           t          j        ddd           t          j        ddddd           t          j	        dd           t          j
        dd           d S ) Nr   r.         zb-zg>        g?z//	lightgrayred)hatch	facecolor	edgecolor)   rB   皙?rC   rB   )r;   rD   r   r;   bg?r*   rorB   )
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)rK   clip_on)r   r/   nplinspaceplotfill_betweenfillr0   ylabelxlimylim)xs    r   create_figurerZ   2   sW   JLLL
Aq"A HQQ HQAqD$ b"XBxt{$& & & &H 1 1 13777 HcUSE4A....HS#W"& & & &J="&2 2 2 2HQG$( ( ( ( HQNNNHQNNNNNr   zpgf_xelatex.pdfdefault)stylec                  j    ddd} t           j                            |            t                       d S )NserifFfont.familypgf.rcfontsmplrcParamsupdaterZ   )
rc_xelatexs    r   test_xelatexrg   O   s9     ")!&( (JL
###OOOOOr   gsz9.50Ttype1eczneeds type1ec.sty)reasonucszneeds ucs.styzpgf_pdflatex.pdfgQk'@)r\   r   c                  n    ddddd} t           j                            |            t                       d S )Nr^   Fpdflatexz4\usepackage[utf8x]{inputenc}\usepackage[T1]{fontenc})r`   ra   pgf.texsystempgf.preamblerb   )rc_pdflatexs    r   test_pdflatexrq   a   sF     #*"'$.%@B BK
 L$$$OOOOOr   c            	         dddddddddd	d
ddddg} t           rddgnddg}t          |           D ]\  }}t          j        |          5  dD ]@\  }}|t          j        d         v r't          |          st          j        d| d           At                       t          d|dz    d||                    d d d            n# 1 swxY w Y   d S )NrL      g?
   Fxelatex)r`   	font.sizefigure.subplot.leftlines.markersizera   rn   	monospaceg?rI   rm   zG\usepackage[utf8x]{inputenc}\usepackage[T1]{fontenc}\usepackage{sfmath})r`   rv   rw   rx   ra   rn   ro   r   gffffff*@))sfmathrz   )utf8xrk   ro   zneeds z.stypgf_rcupdater.   .pdfr   )
_old_gs_version	enumeraterc   
rc_contextrd   r   pytestskiprZ   r'   )rc_setsr   irc_set	substringpkgs         r   test_rcupdater   r   s   
  ,')$&$!*, ,  +')$&$!+"8: :;G '
21d))QFCw'' C C	6^F## 	C 	C"J 4 4	3n!=== 0 5 5 >K 2 2 2 2333OOO5!a%5553q6BBBB	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	CC Cs   A0CC	C	c                     t           j                            d           t          j                            ddd           t          j        dd          \  } }|d                             dd	gdd	g           |d         	                    dd           |d         
                    dd           |d                             ddgddg           |d                             t           j                            d
          dddg           |d                             d           |                     t!                      d           d S )Ni!N,r^   Fr_   r.   r;   r   r<   g}Ô%ITi  )sizerI   irt   )binsrangelogpdfr,   )rQ   randomseedrc   rd   re   r   subplotsrS   set_xlimset_ylimscatterhistnormal
set_xscaler   r   )r5   axss     r   test_pathclipr      s&    INN8LFFGGG|Aq!!HCFKKUb%[)))FOOAqFOOAqFNNAq6Aq6"""FKK	  d ++"S"IKFFFFeKK		%K(((((r   zpgf_mixedmode.pdfc                      t           j                            ddd           t          j        ddddddf         \  } }t          j        |dz  | dz  z                                 d           d S )	Nr^   Fr_   r.   y              D@r;   T)rc   rd   re   rQ   ogridr   pcolorset_rasterized)YXs     r   test_mixedmoder      ss     LFFGGG8BqHb3h&'DAqJq!tad{**400000r   c                     t           j                            ddd           t          j        dd          \  } \  }}|                    t          d                     |                    t          d                     t          j                     |                                	                    | j
                                                  }t          dd|id	
           d S )Nr^   Fr_   r.   r;      zpgf_bbox_inches.pdfbbox_inchesr   )r#   r   )rc   rd   re   r   r   rS   r   tight_layoutget_window_extenttransformeddpi_scale_transinvertedr'   )r5   ax1ax2bboxs       r   test_bbox_inchesr      s     LFFGGGl1a((OC#sHHU1XXHHU1XX  ""..s/B/K/K/M/MNND(-9N     r   systemlualatex)marksrm   ru   c                 d   dd| d}t           j                            |           t          j                    \  }}|                    t          d                     |                                 t          j        d          \  }}|                    t          d                     |                                 t          j	        
                    t          d|  d          }d	d
ddt          j        dddt          j        t          j        d                              dd}t          ||          5 }|                    |           |                    |           |                    |           |                                dk    sJ 	 d d d            d S # 1 swxY w Y   d S )Nr^   F)r`   ra   rn   r   )rB   r;   figsize	pdfpages_r}   meMultipage PDF with pgf	Test pagetest,pdf,multipage     r.   r   tzinfoUnknownAuthorTitleSubjectKeywordsModDateTrappedmetadatarB   )rc   rd   re   r   r   rS   r   r   r   r   r   r   datetimetimezone	timedeltar	   r   get_pagecount)	r   rp   fig1r   fig2r   r   mdr   s	            r   test_pdf_pagesr      s     K
 L$$$ID#HHU1XXV,,,ID#HHU1XX7<<
$<$<$<$<==D)($!Qx01CA1F1FGGI I I
 
B 
$	$	$	$ (DDD  ""a'''''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (s   =AF%%F),F)c                    t          j        d          }|                     dd           t          j                            d|i           t          j                    \  }}|                    t          d                     dddd	t          j
        d
ddt          j        t          j        d                              dd}t          j                            t           d| d          }t#          ||          5 }|                    |           d d d            n# 1 swxY w Y   |j                            |          5 }d |j                                        D             }d d d            n# 1 swxY w Y   d|v r|d= d|v r|d= |                    d          }	|	dt          j         k    s|dk    rd|	v sJ |dddt          j         dd	ddddd k    sJ d S )!NpikepdfSOURCE_DATE_EPOCH0rn   r   r   r   r   r   r   r   r.   r   r   Truer   pdfpages_meta_check_r}   r   c                 4    i | ]\  }}|t          |          S r   )str).0kvs      r   
<dictcomp>z1test_pdf_pages_metadata_check.<locals>.<dictcomp>  s$    :::da3q66:::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setenvrc   rd   re   r   r   rS   r   r   r   r   r   r   r   r   r	   r   Pdfopendocinfoitemspop__version__)
monkeypatchr   r   r5   axr   r   r   infoproducers
             r   test_pdf_pages_metadata_checkr      s    !),,G*C000L&1222lnnGCGGE!HH )($!Qx01CA1F1FGGI I I
 
B 7<<
$G6$G$G$GHHD	$	$	$	$ C               
		$		 ;3::ck&7&7&9&9:::; ; ; ; ; ; ; ; ; ; ; ; ; ; ; T!!#$T!!#$ xx$$HC#/CCCCj  X%9%9%9%9,L3?LLL)'*	 	 	 	 	 	 	 	s$   D##D'*D'$E88E<?E<c                 \   | dz  }t          |          5 }	 d d d            n# 1 swxY w Y   |                                rJ | dz  }t          |          5 }|                    t          j                               d d d            n# 1 swxY w Y   |                                sJ d S )Nza.pdfzb.pdf)r	   existsr   r   r/   )r4   fnr   s      r   test_multipage_keep_emptyr   !  s    
G	B	"               yy{{ 
G	B	" "CJLL!!!" " " " " " " " " " " " " " "99;;s   #'''BBBc                     t          j                    } |                     d           t          j        t
                    5  |                     t                      d           d d d            n# 1 swxY w Y   t          j                    } |                     d           |                     t                      d           d S )Nz\oopsr(   r   z
this is ok)r   r/   suptitler   raises
ValueErrorr   r   )r5   s    r   test_tex_restart_after_errorr   0  s    
*,,CLL	z	"	" - -GIIe,,,- - - - - - - - - - - - - - - *,,CLLKK		%K(((((s   $A22A69A6c                      t          j                    \  } }|                    ddgddgg           |                     t	                      ddd           d S )	Nr   r.   r;   rB   r   r(   tight)r,   r-   r   )r   r   imshowr   r   )r5   r   s     r   test_bbox_inches_tightr   <  sT    lnnGCII1v1vKK		%GKLLLLLr   c                     t                      } t          j                                        | ddd           |                     d           t          j        |           }|d         dk                                    sJ d S )Nr+   r(   T)r,   r-   transparentr   ).rB   )r   r   r/   r   r1   r2   r3   )r6   r7   s     r   test_png_transparencyr   C  sr     ))CJLLUEtLLLHHQKKK
3AfIN!!!!!!!r   c                    |                      d          5  dt          j        d<   t          j        ddd           t          j        t                      d           d d d            n# 1 swxY w Y   dd	 | j        D             v sJ d S )
NWARNINGzthis-font-does-not-existr`   r*   zhello, worldr(   r   z/Ignoring unknown font: this-font-does-not-existc                 6    g | ]}|                                 S r   )
getMessage)r   rs     r   
<listcomp>z%test_unknown_font.<locals>.<listcomp>S  s3     A0 A0 A0A0 A0 A0r   )at_levelrc   rd   r   figtextr   r   records)caplogs    r   test_unknown_fontr  M  s    		#	# - -&@]#BN+++GIIe,,,,- - - - - - - - - - - - - - - = A0 A0 &A0 A0 A0 0 0 0 0 0 0s   AA**A.1A.r   )
extensions	texsystem)rm   ru   r   c                     t          |          st          j        |dz              |t          j        d<   |                     ddd           |                    ddd           d S )Nz + pgf is requiredrn   r*   z$-1$u   $−1$)r   r   r   rc   rd   r0   )fig_testfig_refr  s      r   test_minus_signs_with_texr
  W  si     )$$ 6I 44555$-CL!MM"b&!!!LLR,-----r   c                     t          j        d          \  } }|                    g            |                    g            |                    d           |                    ddg          \  }|                    ddd	           t                      5 }|                     |d
           |	                                
                                }d d d            n# 1 swxY w Y   d}||v sJ d S )N)rB   rB   r   Fr   r.   r   rs   *   )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_onrS   set_sketch_paramsr   r   getvaluedecode)r5   r   handlefdr6   baselines         r   test_sketch_paramsr  b  s#   l6***GCMM"MM"OOEggq!fooGF
1RB???	 %bBu%%%kkmm""$$% % % % % % % % % % % % % % %H s??????s   >C!!C%(C%zunicode-mathzneeds unicode-math.styzpgf_document_font_size.pdf)r\   remove_textc                      t           j                            dddd           t          j                     t          j        g d           t          j        g d           t          j                     d S )Nru   Fz\usepackage{unicode-math})rn   ra   ro   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)rc   rd   re   r   r/   rS   legendr   r   r   test_document_font_sizer  ~  s     L"4    
 JLLLHR$    HRP    JLLLLLr   )Br   ior   r   r   numpyrQ   packaging.versionr   parse_versionr   
matplotlibrc   matplotlib.pyplotpyplotr   matplotlib.testingr   r   matplotlib.testing.exceptionsr   matplotlib.testing.comparer   matplotlib.backends.backend_pgfr	   matplotlib.testing.decoratorsr
   r   r   matplotlib.testing._markersr   r   r   r   r!   r   r'   markr-   r8   rZ   rg   _get_executable_infoversionr~   ExecutableNotFoundErrorskipifrq   r\   contextr   r   r   r   parametrizeparamr   r   r   r   r   r   r  r
  r  r  r   r   r   <module>r4     s          				      4 4 4 4 4 4            ? ? ? ? ? ? ? ? @ @ @ @ @ @ 5 5 5 5 5 5 4 4 4 4 4 4? ? ? ? ? ? ? ? ? ?           
 .-.B.BCC j *, * * * * U      : U$%Y777  87    &&.v1F1FF O
"   OOO
 ((333<OPP((///HHU%&i.5eeA7 7 7 7 7  IH QP  9UC C    C8 9U) )   )" U&'y9991 1 :9  1 9U     9UFL$6#7888FL$6#7888FL#4"5666$  
 (  (    (F 9UFL$6#7888FL$6#7888FL#4"5666$  
/ /   /d    ) ) ) M M M " "  " 0 0 0 (((&IJJU. .  KJ )(. U  6 (((1I    U/0	tTTT  UT     s   &"D	 	DD