U
    \	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 qPt	 }	| j
|	dd |	 }
W 5 Q R X tjj }||
 d S )	Nr      2   ko)yerrfmtFsvgformat)pltsubplotsnpZlinspacepisinZ	ones_likeZerrorbarZset_visibler   savefiggetvaluexmlparsersexpatParserCreateParse)figaxxyr   abcZartistfdbufparser r&   E/tmp/pip-unpacked-wheel-wjyw_3jo/matplotlib/tests/test_backend_svg.pytest_visibility   s    

r(   zfill_black_with_alpha.svg)Zremove_textc                  C   s0   t  \} }|jdddgdddgdddd d S )Nr   g?   ki'  )r   r   r"   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    $r:   c               	   C   s`   t  } d}| jd|d t  }| j|dd |  }W 5 Q R X d|}||ks\td S )Nz$http://test_text_urls.matplotlib.orgtest_text_urls)urlr   r   z<a xlink:href="{0}">)	r   figureZsuptitler   r   r   decoder   AssertionError)r   test_urlr#   r$   expectedr&   r&   r'   r;   8   s    
r;   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   r5   
set_xlabel
set_ylabel	set_titler.   r&   r&   r'   test_bold_font_outputF   s
    
rL   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 )	Nr3   svg.fonttyperB   rC   rD   rE   rF   rG   )	r   rcParamsr   rH   r   r5   rI   rJ   rK   r.   r&   r&   r'   (test_bold_font_output_with_none_fonttypeO   s    

rO      )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@-rrB   )r"   lwr)   r!   Tr"   rU   
rasterized)r   r5   cosr   r   rH   Zfig_testZfig_reftr   r   Zax_refZax_testr&   r&   r'   test_rasterizedY   s    

r[   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   rQ   rR      gg?rS   rT   rB   TrV   r)   r!   Fr2   gm)r"   rU   rW   Zzorderg?gffffff?g333333?)r   r5   rX   r   r   set_xlimset_ylimrH   rY   r&   r&   r'   test_rasterized_orderingh   s"    

ra   c                  C   st  dd } t  }|ddd}|  tdD ]}|jddgd|gddd	 q.| |d
dks`t| |ddksrtt  }|ddd}|  tdD ]}|jddgd|gddd	 q| |d
dkst| |ddkst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sRt| |ddksft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st| |ddkstt  }
d|
_|
ddd}|  tdD ] }|jddgd|gddd	 q&| |
d
dks\t| |
ddksptd S )Nc              	   S   s<   t   }| j|dd |  }W 5 Q R X |d| S )Nr   r   <)r   r   r   r>   count)r   tagr#   r$   r&   r&   r'   	count_tag   s    z%test_count_bitmaps.<locals>.count_tagr)   r1   r   rP   zb-F)rW   imagepath   T)	r   r=   add_subplotZset_axis_offrangerH   r?   Zset_rasterizedZsuppressComposite)re   fig1ax1nfig2ax2Zfig3ax3Zfig4Zax4Zfig5Zax5r&   r&   r'   test_count_bitmaps   sP    
rq   c              
   C   s|   dd }|  tjd| tjddd t \}}|ddd t	 *}t
t |j|d	d
 W 5 Q R X W 5 Q R X 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mplrcr   r   rx   tempfileTemporaryFilepytestZraises
ValueErrorr   )monkeypatchrv   r   r   Ztmpfiler&   r&   r'   test_missing_psfont   s    r   defaultc               	   C   s   t  } | jddddd t }| j|dd | }W 5 Q R X tjj|}d}d}t	|
d	| d
| ddksztd| |d	| dj kstd S )Nrz   z\textwonTry   r   r   zhttp://www.w3.org/2000/svgzSFSS3583-8ez.//{z}path[@d][@id="z"]r)   #z}use)r   rx   r   r   r   r   etreeElementTree
fromstringlenfindallr?   findattribvalues)r   r#   r$   treensZwon_idr&   r&   r'   test_unicode_won   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 5 Q R X | |kstdD ]}d| d|kstqd S )Nr3   rM   zUnlikely to appear by chancez
2019-06-30r)   z
2019-01-01z
2019-12-31r   r2   r   r   )familyZweightZstretchstylesizezfont-:)r   rN   r   rx   r   Z
datetime64r_   r`   r   r   seekreadr>   r?   )rA   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d
ddgd
ddgdd |j	ddd
gdd |
  | }|d
ddgd
ddg | jddd}|	dddgd
ddg | jddd}|	d
dgd
dgd
dg | j  i }t| jddD ]:\}}| rd|jj d| }|||< || qt  }	| j|	dd |	  }
W 5 Q R X  fdd}| D ]$\}}|||r||
kstqdS )z+Test that object gid appears in output svg.r   )	OffsetBox)Tick   g      ?g       @g      @auto)Zaspectr)   r2   r\   Z	myscatter)labelZmyplot   Zpolar)Z
projectiong      ?   Z3dT)Zinclude_selfZtest123_r   r   c                    s   t | rdS t |tjr8| dkr*dS |jd kr8dS t |tjr| \}}t|t|  krldkrtn ndS t|dr|jd krdS t |r|	 }|dkrdS |
 }|t|k s|t|krdS dS )NF r)   axesr   T)
