o
    i0                     @   sd  d dl Z d dlmZ d dlZd dlZd dlZd dlZd dlZ	d dl
Z
d dlZd dlmZ d dlmZ d dlmZ d dlmZ e
jjed ddZd	d
 Zedgdddd Zedgdddd Zdd Zedgdd Zedgdd Zedd Ze
j de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/d0 Z*dS )1    N)BytesIO)dviread)Figure)image_comparisonTz"This test needs a TeX installation)reasonc                  C   s   t  \} }tddtj d}t|}t|}|j|||dd\}}}|D ]}|d q(t	 }	| j
|	dd |	 }
W d    n1 sIw   Y  tjj }||
 d S )	Nr      2   ko)yerrfmtFsvgformat)pltsubplotsnplinspacepisin	ones_likeerrorbarset_visibler   savefiggetvaluexmlparsersexpatParserCreateParse)figaxxyr
   abcartistfdbufparser r*   \/var/www/edux/Edux_v2/venv/lib/python3.10/site-packages/matplotlib/tests/test_backend_svg.pytest_visibility   s   


r,   zfill_black_with_alpha.svg)remove_textc                  C   s6   t  } | ddd}|jg dg ddddd d S )N   )r   皙?r.   )r   r   r   kr/   i'  )r!   r"   r%   alphas)r   figureadd_subplotscatterr   r    r*   r*   r+   test_fill_black_with_alpha*   s    r7   noscalec                  C   s\   t t dddt ddd\} }t |d }t }|ddd}|j|ddd d S )N   r.      graynone)cmapinterpolation)r   meshgridaranger   r   r3   r4   imshow)XYZr   r    r*   r*   r+   test_noscale1   s
   $rF   c                  C   st   t  } d}| jd|d t }| j|dd |  }W d    n1 s(w   Y  d|}||v s8J d S )Nz$http://test_text_urls.matplotlib.orgtest_text_urls)urlr   r   z<a xlink:href="{0}">)r   r3   suptitler   r   r   decoder   )r   test_urlr'   r(   expectedr*   r*   r+   rG   ;   s   
rG   zbold_font_output.svgc                  C   sX   t  } | ddd}|tdtd |d |jddd |jddd d S )Nr.   
   nonbold-xlabelbold-ylabelbold
fontweight
bold-title)	r   r3   r4   plotr   rA   
set_xlabel
set_ylabel	set_titler6   r*   r*   r+   test_bold_font_outputI   s   
rX   z'bold_font_output_with_none_fonttype.svgc                  C   sb   dt jd< t  } | ddd}|tdtd |d |jddd |j	d	dd d S )
Nr=   svg.fonttyper.   rM   rN   rO   rP   rQ   rS   )
r   rcParamsr3   r4   rT   r   rA   rU   rV   rW   r6   r*   r*   r+   (test_bold_font_output_with_none_fonttypeS   s   

r[   c              	   C   s   dd }|  tjd| tjddd t \}}|ddd t	 -}t
t |j|d	d
 W d   n1 s<w   Y  W d   dS W d   dS 1 sTw   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encodingfilename)r   PsFont)argskwargsr*   r*   r+   psfontb   s   z#test_missing_psfont.<locals>.psfont__getitem__textTusetex      ?hellor   r   N)setattrr   
PsfontsMapmplrcr   r   rg   tempfileTemporaryFilepytestraises
ValueErrorr   )monkeypatchre   r   r    tmpfiler*   r*   r+   test_missing_psfont^   s   Prw   defaultc                  C   s   t  } | jddddd t }| j|dd | d}W d    n1 s(w   Y  d}td	||s:J td
||sEJ d S )Nrj   z\textwonTrh   r   r   asciizComputer_Modern_Sans_Serif-142z<path d=(.|\s)*?id="{0}"/>z<use[^/>]*? xlink:href="#{0}"/>)	r   rg   r   r   r   rJ   researchr   )r   r'   r(   won_idr*   r*   r+   test_unicode_wono   s   r}   c                  C   s   dt jd< d} t  \}}|tdd|  |tdtd |dd	 t }|j	|d
d |
d |  }W d    n1 sIw   Y  | |v sTJ dD ]}d| d|v sbJ qVd S )Nr=   rY   zUnlikely to appear by chancez
2019-06-30r.   z
2019-01-01z
2019-12-31r   r;   r   r   )familyweightstretchstylesizezfont-:)r   rZ   r   rg   r   
datetime64set_xlimset_ylimr   r   seekreadrJ   )rL   r   r    r'   r(   propr*   r*   r+   "test_svgnone_with_data_coordinates~   s   

