o
    i!                     @   sd  d dl Z d dlZd dlZ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Zd dlmZmZmZmZ d dlmZ d dlmZmZ e
jjed dd	Ze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"edgdd Z#ed gd!d" Z$e
jj%d#d$ed%d& Z&e
j'd'ed(d)gd*d+d, Z(ed-d. Z)d/d0 Z*dS )1    N)Path)NamedTemporaryFile)dvireadpyplotcheckdep_usetexrcParams)PdfPages)check_figures_equalimage_comparisonTz"This test needs a TeX installation)reasonzpdf_use14corefonts.pdfc                  C   sv   dt d< dt d< dt d< dgt d< d	t d
< d} t }|ddd}|d |jdd| dddd |jddd d S )NTzpdf.use14corefontsz
sans-serifzfont.family   z	font.size	Helveticazfont.sans-serifr   z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=True      ?centerbottom   )horizontalalignmentverticalalignmentfontsize)	linewidth)r   pltfigureadd_subplot	set_titletextaxhline)r   figax r   \/var/www/edux/Edux_v2/venv/lib/python3.10/site-packages/matplotlib/tests/test_backend_pdf.pytest_use14corefonts   s   

r!   c                  C   s:   dt d< t } | d}|g d | t  d S )N*   zpdf.fonttypeo   r         )r   r   r   r   plotsavefigioBytesIOr   r   r   r   r    test_type42+   s
   
r,   c                  C   s   t t <} |  dksJ t }|d}|g d |j| dd |  dks.J |   |  dks:J W d    d S 1 sEw   Y  d S )Nr   r#   r$   pdfformatr   r%   )	r   r)   r*   get_pagecountr   r   r   r'   r(   )r-   r   r   r   r   r    test_multipage_pagecount4   s   
"r1   c                  C   s   t  } t| $}tdD ]}t }|d}|d |j|dd qW d    n1 s/w   Y  | 	d t
dd | D d	ksFJ t| d
k sOJ d S )N
   r#   zThis is a long titler-   r.   r   c                 s   s    | ]}d |v V  qdS )s	   startxrefNr   ).0liner   r   r    	<genexpr>I   s    z0test_multipage_properfinalize.<locals>.<genexpr>r   i@  )r)   r*   r   ranger   r   r   r   r(   seeksumsys	getsizeof)pdfior-   ir   r   r   r   r    test_multipage_properfinalize@   s   



r=   c               	   C   s  t dd)} t| }|jjj}W d    n1 sw   Y  tj|s'J W d    n1 s1w   Y  t| t|dd}W d    n1 sLw   Y  tj|rYJ t	
 }|d}|g d t dd-} t| }|jjj}|  W d    n1 sw   Y  tj|sJ W d    n1 sw   Y  t| t dd/} t| dd}|jjj}|  W d    n1 sw   Y  tj|sJ W d    n1 sw   Y  t| d S )NF)delete)
keep_emptyr#   r$   )r   r   _filefhnameospathexistsremover   r   r   r'   r(   )tmpr-   filenamer   r   r   r   r    test_multipage_keep_emptyM   s<   








rI   c                  C   s8  t t dddt ddd\} }t |d }t }|ddd}|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s^J W d    n1 shw   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   )extent)r%   r&   r   r   Tzimage.composite_imager-   r.   F)npmeshgridarangesinr   r   r   set_xlimimshowr   r   r)   r*   r(   lenr@   _images)XYZr   r   r-   r   r   r    test_composite_imagem   s"   $

"rY   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 )NpikepdfSOURCE_DATE_EPOCH0rK   meMultipage PDF	Test pagetest,pdf,multipage  r   r   r   tzinfoTrueAuthorTitleSubjectKeywordsModDateTrappedr-   )metadatar/   c                 S      i | ]	\}}|t |qS r   strr3   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)pytestimportorskipsetenvr   subplotsr'   r6   datetimetimezone	timedeltar)   r*   r(   Pdfopendocinfoitemsmpl__version__monkeypatchrZ   r   r   mdbufr-   infor   r   r    test_savefig_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 )NrZ   r[   r\   rK   r]   r^   r_   r`   ra   r   r   r   rb   rd   re   )rl   c                 S   rm   r   rn   rp   r   r   r    rs      rt   z+test_multipage_metadata.<locals>.<dictcomp>ru   rv   rw   rx   ry   rz   r{   )r|   r}   r~   r   r   r'   r6   r   r   r   r)   r*   r   r(   r   r   r   r   r   r   r   r   r   r    test_multipage_metadata   s@   
	

r   c                  C   sB   t ttj} | t  W d    d S 1 sw   Y  d S )N)r   r   rC   devnullr(   r   r   )r-   r   r   r    test_pdfpages_fspath   s   "r   zhatching_legend.pdfc                  C   sX   t jdd} t jddgddddd}t jddgddddd}| ||||gg d d	S )
z.Test for correct hatching on patches in legend)r   r%   )figsizer   greenXXXX)	facecolorhatchblue) r   r   r   N)r   r   	Rectanglelegend)r   a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%   g?nonegray_r)interpolationcmapN)	rN   ogridexpnanr   r   rS   
set_xticks
set_yticks)xyddr   r   r   r   r    test_grayscale_alpha   s   
r   r&   )rerunsc              	   C   s   dd }|  tjd| dtd< t \}}|ddd t -}t	t
 |j|dd	 W d
   n1 s8w   Y  W d
   d
S W d
   d
S 1 sPw   Y  d
S )z:An error is raised if a TeX font lacks a Type-1 equivalentc                  _   s   t jddd d d dS )Ntexfontz	Some Font)texnamepsnameeffectsencodingrH   )r   PsFont)argskwargsr   r   r    psfont   s   z#test_missing_psfont.<locals>.psfont__getitem__Ttext.usetexr   hellor-   r.   N)setattrr   
PsfontsMapr   r   r   r   r   r|   raises
ValueErrorr(   )r   r   r   r   tmpfiler   r   r    test_missing_psfont   s   Pr   defaultr-   eps)
extensionsc                 C   sD   |   }|  |jttdddddd |  }|  d S )NrJ   rK   d   rr   r   )c)r   set_axis_offr'   rN   rQ   linspace)fig_testfig_refax_testax_refr   r   r    'test_pdf_eps_savefig_when_color_is_none   s
    r   c                 C   sZ   t | d}dtd< td tt t| W d   dS 1 s&w   Y  dS )z"Test failing latex subprocess callztmpoutput.pdfTr   z$22_2_2$N)	ro   joinr   r   xlabelr|   r   RuntimeErrorr(   )tmpdirrD   r   r   r    test_failing_latex   s   
"r   c                  C   s2   t  \} }|jg g dd | jt dd d S )NT)
rasterizedr-   r.   )r   r   r'   r(   r)   r*   r+   r   r   r    test_empty_rasterized  s   r   )+r   r)   rC   pathlibr   r9   tempfiler   numpyrN   r|   
matplotlibr   r   r   r   r   r   matplotlib.backends.backend_pdfr   matplotlib.testing.decoratorsr	   r
   markskipifneeds_usetexr!   r,   r1   r=   rI   rY   r   r   r   r   r   flakyr   styler   r   r   r   r   r   r    <module>   sN    
	 #%




