o
    :a<                     @   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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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dd Ze dd Z 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/d0 Z*d1d2 Z+d3d4 Z,d5d6 Z-d7d8 Z.dS )9    N)BytesIO)dviread)Figure)image_comparisoncheck_figures_equalTz"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)yerrZfmtFsvgformat)pltsubplotsnpZlinspaceZpisinZ	ones_likeZerrorbarZset_visibler   savefiggetvaluexmlparsersZexpatZParserCreateZParse)figaxxyr   abcZartistfdbufparser r!   C/usr/lib/python3/dist-packages/matplotlib/tests/test_backend_svg.pytest_visibility   s   


r#   zfill_black_with_alpha.svg)Zremove_textc                  C   s,   t  \} }|jg dg ddddd d S )N)r   皙?   )r   r   r   kr$   i'  )r   r   r   Zalphas)r   r   scatterr   r   r!   r!   r"   test_fill_black_with_alpha)   s    r*   Znoscalec                  C   sR   t t dddt ddd\} }t |d }t \}}|j|ddd d S )N   r%      Zgraynone)Zcmapinterpolation)r   Zmeshgridaranger   r   r   imshow)XYZr   r   r!   r!   r"   test_noscale/   s   $r5   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)Zurlr   r   z<a xlink:href="{0}">)r   figureZsuptitler   r   r   decoder   )r   test_urlr   r   expectedr!   r!   r"   r6   8   s   
r6   zbold_font_output.svgc                  C   sN   t  \} }|tdtd |d |jddd |jddd d S )N
   nonbold-xlabelbold-ylabelboldZ
fontweight
bold-title)r   r   plotr   r0   
set_xlabel
set_ylabel	set_titler)   r!   r!   r"   test_bold_font_outputF   s
   
rE   z'bold_font_output_with_none_fonttype.svgc                  C   sX   dt jd< t  \} }|tdtd |d |jddd |jddd d S )	Nr.   svg.fonttyper;   r<   r=   r>   r?   r@   )	r   rcParamsr   rA   r   r0   rB   rC   rD   r)   r!   r!   r"   (test_bold_font_output_with_none_fonttypeO   s   

rH      )Ztolc                 C   s   t ddd }t |}t |}| }|j||dddd |j|d |dd	dd |  }|j||dddd
d |j|d |dd	dd
d d S )Nr   d   ffffff@-rr;   )r   lwr%   r   Tr   rN   
rasterized)r   r0   cosr   r   rA   Zfig_testZfig_reftr   r   Zax_refZax_testr!   r!   r"   test_rasterizedY   s   

rT   c              	   C   s8  t ddd }t |}t |}| }|dd |dd |j||ddd	d
d |j|d |ddd	dd |j|d |ddd	d
d |j|d |ddd	d
d |  }|dd |dd |j||ddd	d
dd |j|d |ddd	d
dd |j|d |ddd	d
dd |j|d |ddd	ddd d S )Nr   rJ   rK      gg?rL   rM   r;   TrO   r%   r   Fr-   gm)r   rN   rP   Zzorderg?gffffff?g333333?)r   r0   rQ   r   r   set_xlimset_ylimrA   rR   r!   r!   r"   test_rasterized_orderingh   s"   

 rZ   c                  C   sh  dd } t  }|ddd}|  tdD ]}|jddgd|gddd	 q| |d
dks0J | |ddks9J t  }|ddd}|  tdD ]}|jddgd|gddd	 qL| |d
dkseJ | |ddksnJ t  }|ddd}|  tdD ]}|jddg|dgddd	 |jddgd|gddd	 q| |d
dksJ | |ddksJ t  }|ddd}	|	  |	d tdD ]}|	jddg|dgddd	 |	jddgd|gddd	 q| |d
dksJ | |ddksJ t  }
d|
_|
ddd}|  tdD ]}|jddgd|gddd	 q| |
d
dks(J | |
ddks2J d S )Nc                 S   sP   t  }| j|dd |  }W d    n1 sw   Y  |d| S )Nr   r   <)r   r   r   r8   count)r   tagr   r   r!   r!   r"   	count_tag   s
   z%test_count_bitmaps.<locals>.count_tagr%   r,   r   rI   zb-F)rP   Zimagepath   T)r   r7   add_subplotZset_axis_offrangerA   Zset_rasterizedZsuppressComposite)r^   fig1ax1nfig2ax2Zfig3ax3Zfig4Zax4Zfig5Zax5r!   r!   r"   test_count_bitmaps   sP   