r   c                     s  ddl m  ddlm t } | d}|jddgddggdd	 |jg d
g d
dd |j	g ddd |
  | }|g d
g d
 | jddd}|	g dg d
 | jddd}|	ddgddgddg | j  i }t| jddD ]\}}| rd|jj d| }|||< || q}t }	| j|	dd |	  }
W d   n1 sw   Y   fdd}| D ]\}}|||r||
v sJ qdS ) z+Test that object gid appears in output svg.r   )	OffsetBox)Tick   g      ?g       @g      @auto)aspectr.   r;      	myscatter)label)r;   r   r.   myplot   polar)
projection)r   g      ?r      3dr.   r;   T)include_selftest123_r   r   Nc                    s   t | rdS t |tjr| dkrdS |jd u rdS t |tjrD| \}}t|t|  kr7dkr8dS  t|drB|jd u rDdS t |re|	 }|dkrSdS |
 }|t|k sc|t|kredS dS )NF r.   axesr   T)
isinstancer   Textget_textr   Line2Dget_datalenhasattrget_locget_view_intervalminmax)gidobjxdataydatalocvir   r   r*   r+   include   s,   


ztest_gid.<locals>.include)matplotlib.offsetboxr   matplotlib.axisr   r   r3   r4   rB   r5   rT   legendtwinxbarcanvasdraw	enumeratefindobjget_visible	__class____name__set_gidr   r   r   rJ   items)r   ax1ax1aax2ax3gdicidxr   r   r'   r(   r   r*   r   r+   test_gid   s@   



r   c                   C   s   t jt ddd d S )Nsvgztight)r   bbox_inches)r   r   r   r*   r*   r*   r+   test_savefig_tight   s   r   c                  C   s   t  \} }|g dg d}|g d t ddgddg\}|d t }| j|d	d
 | }dD ]
}d| |v sAJ q7d S )Nr   r   r:      )zhttp://example.com/foozhttp://example.com/barNr.   r   r   r:   zhttp://example.com/bazr   r   )s   foos   bars   bazs   http://example.com/)	r   r   r5   set_urlsrT   set_urlr   r   r   )r   r    r2   pr$   vr*   r*   r+   rK      s   
rK   c                 C   s(  |  dd t \}}|g dg d t|j D ]\}}|d|  qt \}}|g dg d t|j D ]\}}|jd|  |j	d|  qAt
 }|j|dd | }t
 }|j|dd | }tt|j D ]}d| d|v sJ q}||ksJ d S )	NSOURCE_DATE_EPOCH19680801r   r   zhttp://example.com/r   r   ry   )setenvr   r   r5   r   yaxisget_major_ticksr   label1label2r   r   r   ranger   encode)ru   fig1r    itickfig2b1b2r*   r*   r+   test_url_tick   s&   r   c              	   C   s  |  dd t \}}t }|j|dd |  }W d    n1 s'w   Y  tj|v s3J d|v s9J d|v s?J d|v sEJ t }|j|dd d d d dd	 |  }W d    n1 sfw   Y  tj|vsrJ d|vsxJ d|vs~J d|vsJ d S )
