a
    
dFR                     @   s  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	lmZ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%ed"d#d$gd%d&d' Z&d(d) Z'ej()d*ed+d, Z*d-d. Z+d/d0 Z,d1d2 Z-d3d4 Z.d5d6 Z/d7d8 Z0d9d: Z1d;d< Z2d=d> Z3ed?gd@ddAdB Z4edCgdDdE Z5ej67dFdGdHie8dIfdGdHgie8dJfdKdHie8dLfdKdHgie8dMfdNdHie8dOfdNdHgie8dPfdQdHie8dRfdSdHie8dTfdUdVie9dWfg	dXdY Z:dZd[ Z;ej67d\g d]ej67d^dd_gd`da Z<dbdc Z=dS )d    N)BytesIO)Path)Figure)Text)check_figures_equalimage_comparison)needs_usetex)font_manager)OffsetImageAnnotationBboxc                  C   s   t  \} }tddtj d}t|}t|}|j|||dd\}}}|D ]}|d qPt	 &}	| j
|	dd |	 }
W d    n1 s0    Y  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*   j/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/matplotlib/tests/test_backend_svg.pytest_visibility   s    

&r,   zfill_black_with_alpha.svgT)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&   alphas)r   r   scatterr    r!   r*   r*   r+   test_fill_black_with_alpha(   s    r4   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   st   t  } d}| jd|d t *}| j|dd |  }W d    n1 sP0    Y  d|}||v spJ 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   )r    test_urlr'   r(   expectedr*   r*   r+   r@   7   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   r:   
set_xlabel
set_ylabel	set_titler3   r*   r*   r+   test_bold_font_outputE   s
    
rP   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 )	Nr8   svg.fonttyperF   rG   rH   rI   rJ   rK   )	r   rcParamsr   rL   r   r:   rM   rN   rO   r3   r*   r*   r+   (test_bold_font_output_with_none_fonttypeN   s    

rS      )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@-rrF   )r&   lwr.   r%   Tr&   rZ   
rasterized)r   r:   cosr   r   rL   fig_testfig_reftr"   r#   ax_refax_testr*   r*   r+   test_rasterizedX   s    

rd   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   rV   rW      gg?rX   rY   rF   Tr[   r.   r%   Fr7   gm)r&   rZ   r\   zorderg?gffffff?g333333?)r   r:   r]   r   r   set_xlimset_ylimrL   r^   r*   r*   r+   test_rasterized_orderingg   s"    

rk   r6   r   Zpdf)rU   
extensionsc                 C   s   ddg}|  }|j|d g|d gdddd tjd}tjj||d	d
}|| |   }|j|d g|d gddddd tjd}tjj||d	d
}|| d S )Ng?r   r.   r"   Zblackr7   )markerr&   rh   r<   g @)rh   T)rm   r&   rh   r\   )r   rL   mplZ	offsetboxZTextArear   
add_artist)r_   r`   locrb   r%   Zaboxrc   r*   r*   r+   test_prevent_rasterization~   s     
rq   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`J | |ddksrJ t  }|ddd}|  tdD ]}|jddgd|gddd	 q| |d
dksJ | |ddksJ 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sRJ | |ddksfJ 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spJ d S )Nc                 S   sP   t  *}| j|dd |  }W d    n1 s60    Y  |d| S )Nr   r   <)r   r   r   rC   count)r    tagr'   r(   r*   r*   r+   	count_tag   s    *z%test_count_bitmaps.<locals>.count_tagr.   r6   r   rT   zb-F)r\   imagepath   T)r   rB   add_subplotZset_axis_offrangerL   Zset_rasterizedZsuppressComposite)ru   fig1ax1nfig2ax2Zfig3ax3Zfig4Zax4Zfig5Zax5r*   r*   r+   test_count_bitmaps   sP    
r   defaultc                  C   s   t  } | jddddd t &}| j|dd | }W d    n1 sJ0    Y  tjj|}d}d}t	|
d	| d
| ddksJ d| |d	| dj v sJ d S )N      ?z\textwonT)Zusetexr   r   http://www.w3.org/2000/svgzSFSS3583-8e.//{z}path[@d][@id="z"]r.   #z}use)r   textr   r   r   r   etreeElementTree
fromstringlenfindall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	 4}|j
|dd |d	 |  }W d    n1 s0    Y  | |v rd|v sJ d S )Nr8   Z	condensed)rQ   zfont.stretchzUnlikely to appear by chancez
2019-06-30r.   z
2019-01-01z
2019-12-31r   r7   r   r   )r   rR   updater   r   r   Z
datetime64ri   rj   r   r   seekreadrC   )rE   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 ]6\}}| rd|jj d| }|||< || qt *}	| j|	dd |	  }
W d   n1 sj0    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.   r7   re   Z	myscatter)label)r7   re   r.   Zmyplot   Zpolar)Z
projection)r   g      ?re      Z3dr.   r7   T)Zinclude_selfZtest123_r   r   Nc                    s   t | rdS t |tr6| dkr(dS |jd u r6dS t |tjr| \}}t|t|  krjdkrrn ndS t|dr|jd u rdS t |r|	 }|dkrdS |
 }|t|k s|t|krd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ydatarp   vir   r   r*   r+   include  s*    


 
