U
    d»{j¦B  ã                   @   s8  d dl Z d dlm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mZ d dlmZ d dlmZ d dlmZmZ d dlmZ d dlm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j$ %d#¡ed$d%„ ƒƒZ&d&d'„ Z'd(d)„ Z(d*d+„ Z)d,d-„ Z*d.d/„ Z+d0d1„ Z,d2d3„ Z-d4d5„ Z.d6d7„ Z/ed8gd9d�d:d;„ ƒZ0ed<gƒd=d>„ ƒZ1ej2 3d?d@dAie4dBfd@dAgie4dCfdDdAie4dEfdDdAgie4dFfdGdAie4dHfdGdAgie4dIfdJdAie4dKfdLdAie4dMfdNdOie5dPfg	¡dQdR„ ƒZ6dSdT„ Z7dS )Ué    N)ÚBytesIO)ÚPath)ÚFigure)ÚText)Úcheck_figures_equalÚimage_comparison)Úneeds_usetex)Úfont_managerc               	   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(   ú`/var/www/html/bwave/python/venv/lib/python3.8/site-packages/matplotlib/tests/test_backend_svg.pyÚtest_visibility   s    

r*   zfill_black_with_alpha.svgT)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    r1   Znoscalec                  C   sR   t  t  ddd¡t  ddd¡¡\} }t  |d ¡}t ¡ \}}|j|ddd� d S )Néûÿÿÿé   r+   é   Ú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>   6   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   r8   Ú
set_xlabelÚ
set_ylabelÚ	set_titler0   r(   r(   r)   Útest_bold_font_outputD   s
    
rO   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 )	Nr6   úsvg.fonttyperE   rF   rG   rH   rI   rJ   )	r   ÚrcParamsr   rK   r   r8   rL   rM   rN   r0   r(   r(   r)   Ú(test_bold_font_output_with_none_fonttypeM   s    

rR   é   )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@ú-ÚrrE   )r$   Úlwr+   r#   T©r$   rX   Ú
rasterized)r   r8   Úcosr   r   rK   ©Zfig_testZfig_refÚtr    r!   Zax_refZax_testr(   r(   r)   Útest_rasterizedW   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   rT   rU   é   gš™™™™™ñ¿gš™™™™™ñ?rV   rW   rE   TrY   r+   r#   Fr4   ÚgÚm)r$   rX   rZ   ZzordergÍÌÌÌÌÌô?gffffffö?g333333ó?)r   r8   r[   r   r   Úset_xlimÚset_ylimrK   r\   r(   r(   r)   Útest_rasterized_orderingf   s"    

rd   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sÊt‚| |dƒdksÜt‚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�sæt‚| |dƒdk�sút‚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   rA   Úcount)r   Útagr%   r&   r(   r(   r)   Ú	count_tag~   s    z%test_count_bitmaps.<locals>.count_tagr+   r3   r   rS   zb-F)rZ   ÚimageÚpathé   T)	r   r@   Úadd_subplotZset_axis_offÚrangerK   rB   Zset_rasterizedZsuppressComposite)rh   Úfig1Úax1ÚnÚfig2Úax2Zfig3Úax3Zfig4Zax4Zfig5Zax5r(   r(   r)   Útest_count_bitmaps}   sP    
rt   Ú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s t‚d S )Nç      à?z\textwonT)Zusetexr   r   zhttp://www.w3.org/2000/svgzSFSS3583-8ez.//{z}path[@d][@id="z"]r+   ú#z}use)r   Útextr   r   r   r   ÚetreeÚElementTreeÚ
fromstringÚlenÚfindallrB   ÚfindÚattribÚvalues)r   r%   r&   Ú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 5 Q R X | |kr d|ks¤t‚d S )Nr6   Z	condensed)rP   zfont.stretchzUnlikely to appear by chancez
2019-06-30r+   z
2019-01-01z
2019-12-31r   r4   r   r   )r   rQ   Úupdater   rx   r   Z
datetime64rb   rc   r   r   ÚseekÚreadrA   rB   )rD   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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�s†t‚�q†dS )z+Test that object gid appears in output svg.r   )Ú	OffsetBox)ÚTickéƒ   g      ð?g       @g      @Úauto)Zaspectr+   r4   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ƒr6| ¡ dkr(dS |jd kr6dS t |tjƒrŠ| ¡ \}}t|ƒt|ƒ  krjdkrrn ndS t|dƒr†|jd krŠdS t |ˆƒrÌ| 	¡ }|dkr¨dS | 
¡ }|t|ƒk sÈ|t|ƒkrÌdS dS )NFÚ r+   Úaxesr   T)Ú
isinstancer   Zget_textr‘   r   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@   rl   r9   r/   rK   ZlegendZtwinxÚbarZcanvasZdrawÚ	enumerateZfindobjZget_visibleÚ	__class__Ú__name__Zset_gidr   r   r   rA   ÚitemsrB   )r   ro   Zax1arr   rs   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+   r4   r_   r
   r3   rk   zhttps://example.com/foozhttps://example.com/barzhttps://example.com/bazr   r   )s   foos   bars   bazs   https://example.com/)
