a
    ëÝEbp/  ã                   @   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j1�yŒ   d#Z0Y n0 e"e
jj ed$ƒ d%d�e
j ,d¡ed&gde0�rÀd'nd d(�d)d*„ ƒƒƒƒZ2e!e"ej3 4d¡e
j ,d¡d+d,„ ƒƒƒƒZ5e!ej3 4d¡e
j ,d¡d-d.„ ƒƒƒZ6e!e
j ,d¡ed/gdd�d0d1„ ƒƒƒZ7e!ej3 4d¡e
j ,d¡d2d3„ ƒƒƒZ8ej3 4d¡e
j ,d¡e
j *d4e
j9de#gd5�e
j9de"gd5�e
j9d
e!gd5�g¡d6d7„ ƒƒƒZ:ej3 4d¡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   úa/home/ja/django-apps/lartica_env/lib/python3.9/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   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%   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	lightgrayÚred)ZhatchZ	facecolorZ	edgecolor)é   r+   çš™™™™™é?r,   r+   )r(   éþÿÿÿr-   r   r(   ÚbgÍÌÌÌÌÌì?ç      à?Úror+   )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   ÚfigureÚnpZlinspaceÚplotZfill_betweenÚfillÚtextZylabelZxlimZylim)Úxr   r   r   Úcreate_figure+   s"    ÿ
ÿÿr=   zplain_text, escaped_text))zquad_sum: $\sum x_i^2$z'quad\_sum: \(\displaystyle \sum x_i^2\))úno \$splits \$ herer>   )Z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_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©úfont.familyúpgf.rcfonts)ÚmplÚrcParamsÚupdater=   )Z
rc_xelatexr   r   r   Útest_xelatexQ   s
    ÿrK   Úgsz9.50TÚucszneeds ucs.styzpgf_pdflatex.pdfgffffff'@)rC   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 fontsrD   Fr   z4\usepackage[utf8x]{inputenc}\usepackage[T1]{fontenc})rF   rG   úpgf.texsystemúpgf.preamble)	r   ÚenvironÚgetÚpytestZxfailrH   rI   rJ   r=   )Úrc_pdflatexr   r   r   Útest_pdflatexc   s    
ýrT   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 sÂ0    Y  qBd S )Nr3   é   gš™™™™™É?é
   Fr   )rF   ú	font.sizeúfigure.subplot.leftúlines.markersizerG   rN   Z	monospacegš™™™™™¹?r2   r   zG\usepackage[utf8x]{inputenc}\usepackage[T1]{fontenc}\usepackage{sfmath})rF   rW   rX   rY   rG   rN   rO   r   gffffff*@))ÚsfmathrZ   )Zutf8xrM   rO   zneeds z.styZpgf_rcupdater&   ú.pdfr   )
Ú_old_gs_versionÚ	enumeraterH   Z
rc_contextrI   r   rR   Úskipr=   r%   )Zrc_setsr   ÚiZrc_setZ	substringÚpkgr   r   r   Útest_rcupdatew   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,rD   FrE   r&   r(   r   r)   g}Ã”%­I²Tiè  )Úsizer2   iöÿÿÿrV   )ZbinsÚrangeÚlogÚpdf©Úformat)r8   ÚrandomÚseedrH   rI   rJ   r   Úsubplotsr9   Zset_xlimZset_ylimZscatterÚhistÚnormalZ
set_xscaler   r   )ÚfigZaxsr   r   r   Útest_pathclip—   s    "rn   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 )	NrD   FrE   éÿÿÿÿr&   y              D@r(   T)rH   rI   rJ   r8   Zogridr   ZpcolorZset_rasterized)ÚYÚXr   r   r   Útest_mixedmode«   s    rr   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 )NrD   FrE   r&   r(   é   zpgf_bbox_inches.pdfÚbbox_inchesr   )r!   r   )rH   rI   rJ   r   rj   r9   rc   Útight_layoutZget_window_extentZtransformedZdpi_scale_transÚinvertedr%   )rm   Úax1Úax2Zbboxr   r   r   Útest_bbox_inchesµ   s    
ÿry   Ú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��>}| |¡ | |¡ | |¡ | ¡ dksÞJ ‚W d   ƒ n1 sò0    Y  d S )NrD   F)rF   rG   rN   rs   )r+   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©Úmetadatar+   )rH   rI   rJ   r   rj   r9   rc   ru   r   r   r   r   ÚdatetimeÚtimezoneÚ	timedeltar   r   Zget_pagecount)	rz   rS   Zfig1rw   Zfig2rx   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 s®0    Y  |j |¡�$}dd„ |j ¡ D ƒ}W d   ƒ n1 sî0    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Ú0rN   rs   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 vr   ZLuaTeXzD:19700101000000ZzMatplotlib vz, https://matplotlib.orgzD:19680801000000Zz/True)z/Authorz/CreationDatez/Creatorz	/Keywordsz/ModDatez/Subjectz/Titlez/Trapped)rR   ZimportorskipZsetenvrH   rI   rJ   r   rj   r9   rc   r‰   rŠ   r‹   r   r   r   r   r   r   ZPdfÚopenZdocinfoÚitemsÚpopÚ__version__)
Zmonkeypatchrz   rŽ   rm   Ú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\oopsrA   rf   z
this is ok)r   r7   ZsuptitlerR   ZraisesÚ
ValueErrorr   r   )rm   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+   re   rA   Ztight)rg   Úbackendrt   )r   rj   Zimshowr   r   ©rm   r›   r   r   r   Útest_bbox_inches_tight2  s    r¢   c                  C   s"   t  ¡ \} }| jtƒ ddd� d S )NZpngrA   )rg   r    )r   rj   r   r   r¡   r   r   r   Útest_png9  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-existrF   r/   zhello, worldrA   rf   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>)Zat_levelrH   rI   r   Zfigtextr   r   Úrecords)Zcaplogr   r   r   Útest_unknown_fontA  s    
.ÿr©   re   )Ú
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 requiredrN   r/   z$-1$u   $âˆ’1$)r   rR   r^   rH   rI   r;   )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   ƒ n1 s„0    Y  d}||v sžJ ‚d S )N)r+   r+   r{   Fr   r&   rs   rU   é*   )ÚscaleÚlengthZ
randomnessrA   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_onr9   Zset_sketch_paramsr   r   ÚgetvalueÚdecode)rm   r›   ÚhandleÚfdÚbufZbaseliner   r   r   Útest_sketch_paramsV  s    


*rµ   )Br‰   Úior   r   r   Únumpyr8   Zpackaging.versionr   Úparse_versionrR   Z
matplotlibrH   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%   r=   Zparametrizer@   r    rK   Z_get_executable_infoÚversionr\   ZExecutableNotFoundErrorrT   rC   Úcontextra   rn   rr   ry   Úparamr�   r�   rŸ   r¢   r£   r©   r¬   rµ   r   r   r   r   Ú<module>   s¼   ÿÿÿþ

ÿ

ÿ








ý#

ý2


	