ztest_gid.<locals>.include)matplotlib.offsetboxr   Zmatplotlib.axisr   r   rB   ry   r;   r2   rL   ZlegendZtwinxbarZcanvasZdraw	enumerateZfindobjZget_visible	__class____name__set_gidr   r   r   rC   items)r    r|   Zax1ar   r   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  \} }|g dg d}|g d t ddgddg\}|d t }| j|d	d
 | }dD ]}d| |v snJ qnd S )Nr   r   r6   rx   )zhttps://example.com/foozhttps://example.com/barNr.   re   rx   r6   zhttps://example.com/bazr   r   )s   foos   bars   bazs   https://example.com/)	r   r   r2   Zset_urlsrL   set_urlr   r   r   )r    r!   r1   pr%   vr*   r*   r+   rD   4  s    
rD   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|  qt
 }|j|dd | }t
 }|j|dd | }tt|j D ]}d| d|v sJ q||ks&J d S )	NSOURCE_DATE_EPOCH19680801r   r   zhttps://example.com/r   r   ascii)setenvr   r   r2   r   ZyaxisZget_major_ticksr   label1label2r   r   r   rz   r   encode)monkeypatchr{   r!   iZtickr~   b1b2r*   r*   r+   test_url_tickH  s&    r   c              	   C   s  |  dd t \}}t *}|j|dd |  }W d    n1 sN0    Y  tj|v sfJ d|v srJ d|v s~J d|v sJ t 6}|j|dd d d d dd	 |  }W d    n1 s0    Y  tj|vsJ d|vsJ d|vsJ d|vs
J 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   rC   rn   __version__)r   r    r!   r'   r(   r*   r*   r+   test_svg_default_metadatac  s$    *
*r   c              
   C   s  |  dd tjdddd}d}d}d	}d
}t \}}|D ]}t 4}	|j|	d| d id |	 	 }
W d    n1 s0    Y  t
jj|
}|d| d| d| d\}|D ]R}|d| | }||kr|rJ q|\}t
jjj|dd}|| |v sJ 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)encoding)r   rn   r   r   r   r   r   titler   rC   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  s.    * r   c               	   C   s   t  \} }t 6}| j|dd d d d dd |  }W d    n1 sN0    Y  d}tjj	|}|
d| drJ d S )Nr   r   r   r   r   r   )r   r   r   r   r   rC   r   r   r   r   r   )r    r!   r'   r(   r   r   r*   r*   r+   test_svg_clear_all_metadata  s    
*r   c                     st  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 s0    Y  d}d d}d}tj	j
|}	|	d| d  d\}
dd |	d| dD }||d gksJ  fdd|
d| d| dD }||d gks@J dg| D ]P}|dkr\qJdd |
d| d| |  D }||| gksJJ qJ|D ]\}|d krqd!d |
d| d| |  d"| d#| d
D }||| ksJ qd$d |
d| d| d%D }|d&gks0J d'd |
d| d| d(  d)  d*	D }||d  kspJ d S )+N)ZCoverageZ
IdentifierZLanguageZRelationZSourceTitler   )ZContributorr   KeywordsZ	PublisherZRightsi     r.   r7   re   zdescription
text)r   Descriptionc                 S   s   i | ]}|| d qS )z foor*   .0r/   r*   r*   r+   
<dictcomp>      z%test_svg_metadata.<locals>.<dictcomp>c                 S   s"   i | ]}|| d | dgqS )z barz bazr*   r   r*   r*   r+   r     r   r   r   r   r   r   r   r   r   ZRDFc                 S   s   g | ]
}|j qS r*   r   r   noder*   r*   r+   
<listcomp>  r   z%test_svg_metadata.<locals>.<listcomp>r   r   c                    s   g | ]}|j   d  qS )resource)r   r   r   r*   r+   r     s   zWork/r   r   r   c                 S   s   g | ]
}|j qS r*   r   r   r*   r*   r+   r     s   r   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     r   r   z1968-08-01/1968-08-02T01:02:03c                 S   s   g | ]
}|j qS r*   r   r   r*   r*   r+   r     r   zsubject/zBag/li)datetimer   r   rB   r   r   r   rC   r   r   r   r   r   lower)Zsingle_valueZmulti_valuer   r    r'   r(   r   r   r   r   rdftitlestypesr/   r   datesr*   r   r+   test_svg_metadata  sb    *