isinstancer   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>.includeN)Zmatplotlib.offsetboxr   Zmatplotlib.axisr   r   r=   ri   r6   r-   rH   ZlegendZtwinxbarZcanvasZdraw	enumerateZfindobjZget_visible	__class____name__Zset_gidr   r   r   r>   itemsr?   )r   rl   Zax1aro   rp   Zgdicidxr   r   r#   r$   r   r&   r   r'   test_gid   s8    


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  \} }|dddgdddg}|ddd g t ddgddg\}|d	 t }| j|d
d | }dD ]}d| |kstt	qtd S )Nr)   r2   r\   r   r1   rh   zhttp://example.com/foozhttp://example.com/barzhttp://example.com/bazr   r   )s   foos   bars   bazs   http://example.com/)
r   r   r-   Zset_urlsrH   set_urlr   r   r   r?   )r   r   r,   pr!   vr&   r&   r'   r@   2  s    
r@   c                 C   s6  |  dd t \}}|dddgdddg t|j D ]\}}|d	|  q>t \}}|dddgdddg t|j D ],\}}|jd	|  |j	d	|  qt
 }|j|d
d | }t
 }|j|d
d | }tt|j D ] }d	| d|kstq||ks2td S )NSOURCE_DATE_EPOCH19680801r)   r2   r\   r   r1   rh   zhttp://example.com/r   r   ascii)setenvr   r   r-   r   ZyaxisZget_major_ticksr   label1label2r   r   r   rj   r   encoder?   )r   rk   r   iZtickrn   Zb1Zb2r&   r&   r'   test_url_tickF  s&    r   c              	   C   s   |  dd t \}}t  }|j|dd |  }W 5 Q R X tj|ksRt	d|ks^t	d|ksjt	d|ksvt	t ,}|j|dd d d d dd	 |  }W 5 Q R X tj|kst	d|kst	d|kst	d|kst	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   r>   r|   __version__r?   )r   r   r   r#   r$   r&   r&   r'   test_svg_default_metadataa  s&     
r   c              
   C   s  |  dd tjdddd}d}d}d	}d
}t \}}|D ]}t *}	|j|	d| d id |	 	 }
W 5 Q R X t
jj|
}|d| d| d| d\}|D ]R}|d| | }||kr|rtq|\}t
jjj|dd}|| |kstqq<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Workunicode)rr   )r   r|   r   r   r   r   r   titler   r>   r   r   r   r   r   r?   tostring)r   Zmetadata_containsSVGNSRDFNSCCNSDCNSr   r   namer#   r$   rootZworkkeydataZxmlstrr&   r&   r'   test_svg_clear_default_metadata  s0      r   c               	   C   sp   t  \} }t ,}| j|dd d d d dd |  }W 5 Q R X d}tjj	|}|
d| drltd S )Nr   r   r   r   r   r   )r   r   r   r   r   r>   r   r   r   r   r   r?   )r   r   r#   r$   r   r   r&   r&   r'   test_svg_clear_all_metadata  s     
r   c                     sp  dddddddg} dd	d
ddg}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 5 Q R X d}d d}d}	tj	j
|}
|
d| d  d\}d d! |
d| d"D }||d gkst fd#d!|d| d$|	 d%D }||d gks>td2| D ]P}|dkrXqFd'd! |d| d$|	 |  D }||| gksFtqF|D ]\}|d
krqd(d! |d| d$|	 |  d)| d*|	 d"
D }||| kstqd+d! |d| d$|	 d,D }|d-gks,td.d! |d| d$|	 d/  d0  d1	D }||d
 ksltd S )3NZCoverageZ
IdentifierZLanguageZRelationZSourceZTitler   ZContributorr   ZKeywordsZ	PublisherZRightsi     r)   r2   r\   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   s   g | ]
}|j qS r&   rx   r   noder&   r&   r'   
<listcomp>  s     z%test_svg_metadata.<locals>.<listcomp>r   c                    s   g | ]}|j   d  qS )resource)r   r   r   r&   r'   r     s   zWork/r   r   c                 S   s   g | ]
}|j qS r&   r   r   r&   r&   r'   r     s   c                 S   s   g | ]
}|j qS r&   r   r   r&   r&   r'   r     s   /zAgent/c                 S   s   g | ]
}|j qS r&   r   r   r&   r&   r'   r     s     r   z1968-08-01/1968-08-02T01:02:03c                 S   s   g | ]
}|j qS r&   r   r   r&   r&   r'   r     s     zsubject/zBag/li)r   )datetimer   r   r   r   r   r   r>   r   r   r   r   r   r?   lower)Zsingle_valueZmulti_valuer   r   r   r#   r$   r   r   r   r   rdftitlestypesr*   r   datesr&   r   r'   test_svg_metadata  sf    
 


$""r   ).r   ior   r~   xml.etree.ElementTreer   xml.parsers.expatZnumpyr   r   Z
matplotlibr|   r   Zmatplotlib.figurer   Zmatplotlib.pyplotZpyplotr   Zmatplotlib.testing.decoratorsr   r   markZskipifZcheckdep_usetexZneeds_usetexr(   r/   r:   r;   rL   rO   r[   ra   rq   r   r   r   r   r   r   r@   r   r   r   r   r   r&   r&   r&   r'   <module>   sX   




	

9

?"!