o
    j
9                     @   s6  d dl 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	Z
d dl	mZmZmZ d dlm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 d d	lmZ d d
lmZm Z  d dl!m"Z" e dgdd Z#ej$%dddgej$%dddgdd Z&dd Z'dd Z(dd Z)dd Z*dd  Z+d!d" Z,d#d$ Z-d%d& Z.d'd( Z/d)d* Z0e"d+d, Z1d-d. Z2e d/gd0d1 Z3e d2gd3d4 Z4e
j56d5ed6d7gd8d9d: Z7e"d;d< Z8d=d> Z9e d?gd@dA Z:dBdC Z;e dDgdEdFdGdH Z<e dIgdJdFdKdL Z=ej$%dMdNdOgdPdQ Z>e dRgdSdT Z?dS )U    N)Path)pyplotrcParamsfont_manager)_get_data_path)FT2Font)findfontFontProperties)get_glyphs_subsetfont_as_file)PdfPages)	Rectangle)check_figures_equalimage_comparison)needs_usetexzpdf_use14corefonts.pdfc                  C   sl   dt d< dt d< dt d< dgt d< d	t d
< d} t \}}|d |jdd| dddd |jddd d S )NTzpdf.use14corefontsz
sans-serifzfont.family   z	font.sizeZ	Helveticazfont.sans-serifr   pdf.compressionu   A three-line text positioned just above a blue line
and containing some French characters and the euro symbol:
"Merci pépé pour les 10 €"z0Test PDF backend with option use14corefonts=Trueg      ?centerbottom   )ZhorizontalalignmentZverticalalignmentfontsize)Z	linewidth)r   pltsubplots	set_titletextZaxhline)r   figax r   b/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/matplotlib/tests/test_backend_pdf.pytest_use14corefonts   s   

r   zfontname, fontfile)DejaVu SanszDejaVuSans.ttf)WenQuanYi Zen Heiwqy-zenhei.ttcfonttype   *   c                 C   sr   t tt| gdj|krtd| d |td< t \}}|	g d |j
d| d |jt dd	 d S )
NfamilyFont  may be missingpdf.fonttype      r$   z
Axes Title)fontpdfformat)r   r   r	   namepytestskipr   r   r   plotr   savefigioBytesIO)ZfontnameZfontfiler#   r   r   r   r   r   test_embed_fonts,   s   r9   c                  C   s   t t 9} |  dksJ t \}}|g d |j| dd |  dks+J |   |  dks7J W d    d S 1 sBw   Y  d S )Nr   r+   r/   r0   r,   r-   )r   r7   r8   Zget_pagecountr   r   r5   r6   )r/   r   r   r   r   r   test_multipage_pagecount<   s   "r:   c                  C   s   t  } t| !}tdD ]}t \}}|d |j|dd qW d    n1 s,w   Y  |  }|	ddks>J t
|dk sFJ d S )N
   zThis is a long titler/   r0   s	   startxrefr,   i@  )r7   r8   r   ranger   r   r   r6   getvaluecountlen)Zpdfior/   ir   r   sr   r   r   test_multipage_properfinalizeG   s   

rB   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   existsr6   r   figure)Ztmp_pathfnr/   r   r   r   test_multipage_keep_emptyS   s   

rF   c                  C   s.  t t dddt ddd\} }t |d }t \}}|dd |j|g dd |j|d d d	 g d
d dtjd< t	t
 }|j|dd t|jjdksYJ W d    n1 scw   Y  dtjd< t	t
 }|j|dd t|jjdksJ W d    d S 1 sw   Y  d S )N   r,   r-   r   r$   )r   r,   r   r,   )Zextent)r-   r$   r   r,   Tzimage.composite_imager/   r0   F)npZmeshgridarangesinr   r   Zset_xlimimshowr   r   r7   r8   r6   r?   _fileZ_images)XYZr   r   r/   r   r   r   test_composite_imagea   s    $

"rR   c            
      C   s   t d} tjdtjd}td|d d ddf< dtd< t }|j	|dd t
 }|j|d	d
d | j|(}|j\}|j \}| |}|jsOJ | }t|d}	W d    n1 sew   Y  tj||	 d S )Npikepdf)   r,   r$   )ZdtyperT   r   Tr   )resizer/   rD   )r1   ZdpiRGB)r3   importorskiprJ   ZzerosZuint8rK   r   r   rD   Zfigimager7   r8   r6   PdfopenpagesZimagesvaluesZPdfImageZindexedZas_pil_imageZasarrayconvertZtestingZassert_array_equal)
rS   datar   bufr/   pageimageZ	pdf_imageZ	pil_imagergbr   r   r   test_indexed_imaget   s"   


rb   c                 C   s   t d}| dd t \}}|td ddddtjd	d
dtt	dddd}t
 }|j||dd |j|}dd |j D }W d    n1 sUw   Y  |dddtj ddddtj dddd	kssJ d S )NrS   SOURCE_DATE_EPOCH0rH   meMultipage PDF	Test pagetest,pdf,multipage  r   r,   r   tzinfoTrueAuthorTitleSubjectKeywordsModDateTrappedr/   )metadatar1   c                 S      i | ]	\}}|t |qS r   str.0kvr   r   r   
