a
    s=ic.                     @   sj  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g d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/y`   dZ.Y n0 e e
j%j0ed dd e
j%(ded!gde.rd"nd d#d$d% Z1e!e ej23de
j%(dd&d' Z4e!ej23de
j%(dd(d) Z5e!e
j%(ded*gddd+d, Z6e!ej23de
j%(dd-d. Z7ej23de
j%(de
j%&d/e
j8d0egd1e
j8d2e gd1e
j8d3e!gd1gd4d5 Z9ej23de
j%(de
j%&d/e
j8d0egd1e
j8d2e gd1e
j8d3e!gd1gd6d7 Z:e!d8d9 Z;e!d:d; Z<e!ed<d= Z=e!d>d? Z>ed@gdAe
j%&dBdCe
j%(ddDdE Z?e
j%(ddFdG Z@dS )H    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   r/home/droni/.local/share/virtualenvs/DPS-5Je3_V2c/lib/python3.9/site-packages/matplotlib/tests/test_backend_pgf.py<lambda>       r   c                 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%   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J d S )N)r	   )
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 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)   r3   皙?r4   r3   )r0   r5   r   r0   bg?r)   ror3   )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 ]\}}t|h dD ]0\}}|tjd v rZt|sZtd| d qZt  t	d|d  d|| d W d    qB1 s0    Y  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.   r0   r   r1   g}Ô%ITi  )sizer9   irY   )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@r0   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.   r0      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>}|| || || | dksJ W d    n1 s0    Y  d S )NrE   F)rG   rH   rQ   rv   )r3   r0   ZfigsizeZ	pdfpages_r_   meMultipage PDF with pgf	Test pagetest,pdf,multipage     r.   r   tzinfoUnknownAuthorZTitleSubjectKeywordsZModDateZTrappedmetadatar3   )rI   rJ   rK   r   rn   r?   rg   rx   r   r   r   r   datetimetimezone	timedeltar   r   Zget_pagecount)	r}   rV   Zfig1rz   Zfig2r{   r   mdri   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 s0    Y  |j|$}dd |j D }W d    n1 s0    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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>  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)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__)
Zmonkeypatchr}   r   r,   axr   r   ri   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\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.   r0   r3   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 sDJ d S )NZpngr(   T)rk   r   transparentr   ).r3   )r   r   r*   r   seekZimreadall)buftr   r   r   test_png_transparency8  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-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   records)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 d    n1 s0    Y  d}||v sJ d S )N)r3   r3   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decode)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


	


