o
    g)                     @   s6  d dl Z d dlmZ d dlZd dlZd dl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*eejjed  d!dej)ded"gddd#d$ Z+eeej,dej)dd%d& Z-eej,dej)dd'd( Z.eej)ded)gddd*d+ Z/eej,dej)dd,d- Z0ej,dej)dej'd.ej1de gd/ej1degd/ej1d	egd/gd0d1 Z2ej,dej)dej'd.ej1de gd/ej1degd/ej1d	egd/gd2d3 Z3ed4d5 Z4ed6d7 Z5ee$d8d9 Z6ed:d; Z7ed<gd=ej'd>d?ej)dd@dA Z8dS )B    N)BytesIO)_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   _/home/ubuntu/cloudmapper/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.   皙?r/   r.   )r'   r0   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"   
rH   zplain_text, escaped_text))zquad_sum: $\sum x_i^2$z'quad\_sum: \(\displaystyle \sum x_i^2\))no \$splits \$ hererI   )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_texificationD   s   rM   pgfzpgf_xelatex.pdfdefault)stylec                  C   s    ddd} t j|  t  d S )NserifFfont.familypgf.rcfonts)mplrcParamsupdaterH   )
rc_xelatexr   r   r   test_xelatexP   s
   
rY   ucszneeds ucs.styzpgf_pdflatex.pdfc                  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 fontsrQ   Fr   z4\usepackage[utf8x]{inputenc}\usepackage[T1]{fontenc})rS   rT   pgf.texsystempgf.preamble)	r   environgetpytestxfailrU   rV   rW   rH   )rc_pdflatexr   r   r   test_pdflatex[   s   

rc   c               	   C   s   dddddddddd	d
ddddg} ddg}t | D ]C\}}t|2 dD ]\}}|tjd v r?t|s?td| d q't  td|d  || d W d    n1 sYw   Y  qd S )Nr9      g?
   Fr   )rS   	font.sizefigure.subplot.leftlines.markersizerT   r\   	monospaceg?r6   r   zG\usepackage[utf8x]{inputenc}\usepackage[T1]{fontenc}\usepackage{sfmath})rS   rf   rg   rh   rT   r\   r]      r   ))sfmathrk   )utf8xrZ   r]   zneeds z.styzpgf_rcupdate%d.pdfr%   r   )		enumeraterU   
rc_contextrV   r   r`   skiprH   r$   )rc_setsr   irc_set	substringpkgr   r   r   test_rcupdaten   s<   ru   c                   C   sR   t jddd tddgddg tdd tdd tjt dd	 d S )
NrQ   FrR   r(   g}Ô%ITr   r%   pdfformat)	rU   rV   rW   r   r@   rE   rF   r   r   r   r   r   r   test_pathclip   s
   ry   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 )	NrQ   FrR   r%   y              D@r'   T)rU   rV   rW   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 )NrQ   FrR   r%   r'      zpgf_bbox_inches.pdfbbox_inchesr   )r    r   )rU   rV   rW   r   subplotsr@   rangetight_layoutget_window_extenttransformeddpi_scale_transinvertedr$   )fig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 )NrQ   F)rS   rT   r\   r   )r.   r'   )figsize	pdfpages_.pdfmeMultipage PDF with pgf	Test pagetest,pdf,multipage     r%   r   tzinfoUnknownAuthorTitleSubjectKeywordsModDateTrappedmetadatar.   )rU   rV   rW   r   r   r@   r   r   r   r   r   r   datetimetimezone	timedeltar   r   get_pagecount)	r   rb   fig1r   fig2r   r   mdrv   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_r   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)r`   importorskipsetenvrU   rV   rW   r   r   r@   r   r   r   r   r   r   r   r   r   r   Pdfopendocinfoitemspop__version__)
monkeypatchr   r   r   axr   r   rv   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\oopsrN   rw   z
this is ok)r   r=   suptitler`   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.   rv   rN   tight)rx   backendr   )r   r   imshowr   r   r   r   r   r   r   test_bbox_inches_tight!  s   r   c                  C   s"   t  \} }| jt ddd d S )NpngrN   )rx   r   )r   r   r   r   r   r   r   r   test_png(  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-existrS   r2   zhello, worldrN   rw   z/Ignoring unknown font: this-font-does-not-existc                 S   s   g | ]}|  qS r   )
getMessage)r   rr   r   r   
<listcomp>6  s    z%test_unknown_font.<locals>.<listcomp>)at_levelrU   rV   r   figtextr   r   records)caplogr   r   r   test_unknown_font0  s   
r   rv   )
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\   r2   z$-1$u   $−1$)r   r`   ro   rU   rV   rC   )fig_testfig_refr   r   r   r   test_minus_signs_with_tex:  s
   
r   )9r   ior   r   r   numpyr>   r`   
matplotlibrU   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$   rH   parametrizerM   r   rY   rc   rP   ru   ry   r   r   paramr   r   r   r   r   r   r   r   r   r   r   <module>   s    






	





#
2



	
