a
    s=icB                     @   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j23d?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 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(   r/home/droni/.local/share/virtualenvs/DPS-5Je3_V2c/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    r2   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   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?   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   r9   
set_xlabel
set_ylabel	set_titler1   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 )	Nr7   svg.fonttyperE   rF   rG   rH   rI   rJ   )	r   rcParamsr   rK   r   r9   rL   rM   rN   r1   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   r9   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      gg?rV   rW   rE   TrY   r,   r#   Fr5   gm)r$   rX   rZ   Zzorderg?gffffff?g333333?)r   r9   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`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   rB   count)r   tagr%   r&   r(   r(   r)   	count_tag~   s    *z%test_count_bitmaps.<locals>.count_tagr,   r4   r   rS   zb-F)rZ   imagepath   T)r   rA   add_subplotZset_axis_offrangerK   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 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   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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 )Nr7   Z	condensed)rP   zfont.stretchzUnlikely to appear by chancez
2019-06-30r,   z
2019-01-01z
2019-12-31r   r5   r   r   )r   rQ   updater   rx   r   Z
datetime64rb   rc   r   r   seekreadrB   )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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,   r5   r_   Z	myscatter)label)r5   r_   r,   Zmyplot   Zpolar)Z
projection)r   g      ?r_      Z3dr,   r5   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ydatalocvir   r   r(   r)   include   s*    


 
ztest_gid.<locals>.include)Zmatplotlib.offsetboxr   Zmatplotlib.axisr   r   rA   rl   r:   r0   rK   legendZtwinxbarZcanvasZdraw	enumerateZfindobjZget_visible	__class____name__Zset_gidr   r   r   rB   items)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  \} }|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
   r4   rk   )zhttps://example.com/foozhttps://example.com/barNr,   r_   rk   r4   zhttps://example.com/bazr   r   )s   foos   bars   bazs   https://example.com/)	r   r   r0   Zset_urlsrK   set_urlr   r   r   )r   r   r/   pr#   vr(   r(   r)   rC     s    
rC   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   r0   r   ZyaxisZget_major_ticksr   label1label2r   r   r   rm   r|   encode)monkeypatchrn   r   iZtickrq   b1b2r(   r(   r)   test_url_tick2  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   rB   mpl__version__)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 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   r   r   r   r   r   r   titler   rB   r   ry   rz   r{   r}   Ztostring)r   Zmetadata_containsSVGNSRDFNSCCNSDCNSr   r   namer%   r&   rootZworkkeydataZxmlstrr(   r(   r)   test_svg_clear_default_metadatao  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   rB   r   ry   rz   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RelationSourceTitler   )ZContributorr   KeywordsZ	PublisherZRightsi     r,   r5   r_   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(   rx   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/Zli)datetimer   r   rA   r   r   r   rB   r   ry   rz   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   rj   Zfonttype333333?ffffff?"   There are 几个汉字 in between!)fmFontPropertiesr   findfontr   pytestskipr   rcrA   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   r7   r   r   r   r   r   r   r   r   )r   r   r   r   r   r  r  r   rA   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   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   rA   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 )Nrv   z<'"&>)r   r   r   z&lt;&apos;&quot;&amp;&gt;")r   rA   rx   r   r   r   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*   r2   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





