o
    tBhp/                     @   s  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 edd	 \ZZe
jj ed
 ddZ!e
jj ed ddZ"e
jj ed ddZ#e
jj dej$j%j&vddZ'i d fddZ(dd Z)e
j*dg ddd Z+e!e
j,dedgdddd  Z-ze.d!j/e	d"k Z0W n ej1y   d#Z0Y nw e"e
jj ed$ d%de
j,ded&gde0rd'nd d(d)d* Z2e!e"ej34de
j,dd+d, Z5e!ej34de
j,dd-d. Z6e!e
j,ded/gddd0d1 Z7e!ej34de
j,dd2d3 Z8ej34de
j,de
j*d4e
j9de#gd5e
j9de"gd5e
j9d
e!gd5gd6d7 Z:ej34de
j,de
j*d4e
j9de#gd5e
j9de"gd5e
j9d
e!gd5gd8d9 Z;e!d:d; Z<e!d<d= Z=e!e'd>d? Z>e!d@dA Z?edBgdCe
j*dDdEe
j,ddFdG Z@e
j,ddHdI ZAdS )J    N)BytesIO)parse)_has_tex_package_check_for_pgf)compare_imagesImageComparisonFailure)PdfPagescommon_texification)_image_directoriescheck_figures_equalimage_comparisonc                   C   s   dS )Nz
dummy func r   r   r   x/var/www/html/riverr-enterprise-integrations-main/venv/lib/python3.10/site-packages/matplotlib/tests/test_backend_pgf.py<lambda>   s    r   xelatexzxelatex + pgf is required)reasonpdflatexzpdflatex + pgf is requiredlualatexzlualatex + pgf is requiredepsz*This test needs a ghostscript installationc                 C   sf   t jt| }tj|fi | t jtd|  }tt jt| | t	|||d}|r1t
|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%   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//	lightgrayred)hatch	facecolor	edgecolor)   r/   皙?r0   r/   )r(   r1   r   r(   bg?      ?ror/   )
markersizeu/   unicode (ü, °, µ) and math ($\mu_i = x_i^2$)right   )hafontsizez*sans-serif, blue, $\frac{\sqrt{x}}{y^2}$..
sans-serifblue)familycolor)r   figurenplinspaceplotfill_betweenfilltextylabelxlimylim)xr   r   r   create_figure+   s"   
rI   zplain_text, escaped_text))zquad_sum: $\sum x_i^2$z'quad\_sum: \(\displaystyle \sum x_i^2\))no \$splits \$ hererJ   )with_underscoreszwith\_underscores)z% not a commentz\% not a comment)z^notz\^notc                 C   s   t | |ksJ d S )N)r	   )
plain_textescaped_textr   r   r   test_common_texificationE   s   rN   pgfzpgf_xelatex.pdfdefault)stylec                  C   s    ddd} t j|  t  d S )NserifFfont.familypgf.rcfonts)mplrcParamsupdaterI   )
rc_xelatexr   r   r   test_xelatexQ   s
   
rZ   gsz9.50Tucszneeds ucs.styzpgf_pdflatex.pdfgffffff'@)rQ   r   c                  C   s:   t jdrtd ddddd} tj|  t  d S )NAPPVEYORzBpdflatex test does not work on appveyor due to missing LaTeX fontsrR   Fr   z4\usepackage[utf8x]{inputenc}\usepackage[T1]{fontenc})rT   rU   pgf.texsystempgf.preamble)	r   environgetpytestxfailrV   rW   rX   rI   )rc_pdflatexr   r   r   test_pdflatexc   s   

re   c               	   C   s   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 ]E\}}t|4 dD ]\}}|tjd v rEt|sEtd| d q-t  t	d|d  d|| d W d    n1 saw   Y  q!d S )Nr:      g?
   Fr   )rT   	font.sizefigure.subplot.leftlines.markersizerU   r^   	monospaceg?r7   r   zG\usepackage[utf8x]{inputenc}\usepackage[T1]{fontenc}\usepackage{sfmath})rT   rh   ri   rj   rU   r^   r_   r   gffffff*@))sfmathrl   )utf8xr\   r_   zneeds z.stypgf_rcupdater&   .pdfr   )
