o
    Gf                     @   s  d dl m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 d dlmZmZ d dlmZ d dlmZ eZedgd	d
gdddd Ze dd Ze dd Zdd Zedgdd Zejdg ddd Zejdddgdd Zejd d!d"gd#d$ Zd%d& Z ejj!d'd(ejd)d	d*gd+d, Z"ze	#d-j$ed.k Z%W n e	j&y   d/Z%Y nw ed0gg d1de%rd2nd d3d4d5 Z'dS )6    )TemporaryFileN)parse)dviread)_has_tex_package)check_figures_equalimage_comparison)needs_usetextest_usetexpdfpngmpl20)baseline_images
extensionsstylec                  C   s   dt jd< t \} }ddtddddd	}|jd
i | |jdi | |jdi | |jdi | |jdi | dd |jD D ]}|| qFdd |jD D ]}|| qV|	  d S )NTtext.usetexbaseline   r   kZnone)ZpadZ	edgecolorZ	facecolor)verticalalignmentsizeZbbox)皙?gffffff?zO\LaTeX\ $\left[\int\limits_e^{2e}\sqrt\frac{\log^3 x}{x}\,\mathrm{d}x \right\}$)r   333333?Zlg)g?r   z$\frac{1}{2}\pi$)g333333?r   z	$p^{3^A}$)g?r   z	$p_{3_2}$c                 S      h | ]}|  d  qS r   Zget_position.0t r   <lib/python3.10/site-packages/matplotlib/tests/test_usetex.py	<setcomp>&       ztest_usetex.<locals>.<setcomp>c                 S   r      r   r   r   r   r   r    (   r!   )
mplrcParamspltsubplotsdicttextZtextsZaxvlineZaxhlineZset_axis_off)figaxkwargsxyr   r   r   r	      s"   
c                 C   s   dt jd< | ddd d S )NTr         ?z% a commentr$   r%   r)   Zfig_testZfig_refr   r   r   
test_empty-   s   
r2   c                 C   s*   dt jd< | ddd |ddd d S )NTr   r/   z$-$u   −r0   r1   r   r   r   test_unicode_minus3   s   
r3   c                  C   s:   dt jd< t  } |  dd dtjd< | j  d S )NTzaxes.formatter.use_mathtextr#   r   )r&   r%   figureZadd_subplotZset_xlimr$   canvasdraw)r*   r   r   r   test_mathdefault:   s
   

r8   zeqnarray.pngc                  C   s*   d} t jdd}|jdd| dddd d S )Nz/\begin{eqnarray*}foo\\bar\\baz\\\end{eqnarray*})r#   r#   )Zfigsizer/   Tcenter)usetexhorizontalalignmentr   )r&   r5   r)   )r)   r*   r   r   r   test_multiline_eqnarrayD   s   
r<   fontsize)   
      c                 C   s   t jd | t jd< i }t }dD ]1}|  |D ]}|jddd| ddd q|j	  t
|j d d	kjd
d ||< qth | d
ksQJ d S )Nr   z	font.size)r"   )r4   )r4   r#   r/   $Tr:   ).r      r#   )Zaxis)r$   r   Zuser%   r&   r5   clearr)   r6   r7   npZarrayZbuffer_rgbaanysumlenvalues)r=   Zheightsr*   Zvalsr-   r   r   r   test_minus_no_descentS   s   

rJ   pkgZxcolorZchemformulac                 C   s   t | st|  d dtjd< t }|ddd}|j	  d|  tjd< t }|ddd}|j	  t
j| |  d S )Nz is not availableTr   r/   zSome text 0123456789z8\PassOptionsToPackage{dvipsnames}{xcolor}\usepackage{%s}text.latex.preamble)r   pytestskipr$   r%   r&   r5   r)   r6   r7   rE   ZtestingZassert_array_equalZget_window_extent)rK   r*   r)   Ztext2r   r   r   test_usetex_packagesg   s   


rO   preamblez\usepackage[full]{textcomp}z\usepackage{underscore}c                 C   s2   | t jd< t  }|jddddd |j  d S )NrL   r/   zhello, worldTrB   )r&   r%   r5   r)   r6   r7   )rP   r*   r   r   r   test_latex_pkg_already_loadedz   s   
rQ   c                  C   sh   dt jd< tdd d d tdd} t  \}}|jdd| d |  |jd	d	d
dd t   d S )NTr      r4   )a_bcrT   rS   )datar   Zfoo_barrB   )r&   r%   ranger'   plotZlegendr)   r7   )Zdfr*   r+   r   r   r   test_usetex_with_underscore   s   
rX      )Zrerunsfmtsvgc              	   C   s   | tjddd  dtjd< t \}}|ddd t -}t	
t |j|| d W d	   n1 s7w   Y  W d	   d	S W d	   d	S 1 sOw   Y  d	S )
z:An error is raised if a TeX font lacks a Type-1 equivalent__getitem__c                 S   s   t jddd d d dS )Ns   texfonts	   Some Font)ZtexnameZpsnameZeffectsencodingfilename)r   ZPsFont)selfr   r   r   r   <lambda>   s    z%test_missing_psfont.<locals>.<lambda>Tr   r/   Zhello)formatN)setattrr   Z
PsfontsMapr$   r%   r&   r'   r)   r   rM   Zraises
ValueErrorZsavefig)rZ   Zmonkeypatchr*   r+   Ztmpfiler   r   r   test_missing_psfont   s   
Prd   Zgsz9.55Trotation)Zepsr
   r   r[   gHzG@)r   r   r   Ztolc                  C   s  dt jd< t } | g d}|jddgg ddgg dd d	d
 dD }d|d< d|d< tg dD ]P\}}tg dD ]E\}}tg dD ]:\}}|d }||d  }	||d  }
|j|	|
dd| ddd |j|	|
d||  ||  d| d|||d qGq=q3d S )NTr   )r   r   r#   r#   g      rR   rY   F)ZxlimZxticksZylimZyticksZframe_onc                 S   s   i | ]}||d  qS r   r   )r   valr   r   r   
<dictcomp>   s    z!test_rotation.<locals>.<dictcomp>)topr9   bottomleftrightBr   Ccenter_baseline)rh   r9   ri   r   rn   )rj   r9   rk   )r   Z      i     +   r/   )rT   Z
markersizeZmarkeredgewidthz$\mathrm{My  z}$)re   r;   r   )	r$   r%   r&   r5   Zadd_axesset	enumeraterW   r)   )r*   r+   r)   iZvajZhar   Zangler-   r.   r   r   r   test_rotation   s(   
$ry   )(Ztempfiler   ZnumpyrE   Zpackaging.versionr   Zparse_versionrM   Z
matplotlibr$   r   Zmatplotlib.testingr   Zmatplotlib.testing.decoratorsr   r   Zmatplotlib.testing._markersr   Zmatplotlib.pyplotZpyplotr&   Z
pytestmarkr	   r2   r3   r8   r<   ZmarkZparametrizerJ   rO   rQ   rX   Zflakyrd   Z_get_executable_infoversionZ_old_gs_versionZExecutableNotFoundErrorry   r   r   r   r   <module>   s\    