ri   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 )NZtexfontz	Some Font)ZtexnameZpsnameZeffectsencodingfilename)r   ZPsFont)argskwargsr!   r!   r"   psfont   s   z#test_missing_psfont.<locals>.psfont__getitem__textTZusetex      ?Zhellor   r   N)setattrr   Z
PsfontsMapmplZrcr   r   rp   tempfileZTemporaryFilepytestZraises
ValueErrorr   )monkeypatchrn   r   r   Ztmpfiler!   r!   r"   test_missing_psfont   s   Pry   defaultc                  C   s   t  } | jddddd t }| j|dd | }W d    n1 s%w   Y  tjj|}d}d}t	|
d	| d
| ddksGJ d| |d	| dj v sZJ d S )Nrr   z\textwonTrq   r   r   zhttp://www.w3.org/2000/svgzSFSS3583-8ez.//{z}path[@d][@id="z"]r%   #z}use)r   rp   r   r   r   r   etreeElementTree
fromstringlenfindallfindattribvalues)r   r   r   ZtreensZwon_idr!   r!   r"   test_unicode_won   s   
$*r   c                  C   s   t jddd d} t  \}}|tdd|  |tdtd |d	d
 t	 }|j
|dd |d	 |  }W d    n1 sMw   Y  | |v rZd|v s\J d S )Nr.   Z	condensed)rF   zfont.stretchzUnlikely to appear by chancez
2019-06-30r%   z
2019-01-01z
2019-12-31r   r-   r   r   )r   rG   updater   rp   r   Z
datetime64rX   rY   r   r   seekreadr8   )r:   r   r   r   r   r!   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)Zaspectr%   r-   rU   Z	myscatter)Zlabel)r-   rU   r%   Zmyplot   Zpolar)Z
projection)r   g      ?rU      Z3dr%   r-   T)Zinclude_selfZ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   ZTextZget_textr   ZLine2Dget_datar   hasattrZget_locZget_view_intervalminmax)gidobjZxdataZydatalocvir   r   r!   r"   include  s,   


ztest_gid.<locals>.include)Zmatplotlib.offsetboxr   Zmatplotlib.axisr   r   r7   ra   r1   r(   rA   ZlegendZtwinxZbarZcanvasZdraw	enumerateZfindobjZget_visible	__class____name__Zset_gidr   r   r   r8   items)r   rd   Zax1arg   rh   Zgdicidxr   r   r   r   r   r!   r   r"   test_gid   s@   



r   c                   C   s   t jt ddd d S )NZsvgzZtight)r   Z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,   r`   )zhttp://example.com/foozhttp://example.com/barNr%   rU   r`   r,   zhttp://example.com/bazr   r   )s   foos   bars   bazs   http://example.com/)	r   r   r(   Zset_urlsrA   set_urlr   r   r   )r   r   r'   pr   vr!   r!   r"   r9   0  s   
r9   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   ascii)setenvr   r   r(   r   ZyaxisZget_major_ticksr   Zlabel1Zlabel2r   r   r   rb   r   encode)rx   rc   r   iZtickrf   Zb1Zb2r!   r!   r"   test_url_tickD  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CreatorZFormatTyper   metadata)	r   r   r   r   r   r   r8   rt   __version__)rx   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   )Z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/ZWorkZunicode)rj   )r   rt   r   r   r   r   r   titler   r8   r   r|   r}   r~   r   Ztostring)rx   Zmetadata_containsSVGNSRDFNSCCNSDCNSr   r   namer   r   rootZworkkeydataZ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   r8   r   r|   r}   r~   r   )r   r   r   r   r   r   r!   r!   r"   test_svg_clear_all_metadata  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)ZCoverageZ
IdentifierZLanguageZRelationZSourceTitler   )ZContributorr   KeywordsZ	PublisherZRightsi     r%   r-   rU   zdescription
text)r   Descriptionc                 S   s   i | ]}|| d qS )z foor!   .0r&   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     s   " r   r   r   r   r   r   r   r   ZRDFc                 S      g | ]}|j qS r!   rp   r   Znoder!   r!   r"   
<listcomp>      z%test_svg_metadata.<locals>.<listcomp>r   r   c                    s   g | ]
}|j   d  qS )Zresource)r   r   r   r!   r"   r     s    zWork/r   r   r   c                 S   r   r!   r   r   r!   r!   r"   r     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/Zli)datetimer   r   r   r   r   r   r8   r   r|   r}   r~   r   lower)Zsingle_valueZmulti_valuer   r   r   r   r   r   r   r   r   ZrdfZtitlestypesr&   r   Zdatesr!   r   r"   test_svg_metadata  sd   
$""r   )/r   ior   ru   Zxml.etree.ElementTreer   Zxml.parsers.expatZnumpyr   rv   Z
matplotlibrt   r   Zmatplotlib.figurer   Zmatplotlib.pyplotZpyplotr   Zmatplotlib.testing.decoratorsr   r   ZmarkZskipifZcheckdep_usetexZneeds_usetexr#   r*   r5   r6   rE   rH   rT   rZ   ri   ry   Zstylecontextr   r   r   r   r9   r   r   r   r   r   r!   r!   r!   r"   <module>   sZ    




	

9

?"!