r   r   r/   Zset_urlsrK   Úset_urlr   r   r   rB   )r   r   r.   Úpr#   Úvr(   r(   r)   rC     s    
rC   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	|› �¡ qŠt
ƒ }|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+   r4   r_   r
   r3   rk   zhttps://example.com/r   r   Úascii)Úsetenvr   r   r/   rž   ZyaxisZget_major_ticksr¥   Úlabel1Úlabel2r   r   r   rm   r|   ÚencoderB   )Úmonkeypatchrn   r   ÚiZtickrq   Úb1Úb2r(   r(   r)   Útest_url_tick2  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s¼t	‚d|ksÈt	‚d|ksÔt	‚d|ksàt	‚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   rA   ÚmplÚ__version__rB   )r¯   r   r   r%   r&   r(   r(   r)   Útest_svg_default_metadataM  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Ò|r¨t‚q¨|\}t
jjj|dd�}|| |ks¨t‚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WorkÚunicode)Úencoding)r«   r¾   r¿   r   r   r   r   Útitler   rA   r   ry   rz   r{   r}   rB   Útostring)r¯   Zmetadata_containsÚSVGNSÚRDFNSÚCCNSÚDCNSr   r   Únamer%   r&   ÚrootZworkÚkeyÚdataZxmlstrr(   r(   r)   Útest_svg_clear_default_metadatao  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   rA   r   ry   rz   r{   r}   rB   )r   r   r%   r&   rÍ   rÒ   r(   r(   r)   Útest_svg_clear_all_metadata�  s     ÿ
rÖ   c                     sj  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�s8t‚d2| •D ]P}|dk�rR�q@d'd!„ |
 d|› d$|› | ¡ › �¡D ƒ}||| gk�s@t‚�q@|D ]\}|d
k�r¨�q–d(d!„ |
 d|› d$|› | ¡ › d)|› d*|› d"�
¡D ƒ}||| k�s–t‚�q–d+d!„ |
 d|› d$|› d,�¡D ƒ}|d-gk�s&t‚d.d!„ |
 d|› d$|› d/ˆ › d0ˆ › d1�	¡D ƒ}||d
 k�sft‚d S )3NZCoverageZ
IdentifierZLanguageZRelationZSourceÚTitler»   ZContributorr¹   ÚKeywordsZ	PublisherZRightsi°  é   r+   r4   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/Zli)rÚ   )ÚdatetimerÁ   r   r@   r   r   r   rA   r   ry   rz   r{   r}   rB   Úlower)Zsingle_valueZmulti_valuer½   r   r%   r&   rÍ   rÏ   rÐ   rÒ   ZrdfÚtitlesÚtypesr,   r€   Údatesr(   rã   r)   Útest_svg_metadata   sf    
 ÿÿýû
ÿ
ÿ
$ÿþ""ÿrê   zmulti_font_aspath.svggÍÌÌÌÌÌü?c                  C   sh   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 )NúWenQuanYi Zen Hei©Úfamilyúwqy-zenhei.ttcúFont may be missingÚfontúDejaVu Sansé   ©rí   Úsizer   rj   ©Zfonttypeç333333Ã?çffffffÞ?õ"   There are å‡ ä¸ªæ±‰å­— in between!)ÚfmÚFontPropertiesr   ÚfindfontrÑ   ÚpytestÚskipr   Úrcr@   rx   ©Úfpr   r(   r(   r)   Útest_multi_font_type3Ù  s    
r  zmulti_font_astext.svgc                  C   sh   t jdgd�} tt  | ¡ƒjdkr,t d¡ t ¡ }tj	ddd� tj	dd	dgd
d� | 
ddd¡ d S )Nrë   rì   rî   rï   r   r6   rõ   rð   rñ   rò   ró   rö   r÷   rø   )rù   rú   r   rû   rÑ   rü   rý   r   r@   rþ   rx   rÿ   r(   r(   r)   Útest_multi_font_type42æ  s    
r  zmetadata,error,messager¸   r+   z,Invalid type for Date metadata. Expected strz1Invalid type for Date metadata. Expected iterablerØ   z0Invalid type for Keywords metadata. Expected strz5Invalid type for Keywords metadata. Expected iterabler¹   z/Invalid type for Creator metadata. Expected strz4Invalid type for Creator metadata. Expected iterabler×   z-Invalid type for Title metadata. Expected strrº   z.Invalid type for Format metadata. Expected strZFooZBarzUnknown metadata keyc              
   C   sH   t j||d��0 tƒ �}t ¡ }|j|d| d� W 5 Q R X W 5 Q R X d S )N)Úmatchr   r¼   )rü   Zraisesr   r   r@   r   )r½   ÚerrorÚmessager%   r   r(   r(   r)   Útest_svg_incorrect_metadataó  s    r  c               	   C   sV   t  ¡ } | jddddd� tƒ �,}| j|dd� | ¡  ¡ }d|ksHt‚W 5 Q R X d S )Nrv   z<'"&>)r—   r   r   z&lt;&apos;&quot;&amp;&gt;")r   r@   rx   r   r   r   rA   rB   )r   r%   r&   r(   r(   r)   Útest_svg_escape  s    r  )8rå   Úior   Úpathlibr   Zxml.etree.ElementTreer   Zxml.parsers.expatrü   Únumpyr   Z
matplotlibr¾   Zmatplotlib.figurer   Zmatplotlib.textr   Zmatplotlib.pyplotZpyplotr   Zmatplotlib.testing.decoratorsr   r   Zmatplotlib.testing._markersr   r	   rù   r*   r1   r=   r>   rO   rR   r^   rd   rt   ÚstyleÚcontextrƒ   r‡   r£   r¤   rC   r³   rÀ   rÕ   rÖ   rê   r  r  ÚmarkZparametrizeÚ	TypeErrorÚ
ValueErrorr  r  r(   r(   r(   r)   Ú<module>   sŽ   



	

:
?"!9


ÿÿ
ÿÿ
ÿÿÿð
