B
    0ufp/                 @   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&kddZ'i d fddZ(dd Z)e
j*ddddddgdd Z+e!e
j,ded gd!d"d#d$ Z-ye.d%j/e	d&k Z0W n ej1k
r   d'Z0Y nX e"e
jj ed( d)de
j,ded*gd!e0rd+nd d,d-d. Z2e!e"ej34d!e
j,dd/d0 Z5e!ej34d!e
j,dd1d2 Z6e!e
j,ded3gd!d"d4d5 Z7e!ej34d!e
j,dd6d7 Z8ej34d!e
j,de
j*d8e
j9de#gd9e
j9de"gd9e
j9d
e!gd9gd:d; Z:ej34d!e
j,de
j*d8e
j9de#gd9e
j9de"gd9e
j9d
e!gd9gd<d= Z;e!d>d? Z<e!d@dA Z=e!e'dBdC Z>e!dDdE Z?edFgdGe
j*dHdIe
j,ddJdK Z@e
j,ddLdM ZAdS )N    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   c/home/ankuromar296_gmail_com/myenv/lib/python3.7/site-packages/matplotlib/tests/test_backend_pgf.py<lambda>       r   xelatexzxelatex + pgf is required)reasonpdflatexzpdflatex + pgf is requiredlualatexzlualatex + pgf is requiredZepsz*This test needs a ghostscript installationc             C   sb   t jt| }tj|f| t jtd|  }tt jt| | t	|||d}|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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 dddddgdddddg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        g?z//Z	lightgrayred)ZhatchZ	facecolorZ	edgecolor   g?bg?g      ?ro)Z
markersizeu/   unicode (ü, °, µ) and math ($\mu_i = x_i^2$)right   )ZhaZfontsizez*sans-serif, blue, $\frac{\sqrt{x}}{y^2}$..z
sans-serifblue)familycolor)r   figurenpZlinspaceplotZfill_betweenfilltextZylabelZxlimZylim)xr   r   r   create_figure+   s    "


r8   zplain_text, escaped_text)zquad_sum: $\sum x_i^2$z'quad\_sum: \(\displaystyle \sum x_i^2\))zno \$splits \$ herezno \$splits \$ here)Zwith_underscoreszwith\_underscores)z% not a commentz\% not a comment)z^notz\^notc             C   s   t | |kstd S )N)r	   AssertionError)
plain_textZescaped_textr   r   r   test_common_texificationE   s    r;   pgfzpgf_xelatex.pdfdefault)stylec              C   s    ddd} t j|  t  d S )NserifF)zfont.familyzpgf.rcfonts)mplrcParamsupdater8   )Z
rc_xelatexr   r   r   test_xelatexQ   s    rC   gsz9.50Tucszneeds ucs.styzpgf_pdflatex.pdfgffffff'@)r>   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 fontsr?   Fr   z4\usepackage[utf8x]{inputenc}\usepackage[T1]{fontenc})zfont.familyzpgf.rcfontszpgf.texsystemzpgf.preamble)	r   environgetpytestZxfailr@   rA   rB   r8   )rc_pdflatexr   r   r   test_pdflatexc   s    
rJ   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}xt| D ]z\}}t|b x8dD ]0\}}|tjd kr^t|s^td| d q^W t  t	d|d  d|| d W d Q R X qDW d S )Nz
sans-serif   g?
   Fr   )zfont.familyz	font.sizezfigure.subplot.leftzlines.markersizezpgf.rcfontszpgf.texsystemZ	monospaceg?r.   r   zG\usepackage[utf8x]{inputenc}\usepackage[T1]{fontenc}\usepackage{sfmath})zfont.familyz	font.sizezfigure.subplot.leftzlines.markersizezpgf.rcfontszpgf.texsystemzpgf.preambler   gffffff*@))sfmathrM   )Zutf8xrE   zpgf.preamblezneeds z.styZpgf_rcupdater%   z.pdf)r   )
