a
    
d.                     @   sj  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mZ d dlmZmZ d dlmZmZmZ d dlmZmZm Z m!Z! ed	d
 \Z"Z#i d fddZ$e
j%&dg ddd Z'e!e
j%(ddd Z)dd Z*e!e
j%(dedgdddd Z+ze,dj-e	dk Z.W n ej/y`   dZ.Y n0 e e
j%j0ed dd e
j%(ded!gde.rd"nd d#d$d% Z1e!e ej23de
j%(dd&d' Z4e!ej23de
j%(dd(d) Z5e!e
j%(ded*gddd+d, Z6e!ej23de
j%(dd-d. Z7ej23de
j%(de
j%&d/e
j8d0egd1e
j8d2e gd1e
j8d3e!gd1gd4d5 Z9ej23de
j%(de
j%&d/e
j8d0egd1e
j8d2e gd1e
j8d3e!gd1gd6d7 Z:e!d8d9 Z;e!d:d; Z<e!ed<d= Z=e!d>d? Z>ed@gdAe
j%&dBdCe
j%(ddDdE Z?e
j%(ddFdG Z@dS )H    N)BytesIO)parse)_has_tex_package_check_for_pgf)compare_imagesImageComparisonFailure)PdfPages_tex_escape)_image_directoriescheck_figures_equalimage_comparison)needs_ghostscriptneeds_pgf_lualatexneeds_pgf_pdflatexneeds_pgf_xelatexc                   C   s   dS )Nz
dummy func r   r   r   j/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/matplotlib/tests/test_backend_pgf.py<lambda>       r   c                 C   sf   t jt| }tj|fi | t jtd|  }tt jt| | t	|||d}|rbt
|d S )Nzexpected_%stol)ospathjoin
result_dirpltsavefigshutilcopyfilebaseline_dirr   r   )fnamesavefig_kwargsr   actualexpectederrr   r   r   compare_figure   s    r%   zplain_text, escaped_text))zquad_sum: $\sum x_i^2$z&quad_sum: \(\displaystyle \sum x_i^2\))z% not a commentz\% not a comment)z^notz\^notc                 C   s   t | |ksJ d S )N)r	   )Z
plain_textZescaped_textr   r   r   test_tex_escape$   s    r&   pgfc                 C   s(   t  }|ddd || d  d S )N      ?z
_^ $a_b^c$ztest.pdf)r   figuretextr   )Ztmp_pathfigr   r   r   test_tex_special_chars-   s    r,   c                  C   s   t   tddd} t | | d d t | d| d  d t jddgddgd	d
dd t g dg dd t jdgdgddd t jdddddd t jdddd t 	dd t 
dd d S )Nr            zb-zg>        g?z//Z	lightgrayZred)ZhatchZ	facecolorZ	edgecolor)   r1   皙?r2   r1   )r/   r3   r   r/   bg?r(   ror1   )Z
markersizeu/   unicode (ü, °, §) and math ($\mu_i = x_i^2$)right   )ZhaZfontsizez*sans-serif, blue, $\frac{\sqrt{x}}{y^2}$..
sans-serifZblue)familycolor)r   r)   npZlinspaceplotZfill_betweenfillr*   ZylabelZxlimZylim)xr   r   r   create_figure5   s"    
r?   zpgf_xelatex.pdfdefault)stylec                  C   s    ddd} t j|  t  d S )NserifFfont.familypgf.rcfonts)mplrcParamsupdater?   )Z
rc_xelatexr   r   r   test_xelatexP   s
    rI   Zgsz9.50Tucszneeds ucs.sty)reasonzpgf_pdflatex.pdfgffffff'@)rA   r   c                  C   s:   t jdrtd ddddd} tj|  t  d S )NZAPPVEYORzBpdflatex test does not work on appveyor due to missing LaTeX fontsrB   Fpdflatexz4\usepackage[utf8x]{inputenc}\usepackage[T1]{fontenc})rD   rE   pgf.texsystempgf.preamble)	r   environgetpytestZxfailrF   rG   rH   r?   )rc_pdflatexr   r   r   test_pdflatexb   s    
rS   c               	   C   s   dddddddddd	d
ddddg} t r2ddgnddg}t| D ]\}}t|h dD ]0\}}|tjd v rZt|sZtd| d qZt  t	d|d  d|| d W d    qB1 s0    Y  qBd S )Nr8      g?
   Fxelatex)rD   	font.sizefigure.subplot.leftlines.markersizerE   rM   Z	monospaceg?r7   rL   zG\usepackage[utf8x]{inputenc}\usepackage[T1]{fontenc}\usepackage{sfmath})rD   rW   rX   rY   rE   rM   rN   r   gffffff*@))sfmathrZ   )Zutf8xrJ   rN   zneeds z.styZpgf_rcupdater-   .pdfr   )
_old_gs_version	enumeraterF   Z
rc_contextrG   r   rQ   skipr?   r%   )Zrc_setsr   iZrc_setZ	substringpkgr   r   r   test_rcupdatev   s4    ra   c                  C   s   t jd tjddd tdd\} }|d dd	gdd	g |d 	dd |d 
dd |d ddgddg |d jt jjd
ddddgd |d d | jt dd d S )Ni!N,rB   FrC   r-   r/   r   r0   g}Ô%ITi  )sizer7   irU   )Zbinsrangelogpdfformat)r;   randomseedrF   rG   rH   r   subplotsr<   Zset_xlimZset_ylimZscatterhistnormalZ
set_xscaler   r   )r+   Zaxsr   r   r   test_pathclip   s    "rm   zpgf_mixedmode.pdfc                  C   sP   t jddd tjddddddf \} }t|d | d  d d S )	NrB   FrC   r-   y              D@r/   T)rF   rG   rH   r;   Zogridr   ZpcolorZset_rasterized)YXr   r   r   test_mixedmode   s    rq   c                  C   st   t jddd tdd\} \}}|td |td t  | 	| j
 }tdd|id	d
 d S )NrB   FrC   r-   r/      zpgf_bbox_inches.pdfbbox_inchesr   )r!   r   )rF   rG   rH   r   rj   r<   rc   tight_layoutZget_window_extentZtransformedZdpi_scale_transinvertedr%   )r+   ax1ax2Zbboxr   r   r   test_bbox_inches   s    
rx   systemlualatex)ZmarksrL   rV   c           	      C   s   dd| d}t j| t \}}|td |  tjdd\}}|td |  tj	
td|  d}d	d
ddtjdddttdddd}t||d>}|| || || | dksJ W d    n1 s0    Y  d S )NrB   F)rD   rE   rM   rr   )r1   r/   ZfigsizeZ	pdfpages_r[   meMultipage PDF with pgf	Test pagetest,pdf,multipage     r-   r   tzinfoUnknownZAuthorZTitleSubjectZKeywordsZModDateZTrappedmetadatar1   )rF   rG   rH   r   rj   r<   rc   rt   r   r   r   r   datetimetimezone	timedeltar   r   Zget_pagecount)	ry   rR   Zfig1rv   Zfig2rw   r   mdre   r   r   r   test_pdf_pages   s4    	



r   c           
      C   sz  t d}| dd tjd|i t \}}|t	d dddd	t
j
d
ddt
t
dddd}tjtd| d}t||d}|| W d    n1 s0    Y  |j|$}dd |j D }W d    n1 s0    Y  d|v r|d= d|v r|d= |d}	|	dtj ksL|dkrHd|	v sLJ |dddtj dd	dddd d!ksvJ d S )"NpikepdfSOURCE_DATE_EPOCH0rM   rr   r|   r}   r~   r   r   r   r-   r   r   Truer   Zpdfpages_meta_check_r[   r   c                 S   s   i | ]\}}|t |qS r   )str).0kvr   r   r   
<dictcomp>  r   z1test_pdf_pages_metadata_check.<locals>.<dictcomp>z/PTEX.FullBannerz/PTEX.Fullbannerz	/ProducerzMatplotlib pgf backend vrz   ZLuaTeXzD:19700101000000ZzMatplotlib vz, https://matplotlib.orgzD:19680801000000Zz/True)z/Authorz/CreationDatez/Creatorz	/Keywordsz/ModDatez/Subjectz/Titlez/Trapped)rQ   ZimportorskipZsetenvrF   rG   rH   r   rj   r<   rc   r   r   r   r   r   r   r   r   r   ZPdfopenZdocinfoitemspop__version__)
Zmonkeypatchry   r   r+   axr   r   re   infoZproducerr   r   r   test_pdf_pages_metadata_check   sN    

	(2


r   c                  C   sr   t  } | d tt  | jt dd W d    n1 sB0    Y  t  } | d | jt dd d S )Nz\oopsr'   rf   z
this is ok)r   r)   ZsuptitlerQ   Zraises
ValueErrorr   r   )r+   r   r   r   test_tex_restart_after_error%  s    
.
r   c                  C   s:   t  \} }|ddgddgg | jt dddd d S )	Nr   r-   r/   r1   re   r'   Ztight)rg   backendrs   )r   rj   Zimshowr   r   )r+   r   r   r   r   test_bbox_inches_tight1  s    r   c                  C   sH   t  } t j| dddd | d t| }|d dk sDJ d S )NZpngr'   T)rg   r   Ztransparentr   ).r1   )r   r   r)   r   seekZimreadall)buftr   r   r   test_png_transparency8  s
    

r   c                 C   sn   |  d8 dtjd< tddd tjt dd W d    n1 sH0    Y  dd	d
 | jD v sjJ d S )NWARNINGzthis-font-does-not-existrD   r(   zhello, worldr'   rf   z/Ignoring unknown font: this-font-does-not-existc                 S   s   g | ]}|  qS r   )
getMessage)r   rr   r   r   
<listcomp>H  s   z%test_unknown_font.<locals>.<listcomp>)Zat_levelrF   rG   r   Zfigtextr   r   records)Zcaplogr   r   r   test_unknown_fontB  s    
.r   re   )
extensions	texsystem)rL   rV   rz   c                 C   s@   t |st|d  |tjd< | ddd |ddd d S )Nz + pgf is requiredrM   r(   z$-1$u   $−1$)r   rQ   r^   rF   rG   r*   )Zfig_testZfig_refr   r   r   r   test_minus_signs_with_texL  s
    
r   c                  C   s   t jdd\} }|g  |g  |d |ddg\}|jdddd	 t *}| j|d
d |	 
 }W d    n1 s0    Y  d}||v sJ d S )N)r1   r1   r{   Fr   r-   rr   rT   *   )ZscalelengthZ
randomnessr'   rf   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   rj   Z
set_xticksZ
set_yticksZset_frame_onr<   Zset_sketch_paramsr   r   getvaluedecode)r+   r   handlefdr   Zbaseliner   r   r   test_sketch_paramsW  s    


*r   )Ar   ior   r   r   numpyr;   Zpackaging.versionr   parse_versionrQ   Z
matplotlibrF   Zmatplotlib.pyplotZpyplotr   Zmatplotlib.testingr   r   Zmatplotlib.testing.comparer   r   Zmatplotlib.backends.backend_pgfr   r	   Zmatplotlib.testing.decoratorsr
   r   r   Zmatplotlib.testing._markersr   r   r   r   r   r   r%   markZparametrizer&   r   r,   r?   rI   Z_get_executable_infoversionr\   ZExecutableNotFoundErrorZskipifrS   rA   contextra   rm   rq   rx   paramr   r   r   r   r   r   r   r   r   r   r   r   <module>   s   













#

2


	


