o
    h2                     @   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 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@e!e
j%j.edI dJde
j%&dedKgdddLdMdN ZAdS )O    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   u/var/www/html/construction_image-detection-poc/venv/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//	lightgrayred)hatch	facecolor	edgecolor)   r<   皙?r=   r<   )r5   r>   r   r5   bg?r%   ror<   )
markersizeu/   unicode (ü, °, §) and math ($\mu_i = x_i^2$)right   )hafontsizez*sans-serif, blue, $\frac{\sqrt{x}}{y^2}$..
sans-serifblue)familycolorz2should be clipped as default clip_box is Axes bboxT)rE   clip_on)r   r*   nplinspaceplotfill_betweenfillr+   ylabelxlimylim)xr   r   r   create_figure2   s(   

rT   zpgf_xelatex.pdfdefault)stylec                  C   s    ddd} t j|  t  d S )NserifFfont.familypgf.rcfontsmplrcParamsupdaterT   )
rc_xelatexr   r   r   test_xelatexO   s
   
r`   gsz9.50Ttype1eczneeds type1ec.sty)reasonucszneeds ucs.styzpgf_pdflatex.pdfgQk'@)rV   r   c                  C   s$   ddddd} t j|  t  d S )NrW   Fpdflatexz4\usepackage[utf8x]{inputenc}\usepackage[T1]{fontenc})rY   rZ   pgf.texsystempgf.preambler[   )rc_pdflatexr   r   r   test_pdflatexa   s   
ri   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 )NrF      g?
   Fxelatex)rY   	font.sizefigure.subplot.leftlines.markersizerZ   rf   	monospaceg?rC   re   zG\usepackage[utf8x]{inputenc}\usepackage[T1]{fontenc}\usepackage{sfmath})rY   rm   rn   ro   rZ   rf   rg   r   gffffff*@))sfmathrq   )utf8xrd   rg   zneeds z.stypgf_rcupdater)   .pdfr   )
_old_gs_version	enumerater\   
rc_contextr]   r   pytestskiprT   r#   )rc_setsr   irc_set	substringpkgr   r   r   test_rcupdater   s<   r   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,rW   FrX   r)   r5   r   r6   g}Ô%ITi  )sizerC   irk   )binsrangelogpdfr'   )rK   randomseedr\   r]   r^   r   subplotsrM   set_xlimset_ylimscatterhistnormal
set_xscaler   r   )r0   axsr   r   r   test_pathclip   s   "r   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 )	NrW   FrX   r)   y              D@r5   T)r\   r]   r^   rK   ogridr   pcolorset_rasterized)YXr   r   r   test_mixedmode   s    r   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 )NrW   FrX   r)   r5      zpgf_bbox_inches.pdfbbox_inchesr   )r   r   )r\   r]   r^   r   r   rM   r   tight_layoutget_window_extenttransformeddpi_scale_transinvertedr#   )r0   ax1ax2bboxr   r   r   test_bbox_inches   s   

r   systemlualatex)marksre   rl   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 )NrW   F)rY   rZ   rf   r   )r<   r5   figsize	pdfpages_rt   meMultipage PDF with pgf	Test pagetest,pdf,multipage     r)   r   tzinfoUnknownAuthorTitleSubjectKeywordsModDateTrappedmetadatar<   )r\   r]   r^   r   r   rM   r   r   r   r   r   r   datetimetimezone	timedeltar   r   get_pagecount)	r   rh   fig1r   fig2r   r   mdr   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0rf   r   r   r   r   r   r   r   r)   r   r   Truer   pdfpages_meta_check_rt   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   LuaTeXzD:19700101000000ZzMatplotlib vz, https://matplotlib.orgzD:19680801000000Zz/True)z/Authorz/CreationDatez/Creatorz	/Keywordsz/ModDatez/Subjectz/Titlez/Trapped)rx   importorskipsetenvr\   r]   r^   r   r   rM   r   r   r   r   r   r   r   r   r   r   Pdfopendocinfoitemspop__version__)
monkeypatchr   r   r0   axr   r   r   infoproducerr   r   r   test_pdf_pages_metadata_check   sL   

	
r   c                 C   s   | d }t |}W d    n1 sw   Y  | rJ | d }t |}|t  W d    n1 s8w   Y  | sCJ d S )Nza.pdfzb.pdf)r   existsr   r   r*   )r/   fnr   r   r   r   test_multipage_keep_empty!  s   

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$   r   z
this is ok)r   r*   suptitlerx   raises
ValueErrorr   r   )r0   r   r   r   test_tex_restart_after_error0  s   

r   c                  C   s:   t  \} }|ddgddgg | jt dddd d S )	Nr   r)   r5   r<   r   r$   tight)r'   r(   r   )r   r   imshowr   r   )r0   r   r   r   r   test_bbox_inches_tight<  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   ).r<   )r   r   r*   r   r,   r-   r.   )r1   r2   r   r   r   test_png_transparencyC  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-existrY   r%   zhello, worldr$   r   z/Ignoring unknown font: this-font-does-not-existc                 S   s   g | ]}|  qS r   )
getMessage)r   rr   r   r   
<listcomp>S  s    z%test_unknown_font.<locals>.<listcomp>)at_levelr\   r]   r   figtextr   r   records)caplogr   r   r   test_unknown_fontM  s   
r   r   )
extensions	texsystem)re   rl   r   c                 C   s@   t |st|d  |tjd< | ddd |ddd d S )Nz + pgf is requiredrf   r%   z$-1$u   $−1$)r   rx   ry   r\   r]   r+   )fig_testfig_refr   r   r   r   test_minus_signs_with_texW  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)r<   r<   r   Fr   r)   r   rj   *   )scalelength
randomnessr$   r   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   r   
set_xticks
set_yticksset_frame_onrM   set_sketch_paramsr   r   getvaluedecode)r0   r   handlefdr1   baseliner   r   r   test_sketch_paramsb  s   


r  zunicode-mathzneeds unicode-math.styzpgf_document_font_size.pdf)rV   remove_textc                   C   sD   t jdddd t  tjg dd tjg dd t  d S )Nrl   Fz\usepackage{unicode-math})rf   rZ   rg   zM$this is a very very very long math label a \times b + 10^{-3}$ and some text)labelz:\normalsize the document font size is \the\fontdimen6\font)r\   r]   r^   r   r*   rM   legendr   r   r   r   test_document_font_size~  s   r  )Br   ior   r   r   numpyrK   packaging.versionr   parse_versionrx   
matplotlibr\   matplotlib.pyplotpyplotr   matplotlib.testingr   r   matplotlib.testing.exceptionsr   matplotlib.testing.comparer   matplotlib.backends.backend_pgfr   matplotlib.testing.decoratorsr	   r
   r   matplotlib.testing._markersr   r   r   r   r   r   r#   markr(   r3   rT   r`   _get_executable_infoversionru   ExecutableNotFoundErrorskipifri   rV   contextr   r   r   r   parametrizeparamr   r   r   r   r   r   r   r   r  r  r   r   r   r   <module>   s    














#
2




	