_old_gs_version	enumerater@   Z
rc_contextrA   r   rH   skipr8   r$   )Zrc_setsr   iZrc_setZ	substringpkgr   r   r   test_rcupdatew   s,    
rS   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,r?   F)zfont.familyzpgf.rcfontsr%   r'   r   g        g}Ô%ITi  )sizer.   irL   )Zbinsrangelogpdf)format)r3   randomseedr@   rA   rB   r   subplotsr4   Zset_xlimZset_ylimZscatterhistnormalZ
set_xscaler   r   )figZ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 )	Nr?   F)zfont.familyzpgf.rcfontsr%   y              D@r'   T)r@   rA   rB   r3   Zogridr   ZpcolorZset_rasterized)YXr   r   r   test_mixedmode   s    rc   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 )Nr?   F)zfont.familyzpgf.rcfontsr%   r'      zpgf_bbox_inches.pdfbbox_inchesr   )r    r   )r@   rA   rB   r   r[   r4   rU   tight_layoutZget_window_extentZtransformedZdpi_scale_transinvertedr$   )r^   ax1ax2Zbboxr   r   r   test_bbox_inches   s    
rj   system)Z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4}|| || || | dkstW d Q R X d S )Nr?   F)zfont.familyzpgf.rcfontszpgf.texsystemrd   )r)   r'   )figsizeZ	pdfpages_z.pdfmezMultipage PDF with pgfz	Test pageztest,pdf,multipagei     r%   r   )tzinfoUnknown)AuthorTitleSubjectKeywordsModDateTrapped)metadatar)   )r@   rA   rB   r   r[   r4   rU   rf   r   r   r   r   datetimetimezone	timedeltar   r   Zget_pagecountr9   )	rk   rI   Zfig1rh   Zfig2ri   r   mdrW   r   r   r   test_pdf_pages   s.    	


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 Q R X |j|}dd |j D }W d Q R X d|kr|d= d|kr|d= |d}	|	dtj ks |dkrd|	ks t|dddtj dd	dddd d!ksJtd S )"NpikepdfSOURCE_DATE_EPOCH0zpgf.texsystemrd   rm   zMultipage PDF with pgfz	Test pageztest,pdf,multipagei  rn   r%   r   )ro   True)rq   rr   rs   rt   ru   rv   Zpdfpages_meta_check_z.pdf)rw   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   ZLuaTeXzD:19700101000000ZzMatplotlib vz, https://matplotlib.orgzD:19680801000000Zz/True)z/Authorz/CreationDatez/Creatorz	/Keywordsz/ModDatez/Subjectz/Titlez/Trapped)rH   ZimportorskipZsetenvr@   rA   rB   r   r[   r4   rU   rx   ry   rz   r   r   r   r   r   r   ZPdfopenZdocinfoitemspop__version__r9   )
Zmonkeypatchrk   r}   r^   axr{   r   rW   infoZproducerr   r   r   test_pdf_pages_metadata_check   sB    


r   c           	   C   s^   t  } | d tt | jt dd W d Q R X t  } | d | jt dd d S )Nz\oopsr<   )rX   z
this is ok)r   r2   ZsuptitlerH   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'   r)   rW   r<   Ztight)rX   backendre   )r   r[   Zimshowr   r   )r^   r   r   r   r   test_bbox_inches_tight2  s    r   c              C   s"   t  \} }| jt ddd d S )NZpngr<   )rX   r   )r   r[   r   r   )r^   r   r   r   r   test_png9  s    r   c          	   C   sZ   |  d. dtjd< tddd tjt dd W d Q R X dd	d
 | jD ksVtd S )NWARNINGzthis-font-does-not-existzfont.familyg      ?zhello, worldr<   )rX   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_levelr@   rA   r   Zfigtextr   r   recordsr9   )Zcaplogr   r   r   test_unknown_fontA  s    
r   rW   )
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 requiredzpgf.texsystemg      ?z$-1$u   $−1$)r   rH   rP   r@   rA   r6   )Zfig_testZ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 Q R X d}||kstd S )N)r)   r)   )rl   Fr   r%   rd   rK   *   )scalelengthZ
randomnessr<   )rX   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[   Z
set_xticksZ
set_yticksZset_frame_onr4   Zset_sketch_paramsr   r   getvaluedecoder9   )r^   r   handlefdbufZbaseliner   r   r   test_sketch_paramsV  s    


r   )Brx   ior   r   r   numpyr3   Zpackaging.versionr   parse_versionrH   Z
matplotlibr@   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   r   r   markZskipifZneeds_xelatexZneeds_pdflatexZneeds_lualatextestingcompare	converterZneeds_ghostscriptr$   r8   Zparametrizer;   r   rC   Z_get_executable_infoversionrN   ZExecutableNotFoundErrorrJ   r>   contextrS   r_   rc   rj   paramr|   r   r   r   r   r   r   r   r   r   r   r   <module>   s   


 





 %

 4

	