o
    i3                     @   sv  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 d dlmZ d dl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!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w e e
j%j.ed dde
j%j.ed dde
j%&ded gde,rd!nd d"d#d$ Z/e!e ej01de
j%&dd%d& Z2e!ej01de
j%&dd'd( Z3e!e
j%&ded)gddd*d+ Z4e!ej01de
j%&dd,d- Z5ej01de
j%&de
j%6d.e
j7d/egd0e
j7d1e gd0e
j7d2e!gd0gd3d4 Z8ej01de
j%&de
j%6d.e
j7d/egd0e
j7d1e gd0e
j7d2e!gd0gd5d6 Z9e!d7d8 Z:e!d9d: Z;e!d;d< Z<e!ed=d> Z=e!d?d@ Z>edAgdBe
j%6dCdDe
j%&ddEdF Z?e
j%&ddGdH Z@dS )I    N)BytesIO)parse)_has_tex_package_check_for_pgf)ImageComparisonFailure)compare_images)PdfPages)_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   p/var/www/html/eduruby.in/lip-sync/lip-sync-env/lib/python3.10/site-packages/matplotlib/tests/test_backend_pgf.py<lambda>   s    r   c                 C   sf   t jt| }tj|fi | t jtd|  }tt jt| | t	|||d}|r1t
|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#   pgfc                 C   sT   t  }|ddd t }|j|ddd |d t |}|dk r(J d S )N      ?z%_^ $a_b^c$pngr$   )formatbackendr      )r   figuretextr   r   seekimreadall)tmp_pathfigbuftr   r   r   test_tex_special_chars%   s   

r3   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 jdddddd t 	dd t 
dd d S ) Nr   r)         zb-zg>        g?z//Z	lightgrayred)ZhatchZ	facecolorZ	edgecolor)   r8   皙?r9   r8   )r5   r:   r   r5   bg?r%   ror8   )Z
markersizeu/   unicode (ü, °, §) and math ($\mu_i = x_i^2$)right   )Zhafontsizez*sans-serif, blue, $\frac{\sqrt{x}}{y^2}$..
sans-serifblue)familycolorz2should be clipped as default clip_box is Axes bboxT)r?   Zclip_on)r   r*   npZlinspaceplotZfill_betweenfillr+   ZylabelZxlimZylim)xr   r   r   create_figure2   s(   

rH   zpgf_xelatex.pdfdefault)stylec                  C   s    ddd} t j|  t  d S )NserifFfont.familypgf.rcfontsmplrcParamsupdaterH   )Z
rc_xelatexr   r   r   test_xelatexO   s
   