<dictcomp>       z)test_savefig_metadata.<locals>.<dictcomp>D:19700101000000ZMatplotlib v, https://matplotlib.orgD:19680801000000ZMatplotlib pdf backend v/True	z/Authorz/CreationDatez/Creatorz	/Keywordsz/ModDatez	/Producerz/Subjectz/Titlez/Trapped)r3   rW   setenvr   r   r5   r<   datetimetimezone	timedeltar7   r8   r6   rX   rY   docinfoitemsmpl__version__ZmonkeypatchrS   r   r   mdr^   r/   infor   r   r   test_savefig_metadata   s:   
	
r   c                  C   s*  t  \} }tjtdd | jt dddid W d    n1 s$w   Y  tjtdd | jt ddd	id W d    n1 sGw   Y  tjtd
d | jt dddid W d    n1 sjw   Y  tjtdd | jt dddid W d    d S 1 sw   Y  d S )Nz#Unknown infodict keyword: 'foobar'.)matchr/   Zfoobarinvalid)r1   rt   z%not an instance of datetime.datetime.rr   z
1968-08-01z'not one of {"True", "False", "Unknown"}rs   Zfooznot an instance of str.ro   i  )r   r   r3   ZwarnsUserWarningr6   r7   r8   r   r   r   r   r   test_invalid_metadata   s*   "r   c                 C   s  t d}| dd t \}}|td ddddtjd	d
dtt	dddd}t
 }t||d}|| || W d    n1 sMw   Y  |j|}dd |j D }W d    n1 smw   Y  |dddtj ddddtj dddd	ksJ d S )NrS   rc   rd   rH   re   rf   rg   rh   ri   r   r,   r   rj   rl   rm   )rt   c                 S   ru   r   rv   rx   r   r   r   r|      r}   z+test_multipage_metadata.<locals>.<dictcomp>r~   r   r   r   r   r   r   )r3   rW   r   r   r   r5   r<   r   r   r   r7   r8   r   r6   rX   rY   r   r   r   r   r   r   r   r   test_multipage_metadata   s@   
	

r   c               	      s2  t d} dtjdd}|jddd dd |jdd	d
 dd t f}|j|dd | j	|@}|j
d j}dD ]/\} t fdd|D d }|d usWJ t|dd d u saJ |jd t|d ksoJ q@W d    n1 szw   Y  W d    d S W d    d S 1 sw   Y  d S )NrS   &https://test_text_urls.matplotlib.org/r-   r,   Zfigsize皙?ztest plain 123plain)urlg?ztest mathtext $123$mathtextr/   r0   r   ))z0.1r   )z0.4r   c                 3   s(    | ]}|j j   kr|V  qd S NAURIry   afragmenttest_urlr   r   	<genexpr>   s   & z!test_text_urls.<locals>.<genexpr>
QuadPointsr,   H   )r3   rW   r   rD   r   r7   r8   r6   rX   rY   rZ   AnnotsnextgetattrRectdecimalDecimal)rS   r   fdr/   annotsyannotr   r   r   test_text_urls   s,   

"r   c               	      s  t d} d tjdd}|jdddd  d t a}|j|d	d
 | j	|;}|j
d j}t fdd|D d }|d usCJ t|dd d usMJ |jd |jd td ks^J W d    n1 shw   Y  W d    d S W d    d S 1 sw   Y  d S )NrS   r   )r,   r,   r   r   N-   )Zrotationr   r/   r0   r   c                 3   s"    | ]}|j j  kr|V  qd S r   r   r   r   r   r   r     s     z)test_text_rotated_urls.<locals>.<genexpr>r      z0.00001)r3   rW   r   rD   r   r7   r8   r6   rX   rY   rZ   r   r   r   r   r   r   r   rS   r   r   r/   r   r   r   r   r   test_text_rotated_urls  s*   


"r   c               	      s   t d} d tjdd}|jdddd  d	d
 t T}|j|dd | j	|.}|j
d j}t fdd|D d }|d usEJ |jd tdd ksSJ W d    n1 s]w   Y  W d    d S W d    d S 1 suw   Y  d S )NrS   r   r   r   r   gffffff?ztest tex $123$Ttex)usetexr   r/   r0   r   c                 3   s&    | ]}|j j  d kr|V  qdS )r   Nr   r   r   r   r   r   /  s   $ z%test_text_urls_tex.<locals>.<genexpr>r,   z0.7r   )r3   rW   r   rD   r   r7   r8   r6   rX   rY   rZ   r   r   r   r   r   r   r   r   r   test_text_urls_tex  s$   

