U
    ÂmœdŒ.  ã                   @   sn  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dddg¡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/k
�rd   dZ.Y nX e e
j%j0ed ƒ d!d"�e
j% (d¡ed#gde.�r˜d$nd d%�d&d'„ ƒƒƒƒZ1e!e ej2 3d¡e
j% (d¡d(d)„ ƒƒƒƒZ4e!ej2 3d¡e
j% (d¡d*d+„ ƒƒƒZ5e!e
j% (d¡ed,gdd�d-d.„ ƒƒƒZ6e!ej2 3d¡e
j% (d¡d/d0„ ƒƒƒZ7ej2 3d¡e
j% (d¡e
j% &d1e
j8d2egd3�e
j8d4e gd3�e
j8d5e!gd3�g¡d6d7„ ƒƒƒZ9ej2 3d¡e
j% (d¡e
j% &d1e
j8d2egd3�e
j8d4e gd3�e
j8d5e!gd3�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„ ƒZ@dS )Jé    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   úZ/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/matplotlib/tests/test_backend_pgf.pyÚ<lambda>   ó    r   c                 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%   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t‚d S )N)r	   ÚAssertionError)Ú
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  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š™™™™™Ù?z//Z	lightgrayÚred)ZhatchZ	facecolorZ	edgecoloré   gš™™™™™é?éþÿÿÿÚbgÍÌÌÌÌÌì?r*   Úro)Z
markersizeu/   unicode (Ã¼, Â°, Âµ) and math ($\mu_i = x_i^2$)Úrighté   )ZhaZfontsizez*sans-serif, blue, $\frac{\sqrt{x}}{y^2}$..ú
sans-serifÚblue)ÚfamilyÚcolor)r   r+   ÚnpZlinspaceÚplotZfill_betweenÚfillr,   ZylabelZxlimZylim)Úxr   r   r   Úcreate_figure5   s&    ÿ"
 ÿ ÿrB   zpgf_xelatex.pdfÚdefault)Ústylec                  C   s    dddœ} t j | ¡ tƒ  d S )NÚserifF©úfont.familyúpgf.rcfonts)ÚmplÚrcParamsÚupdaterB   )Z
rc_xelatexr   r   r   Útest_xelatexP   s
    ÿrL   Úgsz9.50TÚucszneeds ucs.sty)Úreasonzpgf_pdflatex.pdfgffffff'@)rD   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 fontsrE   FÚpdflatexz4\usepackage[utf8x]{inputenc}\usepackage[T1]{fontenc})rG   rH   úpgf.texsystemúpgf.preamble)	r   ÚenvironÚgetÚpytestZxfailrI   rJ   rK   rB   )Úrc_pdflatexr   r   r   Útest_pdflatexb   s    
ýrW   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 ]v\}}t |¡�^ dD ]0\}}|tjd krZt|ƒsZt d|› d�¡ qZtƒ  t	d|d › d�|| d� W 5 Q R X qBd S )Nr:   é   gš™™™™™É?é
   FÚxelatex)rG   ú	font.sizeúfigure.subplot.leftúlines.markersizerH   rQ   Z	monospacegš™™™™™¹?r9   rP   zG\usepackage[utf8x]{inputenc}\usepackage[T1]{fontenc}\usepackage{sfmath})rG   r[   r\   r]   rH   rQ   rR   r   gffffff*@))Úsfmathr^   )Zutf8xrN   rR   zneeds z.styZpgf_rcupdater/   ú.pdfr   )