_old_gs_version	enumeraterV   
rc_contextrW   r   rb   skiprI   r%   )rc_setsr   irc_set	substringpkgr   r   r   test_rcupdatew   s<   ry   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,rR   FrS   r&   r(   r   r)   g}Ô%ITi  )sizer7   irg   )binsrangelogpdfformat)r?   randomseedrV   rW   rX   r   subplotsrA   set_xlimset_ylimscatterhistnormal
set_xscaler   r   )figaxsr   r   r   test_pathclip   s   "r   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 )	NrR   FrS   r&   y              D@r(   T)rV   rW   rX   r?   ogridr   pcolorset_rasterized)YXr   r   r   test_mixedmode   s    r   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 )NrR   FrS   r&   r(      zpgf_bbox_inches.pdfbbox_inchesr   )r!   r   )rV   rW   rX   r   r   rA   r|   tight_layoutget_window_extenttransformeddpi_scale_transinvertedr%   )r   ax1ax2bboxr   r   r   test_bbox_inches   s   

r   system)marksc           	      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soJ W d    d S 1 szw   Y  d S )NrR   F)rT   rU   r^   r   )r/   r(   figsize	pdfpages_ro   meMultipage PDF with pgf	Test pagetest,pdf,multipage     r&   r   tzinfoUnknownAuthorTitleSubjectKeywordsModDateTrappedmetadatar/   )rV   rW   rX   r   r   rA   r|   r   r   r   r   r   datetimetimezone	timedeltar   r   get_pagecount)	r   rd   fig1r   fig2r   r   mdr~   r   r   r   test_pdf_pages   s6   	



"r   c           
      C   sn  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 sWw   Y  |j|}dd |j D }W d    n1 sww   Y  d|v r|d= d|v r|d= |d}	|	dtj ks|dkrd|	v sJ |dddtj dd	dddd d!ksJ d S )"NpikepdfSOURCE_DATE_EPOCH0r^   r   r   r   r   r   r   r   r&   r   r   Truer   pdfpages_meta_check_ro   r   c                 S   s   i | ]	\}}|t |qS r   )str).0kvr   r   r   
<dictcomp>  s    z1test_pdf_pages_metadata_check.<locals>.<dictcomp>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)rb   importorskipsetenvrV   rW   rX   r   r   rA   r|   r   r   r   r   r   r   r   r   r   Pdfopendocinfoitemspop__version__)
monkeypatchr   r   r   axr   r   r~   infoproducerr   r   r   test_pdf_pages_metadata_check   sL   

	
r   c                  C   sr   t  } | d tt | jt dd W d    n1 s!w   Y  t  } | d | jt dd d S )Nz\oopsrO   r   z
this is ok)r   r>   suptitlerb   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(   r/   r~   rO   tight)r   backendr   )r   r   imshowr   r   r   r   r   r   r   test_bbox_inches_tight2  s   r   c                  C   s"   t  \} }| jt ddd d S )NpngrO   )r   r   )r   r   r   r   r   r   r   r   test_png9  s   r   c                 C   sn   |  d dtjd< tddd tjt dd W d    n1 s$w   Y  dd	d
 | jD v s5J d S )NWARNINGzthis-font-does-not-existrT   r3   zhello, worldrO   r   z/Ignoring unknown font: this-font-does-not-existc                 S   s   g | ]}|  qS r   )
getMessage)r   rr   r   r   
<listcomp>G  s    z%test_unknown_font.<locals>.<listcomp>)at_levelrV   rW   r   figtextr   r   records)caplogr   r   r   test_unknown_fontA  s   
r   r~   )
extensions	texsystem)r   r   r   c                 C   s@   t |st|d  |tjd< | ddd |ddd d S )Nz + pgf is requiredr^   r3   z$-1$u   $−1$)r   rb   rs   rV   rW   rD   )fig_testfig_refr   r   r   r   test_minus_signs_with_texK  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 sBw   Y  d}||v sOJ d S )N)r/   r/   r   Fr   r&   r   rf   *   )scalelength
randomnessrO   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_onrA   set_sketch_paramsr   r   getvaluedecode)r   r   handlefdbufbaseliner   r   r   test_sketch_paramsV  s   


r   )Br   ior   r   r   numpyr?   packaging.versionr   parse_versionrb   
matplotlibrV   matplotlib.pyplotpyplotr   matplotlib.testingr   r   matplotlib.testing.comparer   r   matplotlib.backends.backend_pgfr   r	   matplotlib.testing.decoratorsr
   r   r   r   r   markskipifneeds_xelatexneeds_pdflatexneeds_lualatextestingcompare	converterneeds_ghostscriptr%   rI   parametrizerN   r   rZ   _get_executable_infoversionrp   ExecutableNotFoundErrorre   rQ   contextry   r   r   r   paramr   r   r   r   r   r   r   r   r   r   r   r   <module>   s    













#
2



	