rS   gsz9.50TZtype1eczneeds type1ec.sty)reasonucszneeds ucs.styzpgf_pdflatex.pdfgQk'@)rJ   r   c                  C   s$   ddddd} t j|  t  d S )NrK   Fpdflatexz4\usepackage[utf8x]{inputenc}\usepackage[T1]{fontenc})rM   rN   pgf.texsystempgf.preamblerO   )rc_pdflatexr   r   r   test_pdflatexa   s   
r[   c               	   C   s   dddddddddd	d
ddddg} t rddgnddg}t| D ]E\}}t|4 dD ]\}}|tjd v rEt|sEtd| d q-t  t	d|d  d|| d W d    n1 saw   Y  q!d S )Nr@      g?
   Fxelatex)rM   	font.sizefigure.subplot.leftlines.markersizerN   rX   Z	monospaceg?r>   rW   zG\usepackage[utf8x]{inputenc}\usepackage[T1]{fontenc}\usepackage{sfmath})rM   r_   r`   ra   rN   rX   rY   r   gffffff*@))sfmathrb   )Zutf8xrV   rY   zneeds z.styZpgf_rcupdater)   .pdfr   )
_old_gs_version	enumeraterP   Z
rc_contextrQ   r   pytestskiprH   r#   )Zrc_setsr   iZrc_setZ	substringpkgr   r   r   test_rcupdater   s<   rj   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,rK   FrL   r)   r5   r   r6   g}Ô%ITi  )sizer>   ir]   )Zbinsrangelogpdfr'   )rD   randomseedrP   rQ   rR   r   subplotsrE   Zset_xlimZset_ylimZscatterhistnormalZ
set_xscaler   r   )r0   Zaxsr   r   r   test_pathclip   s   "ru   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 )	NrK   FrL   r)   y              D@r5   T)rP   rQ   rR   rD   Zogridr   ZpcolorZset_rasterized)YXr   r   r   test_mixedmode   s    ry   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 )NrK   FrL   r)   r5      zpgf_bbox_inches.pdfbbox_inchesr   )r   r   )rP   rQ   rR   r   rr   rE   rl   tight_layoutZget_window_extentZtransformedZdpi_scale_transinvertedr#   )r0   ax1ax2Zbboxr   r   r   test_bbox_inches   s   

r   systemlualatex)ZmarksrW   r^   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soJ W d    d S 1 szw   Y  d S )NrK   F)rM   rN   rX   rz   )r8   r5   ZfigsizeZ	pdfpages_rc   meMultipage PDF with pgf	Test pagetest,pdf,multipage     r)   r   tzinfoUnknownAuthorZTitleSubjectKeywordsZModDateZTrappedmetadatar8   )rP   rQ   rR   r   rr   rE   rl   r|   r   r   r   r   datetimetimezone	timedeltar   r   Zget_pagecount)	r   rZ   Zfig1r~   Zfig2r   r   mdrn   r   r   r   test_pdf_pages   s6   	



"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    n1 sWw   Y  |j|}dd |j D }W d    n1 sww   Y  d|v r|d= d|v r|d= |d}	|	dtj ks|dkrd|	v sJ |dddtj dd	dddd d!ksJ d S )"NpikepdfSOURCE_DATE_EPOCH0rX   rz   r   r   r   r   r   r   r)   r   r   Truer   Zpdfpages_meta_check_rc   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)rf   ZimportorskipZsetenvrP   rQ   rR   r   rr   rE   rl   r   r   r   r   r   r   r   r   r   ZPdfopenZdocinfoitemspop__version__)
Zmonkeypatchr   r   r0   axr   r   rn   infoZproducerr   r   r   test_pdf_pages_metadata_check   sL   

	
r   c              	   C   s  t |  ttj td}W d    n1 sw   Y  W d    n1 s*w   Y  t jds7J ttj tddd}W d    n1 sOw   Y  W d    n1 s^w   Y  t jdskJ tddd}W d    n1 s|w   Y  t jdrJ td}|	t
  W d    n1 sw   Y  t jdsJ ttj% tddd}|	t
  W d    n1 sw   Y  W d    n1 sw   Y  t jdsJ td	dd}|	t
  W d    n1 sw   Y  t jd	sJ d S )
Nza.pdfzb.pdfT)Z
keep_emptyzc.pdfFzd.pdfze.pdfzf.pdf)r   chdirrf   ZwarnsrP   ZMatplotlibDeprecationWarningr   r   existsr   r   r*   )r/   rn   r   r   r   test_multipage_keep_empty!  sJ   
 
 

 r   c                  C   sr   t  } | d tt | jt dd W d    n1 s!w   Y  t  } | d | jt dd d S )Nz\oopsr$   ro   z
this is ok)r   r*   Zsuptitlerf   Zraises
ValueErrorr   r   )r0   r   r   r   test_tex_restart_after_errorJ  s   

r   c                  C   s:   t  \} }|ddgddgg | jt dddd d S )	Nr   r)   r5   r8   rn   r$   Ztight)r'   r(   r{   )r   rr   Zimshowr   r   )r0   r   r   r   r   test_bbox_inches_tightV  s   r   c                  C   sH   t  } t j| dddd | d t| }|d dk s"J d S )Nr&   r$   T)r'   r(   transparentr   ).r8   )r   r   r*   r   r,   r-   r.   )r1   r2   r   r   r   test_png_transparency]  s
   

r   c                 C   sn   |  d dtjd< tddd tjt dd W d    n1 s$w   Y  dd	d
 | jD v s5J d S )NWARNINGzthis-font-does-not-existrM   r%   zhello, worldr$   ro   z/Ignoring unknown font: this-font-does-not-existc                 S   s   g | ]}|  qS r   )
getMessage)r   rr   r   r   
<listcomp>m  s    z%test_unknown_font.<locals>.<listcomp>)Zat_levelrP   rQ   r   Zfigtextr   r   records)Zcaplogr   r   r   test_unknown_fontg  s   
r   rn   )
extensions	texsystem)rW   r^   r   c                 C   s@   t |st|d  |tjd< | ddd |ddd d S )Nz + pgf is requiredrX   r%   z$-1$u   $−1$)r   rf   rg   rP   rQ   r+   )Zfig_testZfig_refr   r   r   r   test_minus_signs_with_texq  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 sBw   Y  d}||v sOJ d S )N)r8   r8   r   Fr   r)   rz   r\   *   )scalelengthZ
randomnessr$   ro   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   rr   Z
set_xticksZ
set_yticksZset_frame_onrE   Zset_sketch_paramsr   r   getvaluedecode)r0   r   handlefdr1   Zbaseliner   r   r   test_sketch_params|  s   


r   )Ar   ior   r   r   numpyrD   Zpackaging.versionr   parse_versionrf   Z
matplotlibrP   Zmatplotlib.pyplotZpyplotr   Zmatplotlib.testingr   r   Zmatplotlib.testing.exceptionsr   Zmatplotlib.testing.comparer   Zmatplotlib.backends.backend_pgfr   Zmatplotlib.testing.decoratorsr	   r
   r   Zmatplotlib.testing._markersr   r   r   r   r   r   r#   markr(   r3   rH   rS   Z_get_executable_infoversionrd   ZExecutableNotFoundErrorZskipifr[   rJ   contextrj   ru   ry   r   Zparametrizeparamr   r   r   r   r   r   r   r   r   r   r   r   r   <module>   s    














#
2
(



	