Ú_old_gs_versionÚ	enumeraterI   Z
rc_contextrJ   r   rU   ÚskiprB   r%   )Zrc_setsr   ÚiZrc_setZ	substringÚpkgr   r   r   Útest_rcupdatev   s4    ûúúÿre   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,rE   FrF   r/   r1   r   r2   g}Ã”%­I²Tiè  )Úsizer9   iöÿÿÿrY   )ZbinsÚrangeÚlogÚpdf©Úformat)r>   ÚrandomÚseedrI   rJ   rK   r   Úsubplotsr?   Zset_xlimZset_ylimZscatterÚhistÚnormalZ
set_xscaler   r   )r-   Zaxsr   r   r   Útest_pathclip–   s    "rq   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 )	NrE   FrF   éÿÿÿÿr/   y              D@r1   T)rI   rJ   rK   r>   Zogridr   ZpcolorZset_rasterized)ÚYÚXr   r   r   Útest_mixedmodeª   s    ru   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 )NrE   FrF   r/   r1   é   zpgf_bbox_inches.pdfÚbbox_inchesr   )r!   r   )rI   rJ   rK   r   rn   r?   rg   Útight_layoutZget_window_extentZtransformedZdpi_scale_transÚinvertedr%   )r-   Úax1Úax2Zbboxr   r   r   Útest_bbox_inches´   s    
ÿr|   ÚsystemÚlualatex)ZmarksrP   rZ   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��4}| |¡ | |¡ | |¡ | ¡ dksÞt‚W 5 Q R X d S )NrE   F)rG   rH   rQ   rv   )r4   r1   ©ZfigsizeZ	pdfpages_r_   ÚmeúMultipage PDF with pgfú	Test pageútest,pdf,multipageé°  é   r/   r   ©ÚtzinfoÚUnknown©ÚAuthorZTitleÚSubjectÚKeywordsZModDateZTrapped©Úmetadatar4   )rI   rJ   rK   r   rn   r?   rg   rx   r   r   r   r   ÚdatetimeÚtimezoneÚ	timedeltar   r   Zget_pagecountr&   )	r}   rV   Zfig1rz   Zfig2r{   r   Úmdri   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 5 Q R X |j |¡�}dd„ |j ¡ D ƒ}W 5 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Ú0rQ   rv   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>  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)rU   ZimportorskipZsetenvrI   rJ   rK   r   rn   r?   rg   r�   r�   r‘   r   r   r   r   r   r   ZPdfÚopenZdocinfoÚitemsÚpopÚ__version__r&   )
Zmonkeypatchr}   r”   r-   Úaxr’   r   ri   ÚinfoZproducerr   r   r   Útest_pdf_pages_metadata_checkì   sT    

   ÿù	
ÿÿør£   c               	   C   s^   t  ¡ } |  d¡ t t¡� | jtƒ dd� W 5 Q R X t  ¡ } |  d¡ | jtƒ dd� d S )Nz\oopsr)   rj   z
this is ok)r   r+   ZsuptitlerU   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/   r1   r4   ri   r)   Ztight)rk   Úbackendrw   )r   rn   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 ¡ sDt‚d S )NZpngr)   T)rk   r¦   Útransparentr   ).r4   )r   r   r+   r   ÚseekZimreadÚallr&   )ÚbufÚtr   r   r   Útest_png_transparency8  s
    

r­   c              	   C   sZ   |   d¡�. dtjd< t ddd¡ tjtƒ dd� W 5 Q R X dd	d
„ | jD ƒksVt‚d S )NÚWARNINGzthis-font-does-not-existrG   r*   zhello, worldr)   rj   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_levelrI   rJ   r   Zfigtextr   r   Úrecordsr&   )Zcaplogr   r   r   Útest_unknown_fontB  s    
ÿr³   ri   )Ú
extensionsÚ	texsystem)rP   rZ   r~   c                 C   s@   t |ƒst |d ¡ |tjd< |  ddd¡ | ddd¡ d S )Nz + pgf is requiredrQ   r*   z$-1$u   $âˆ’1$)r   rU   rb   rI   rJ   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 5 Q R X d}||ksŠt‚d S )N)r4   r4   r   Fr   r/   rv   rX   é*   )ÚscaleÚlengthZ
randomnessr)   rj   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   rn   Z
set_xticksZ
set_yticksZset_frame_onr?   Zset_sketch_paramsr   r   ÚgetvalueÚdecoder&   )r-   r¡   ÚhandleÚfdr«   Zbaseliner   r   r   Útest_sketch_paramsW  s    


r¾   )Ar�   Úior   r   r   Únumpyr>   Zpackaging.versionr   Úparse_versionrU   Z
matplotlibrI   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.   rB   rL   Z_get_executable_infoÚversionr`   ZExecutableNotFoundErrorZskipifrW   rD   Úcontextre   rq   ru   r|   Úparamr“   r£   r¥   r§   r­   r³   r¶   r¾   r   r   r   r   Ú<module>   s²   ý


ÿ

ÿ








ý#

ý2


	