"r   c                  C   sB   t ttj} | t  W d    d S 1 sw   Y  d S r   )r   r   osdevnullr6   r   rD   )r/   r   r   r   test_pdfpages_fspath6  s   "r   zhatching_legend.pdfc                  C   sT   t jdd} tddgddddd}tddgddddd}| ||||gg d d	S )
z.Test for correct hatching on patches in legend)r,   r-   r   r   greenZXXXX)Z	facecolorZhatchblue) r   r   r   N)r   rD   r   Zlegend)r   r   br   r   r   test_hatching_legend;  s   r   zgrayscale_alpha.pdfc                  C   sx   t jddddddf \} }t | d |d   }t j||dk < t \}}|j|ddd |g  |g  dS )z9Masking images with NaN did not work for grayscale imagesr-   r   noneZgray_r)interpolationZcmapN)	rJ   Zogridexpnanr   r   rM   
set_xticks
set_yticks)xr   ddr   r   r   r   r   test_grayscale_alphaF  s   
r   defaultr/   eps)
extensionsc                 C   sD   |   }|  |jttdddddd |  }|  d S )NrG   rH   d   r{   r   )c)Zadd_subplotZset_axis_offr5   rJ   rL   Zlinspace)Zfig_testZfig_refZax_testZax_refr   r   r   'test_pdf_eps_savefig_when_color_is_noneR  s
    r   c                   C   sP   t jddd tt t jt dd W d   dS 1 s!w   Y  dS )z"Test failing latex subprocess callz$22_2_2$T)r   r/   r0   N)r   Zxlabelr3   ZraisesRuntimeErrorr6   r7   r8   r   r   r   r   test_failing_latex\  s   "r   c                  C   s2   t  \} }|jg g dd | jt dd d S )NT)Z
rasterizedr/   r0   )r   r   r5   r6   r7   r8   r   r   r   r   test_empty_rasterizedd  s   r   zkerning.pdfc                  C   s4   t  } d}| jdd|dd | jdd|dd d S )Nu   AVAVAVAVAVAVAVAV€AAVVr   g      ?rH   )sizeg      ?   )r   rD   r   )r   rA   r   r   r   test_kerningk  s   r   c                  C   s   t td} d}t| }|| t| |}tt|}W d    n1 s'w   Y  || | }| }h |dd |D ksFJ t|t|k sPJ | | ksZJ d S )Nzfonts/ttf/DejaVuSerif.ttfz%these should be subsetted! 1234567890c                 S   s   h | ]}t |qS r   )chr)ry   keyr   r   r   	<setcomp>  s    z%test_glyphs_subset.<locals>.<setcomp>)	rw   r   r   Zset_textr
   r   Zget_charmapr?   Zget_num_glyphs)ZfpathcharsZ	nosubfontZsubsetZsubfontZ	nosubcmapZsubcmapr   r   r   test_glyphs_subsets  s   

r   zmulti_font_type3.pdfgffffff@)Ztolc                  C   h   t jdgd} tt | jdkrtd tjdddgdd tjd	d
d t	 }|
ddd d S )Nr!   r&   r"   Font may be missingr.   r       r'   r   r/   r$   r#   333333?ffffff?"   There are 几个汉字 in between!fmr	   r   r   r2   r3   r4   r   rcrD   r   fpr   r   r   r   test_multi_font_type3     
r   zmulti_font_type42.pdfg@c                  C   r   )Nr!   r&   r"   r   r.   r    r   r   r/   r%   r   r   r   r   r   r   r   r   r   test_multi_font_type42  r   r   zfamily_name, file_name)z	Noto SanszNotoSans-Regular.otf)ZFreeMonozFreeMono.otfc                 C   sr   t j| gd}tt |j|krtd|  d tjd| gdd t	 }|
ddd	 |jt d
d d S )Nr&   r(   r)   r.   r   r   r   r   u   Привет мир!r/   r0   )r   r	   r   r   r2   r3   r4   r   r   rD   r   r6   r7   r8   )Zfamily_name	file_namer   r   r   r   r   test_otf_font_smoke  s   r   ztruetype-conversion.pdfc                 C   sL   dt jd< t \}}|jdddttddd |g  |	g  d S )Nr$   r*   r   ZABCDEzmpltest.ttfP   )r.   r   )
r   r   r   r   r   r   __file__	with_namer   r   )Zrecwarnr   r   r   r   r   test_truetype_conversion  s   


r   )@r   r   r7   r   pathlibr   numpyrJ   r3   Z
matplotlibr   r   r   r   r   r   Zmatplotlib.cbookr   Zmatplotlib.ft2fontr   Zmatplotlib.font_managerr   r	   Z#matplotlib.backends._backend_pdf_psr
   r   Zmatplotlib.backends.backend_pdfr   Zmatplotlib.patchesr   Zmatplotlib.testing.decoratorsr   r   Zmatplotlib.testing._markersr   r   markZparametrizer9   r:   rB   rF   rR   rb   r   r   r   r   r   r   r   r   r   stylecontextr   r   r   r   r   r   r   r   r   r   r   r   r   <module>   s~    
#%