$""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   rw   Zfonttype333333?ffffff?"   There are 几个汉字 in between!)fmFontPropertiesr   findfontr   pytestskipr   rcrB   r   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   r8   r	  r  r  r  r  r
  r  r  )r  r  r   r  r   r  r  r   rB   r  r   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FooBarzUnknown metadata keyc              	   C   sp   t j||dN t (}t }|j|d| d W d    n1 sD0    Y  W d    n1 sb0    Y  d S )N)matchr   r   )r  Zraisesr   r   rB   r   )r   errormessager'   r    r*   r*   r+   test_svg_incorrect_metadata	  s    r  c                  C   sj   t  } | jddddd t 6}| j|dd |  }d|v sHJ W d    n1 s\0    Y  d S )Nr   z<'"&>)r   r   r   z&lt;&apos;&quot;&amp;&gt;")r   rB   r   r   r   r   rC   )r    r'   r(   r*   r*   r+   test_svg_escape!  s    r  font_str)z7'DejaVu Sans', 'WenQuanYi Zen Hei', 'Arial', sans-serifz='DejaVu Serif', 'WenQuanYi Zen Hei', 'Times New Roman', serifz%'Arial', 'WenQuanYi Zen Hei', cursivez&'Impact', 'WenQuanYi Zen Hei', fantasyzA'DejaVu Sans Mono', 'WenQuanYi Zen Hei', 'Courier New', monospaceinclude_genericFc                 C   s  t jdgd}tt |jdkr,td tdd | d^}}}t	|}|r^||g }|t
jd| < |t
jd	< d
t
jd< t
 \}}|dkrg d}	n|g}	|	D ]:}
|jddd||
gdd |jddd|g||
dd q|d t &}|j|dd | }W d    n1 s$0    Y  tjj|}d}d}|d| dD ]N}|d7 }tdd t| d dD d }|| d |  ksVJ qV|t	|jksJ d S )!Nr   r   r  r  c                 S   s
   |  dS )N'stripr"   r*   r*   r+   <lambda>=  r   z&test_svg_font_string.<locals>.<lambda>z, zfont.z	font.sizer8   rQ   
sans-serif)Zsansr$  z
sans serifr   r  center)r  Zhar-   offr   r   r   r   r   z}textr.   c                 s   s&   | ]}t d d | dV  qdS )c                 S   s   |   S )Nr   r"  r*   r*   r+   r#  _  r   z0test_svg_font_string.<locals>.<genexpr>.<lambda>:N)mapr!  split)r   r   r*   r*   r+   	<genexpr>^  s   z'test_svg_font_string.<locals>.<genexpr>style;r  zpx )r  r  r   r  r   r  r  r(  r)  r   r   rR   r   r   Zaxisr   r   r   r   r   r   r   r   dictr   Ztexts)r  r  r  explicitrestZgenericr  r    r!   Zgeneric_optionsZgeneric_namer'   r(   r   r   Z
text_countZtext_elementZ	font_infor*   r*   r+   test_svg_font_string*  sN    







(r0  c            	      C   s   t  } |  }td}d}t|dd}||j_t||ddddt	d	d
dd}|
d || t ,}| j|dd | d}W d    n1 s0    Y  d}||v sJ d S )N)    r1  )g333333?g?r-   )Zzoom)g      ^@g      Tr   zoffset pointsr   z->zangle,angleA=0,angleB=90,rad=3)Z
arrowstyleZconnectionstyle)ZxyboxZxycoordsZ	boxcoordspadZ
arrowpropsza test for issue 20044r   r   zutf-8z<g id="a test for issue 20044">)r   rB   ry   r   Zonesr
   rv   r   r   r-  r   ro   r   r   r   rC   )	r    r!   Zarr_imgZxyZimageboxabr'   r(   rE   r*   r*   r+   test_annotationbbox_gidg  s.    
	

,r4  )>r   ior   pathlibr   xml.etree.ElementTreer   xml.parsers.expatr  numpyr   Z
matplotlibrn   Zmatplotlib.figurer   Zmatplotlib.textr   Zmatplotlib.pyplotZpyplotr   Zmatplotlib.testing.decoratorsr   r   Zmatplotlib.testing._markersr   r	   r  r   r
   r   r,   r4   r?   r@   rP   rS   rd   rk   rq   r   r+  contextr   r   r   r   rD   r   r   r   r   r   r  r  markZparametrize	TypeError
ValueErrorr  r  r0  r4  r*   r*   r*   r+   <module>   s   



	


:
?"!9





	0