Nr   r   r   r   
1970-08-16image/svg+xml
StillImageDateCreatorFormatTyper   metadata)	r   r   r   r   r   r   rJ   rn   __version__)ru   r   r    r'   r(   r*   r*   r+   test_svg_default_metadata  s(   
r   c              
   C   s  |  dd tjdddd}d}d}d	}d
}t \}}|D ]j}t }	|j|	d| d id |	 	 }
W d    n1 s@w   Y  t
jj|
}|d| d| d| d\}|D ])}|d| | }||krs|rrJ q^|\}t
jjj|dd}|| |v sJ q^qd S )Nr   r   r   r   r   )creatordater   type{http://www.w3.org/2000/svg}-{http://www.w3.org/1999/02/22-rdf-syntax-ns#} {http://creativecommons.org/ns#}"{http://purl.org/dc/elements/1.1/}r   r   ./	metadata/zRDF/Workunicode)r`   )r   rn   r   r   r   r   r   titler   rJ   r   etreeElementTree
fromstringfindalltostring)ru   metadata_containsSVGNSRDFNSCCNSDCNSr   r    namer'   r(   rootworkkeydataxmlstrr*   r*   r+   test_svg_clear_default_metadata'  s4    r	  c               	   C   s   t  \} }t }| j|dd d d d dd |  }W d    n1 s'w   Y  d}tjj	|}|
d| dr@J d S )Nr   r   r   r   r   r   )r   r   r   r   r   rJ   r   r   r   r   r   )r   r    r'   r(   r   r  r*   r*   r+   test_svg_clear_all_metadataH  s   
r
  c                     sd  g d} g d}t dddt  ddddddgdd	d
d | D dd |D }t \}}t }|j|d|d |  }W d    n1 sLw   Y  d}d d}d}	tj	j
|}
|
d| d  d\}dd |
d| dD }||d gksJ  fdd|d| d|	 dD }||d gksJ dg| D ]$}|dkrqdd |d| d|	 |  D }||| gksJ q|D ]*}|d krqd!d |d| d|	 |  d"| d#|	 d
D }||| ksJ qd$d |d| d|	 d%D }|d&gksJ d'd |d| d|	 d(  d)  d*	D }||d  ks0J d S )+N)Coverage
IdentifierLanguageRelationSourceTitler   )Contributorr   Keywords	PublisherRightsi     r.   r;   r   zdescription
text)r   Descriptionc                 S   s   i | ]}|| d qS )z foor*   .0r0   r*   r*   r+   
<dictcomp>`  s    z%test_svg_metadata.<locals>.<dictcomp>c                 S   s"   i | ]}|| d | dgqS )z barz bazr*   r  r*   r*   r+   r  a  s   " r   r   r   r   r   r   r   r   RDFc                 S      g | ]}|j qS r*   rg   r  noder*   r*   r+   
<listcomp>r      z%test_svg_metadata.<locals>.<listcomp>r   r  c                    s   g | ]
}|j   d  qS )resource)attribr  r   r*   r+   r  t  s    zWork/r   r   r  c                 S   r  r*   r  r  r*   r*   r+   r  z  s    
r  c                 S   r  r*   r  r  r*   r*   r+   r    s    /zAgent/c                 S   r  r*   r  r  r*   r*   r+   r    r   r   z1968-08-01/1968-08-02T01:02:03c                 S   r  r*   r  r  r*   r*   r+   r    r   zsubject/zBag/li)datetimer   r   r   r   r   r   rJ   r   r   r   r   r   lower)single_valuemulti_valuer   r   r    r'   r(   r   r  r  r  rdftitlestypesr0   valuesdatesr*   r#  r+   test_svg_metadataX  sd   
$""r/  )+r&  ior   rz   rp   xml.etree.ElementTreer   xml.parsers.expatnumpyr   rr   
matplotlibrn   r   matplotlib.figurer   matplotlib.pyplotpyplotr   matplotlib.testing.decoratorsr   markskipifcheckdep_usetexneeds_usetexr,   r7   rF   rG   rX   r[   rw   r   r}   r   r   r   rK   r   r   r	  r
  r/  r*   r*   r*   r+   <module>   sR    


	
	



?"!