o
    jZ                     @   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 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!gd"d#d$ Z'ed%d!d&gd'd(d) Z(d*d+ Z)ej*+d,ed-d. Z,d/d0 Z-d1d2 Z.d3d4 Z/d5d6 Z0d7d8 Z1d9d: Z2d;d< Z3d=d> Z4d?d@ Z5dAdB Z6edCgdDddEdF Z7edGgdHdI Z8ej9:dJdKdLie;dMfdKdLgie;dNfdOdLie;dPfdOdLgie;dQfdRdLie;dSfdRdLgie;dTfdUdLie;dVfdWdLie;dXfdYdZie<d[fg	d\d] Z=d^d_ Z>ej9:d`g daej9:dbddcgddde Z?dfdg Z@dhdi ZAdS )j    N)BytesIO)Path)Figure)Circle)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 q(t	 }	| j
|	dd |	 }
W d    n1 sIw   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+   b/var/www/html/Deteccion_Ine/venv/lib/python3.10/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    r5   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   $rA   c                  C   sv   t  } d}| jd|d t }| j|dd |  }W d    n1 s(w   Y  d| d}||v s9J d S )Nz$http://test_text_urls.matplotlib.orgtest_text_urls)urlr   r   z<a xlink:href="z">)r   figureZsuptitler   r   r   decode)r!   test_urlr(   r)   expectedr+   r+   r,   rB   8   s   rB   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-titleX  )r   r   plotr   r<   
set_xlabel
set_ylabel	set_titler4   r+   r+   r,   test_bold_font_outputF   s
   
rS   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.fonttyperH   rI   rJ   rK   rL   rM   rN   )	r   rcParamsr   rO   r   r<   rP   rQ   rR   r4   r+   r+   r,   (test_bold_font_output_with_none_fonttypeP   s   

rV      )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@-rrH   )r'   lwr/   r&   Tr'   r]   
rasterized)r   r<   cosr   r   rO   fig_testfig_reftr#   r$   ax_refax_testr+   r+   r,   test_rasterized[   s   

rg   r   )
extensionsc              	   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   rY   rZ      gg?r[   r\   rH   Tr^   r/   r&   Fr8   gm)r'   r]   r_   zorderg?gffffff?g333333?)r   r<   r`   r   r   set_xlimset_ylimrO   ra   r+   r+   r,   test_rasterized_orderingj   s"   

 ro   r7   Zpdf)rX   rh   c                 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#   blackr8   )markerr'   rl   r>   g @)rl   T)rq   r'   rl   r_   )r   rO   mplZ	offsetboxZTextArear   
add_artist)rb   rc   locre   r&   Zaboxrf   r+   r+   r,   test_prevent_rasterization   s    
ru   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   rE   count)r!   tagr(   r)   r+   r+   r,   	count_tag   s
   z%test_count_bitmaps.<locals>.count_tagr/   r7   r   rW   zb-F)r_   imagepath   T)r   rD   add_subplotZset_axis_offrangerO   Zset_rasterizedZsuppressComposite)ry   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 s%w   Y  tjj|}d}d}t	|
d	| d
| ddksGJ d| |d	| dj v sZJ d S )N      ?z\textwonT)Zusetexr   r   http://www.w3.org/2000/svgzSFSS3583-8e.//{z}path[@d][@id=""]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	 }|j
|dd |d	 |  }W d    n1 sMw   Y  | |v rZd|v s\J d S )Nr:   Z	condensed)rT   zfont.stretchzUnlikely to appear by chancez
2019-06-30r/   z
2019-01-01z
2019-12-31r   r8   r   r   )r   rU   updater   r   r   Z
datetime64rm   rn   r   r   seekreadrE   )rG   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/   r8   ri   Z	myscatter)label)r8   ri   r/   Zmyplot   Zpolar)Z
projection)r   g      ?ri      Z3dr/   r8   T)Zinclude_selfZtest123_r   r   Nc                    s   t | rdS t |tr| dkrdS |jd u rdS t |tjrC| \}}t|t|  kr6dkr7dS  t|drA|jd u rCdS t |rd|	 }|dkrRdS |
 }|t|k sb|t|krdd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ydatart   vir   r   r+   r,   include  s,   



ztest_gid.<locals>.include)matplotlib.offsetboxr   Zmatplotlib.axisr   r   rD   r}   r=   r3   rO   ZlegendZtwinxbarcanvasdraw	enumerateZfindobjZget_visible	__class____name__set_gidr   r   r   rE   items)r!   r   Zax1ar   r   Zgdicidxr   r   r(   r)   r   r+   r   r,   test_gid   s@   



r   c                  C   s  t  tddd} }tdD ]}|  }||gg}|| qtddd}|  }|dgg}|| t }| j|dd | }W d    n1 sPw   Y  t	j
j|}d	}	t }
|d
|	 dD ]}|jd }||
vswJ |
| qjt|
dksJ d S )N)r   r   rH   )Zradiusr7   r/   r   r   r   r   r   z}clipPath[@id]idr8   )r   r   r~   r}   r=   Zset_clip_pathr   r   r   r   r   r   r   setr   r   addr   )r!   circleir"   ZaimgZinner_circler(   r)   r   r   Zclip_path_idsnodeZnode_idr+   r+   r,   test_clip_path_ids_reuse1  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_tightL  s   r   c                  C   s   t  \} }|g dg d}|g d t g dg d\}|d t jg dg dddd	\}|d
 t }| j|dd | }dD ]
}d| |v sTJ qJd S )Nr   r   r7   r|   )zhttps://example.com/foozhttps://example.com/barN)r8   ri   r   zhttps://example.com/baz)ri   r   r7   r:   r#   )Z	linestylerq   zhttps://example.com/quuxr   r   )s   foos   bars   bazs   quuxs   https://example.com/)	r   r   r3   Zset_urlsrO   set_urlr   r   r   )r!   r"   r2   pr&   vr+   r+   r,   rF   R  s   

rF   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https://example.com/r   r   ascii)setenvr   r   r3   r   ZyaxisZget_major_ticksr   label1label2r   r   r   r~   r   encode)monkeypatchr   r"   r   Ztickr   b1b2r+   r+   r,   test_url_tickj  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CreatorFormatTyper   metadata)	r   r   r   r   r   r   rE   rr   __version__)r   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Workunicode)encoding)r   rr   r   r   r   r   r   titler   rE   r   r   r   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_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   rE   r   r   r   r   r   )r!   r"   r(   r)   r   r   r+   r+   r,   test_svg_clear_all_metadata  s   
r   c                     s`  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 sJw   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s.J d S )+N)ZCoverageZ
IdentifierZLanguageZRelationZSourceTitler   )ZContributorr   KeywordsZ	PublisherZRightsi     r/   r8   ri   zdescription
text)r   Descriptionc                 S   s   i | ]}|| d qS )z foor+   .0r0   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+   r   r   r   r+   r+   r,   
<listcomp>      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   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   rD   r   r   r   rE   r   r   r   r   r   lower)Zsingle_valueZmulti_valuer   r!   r(   r)   r   r   r   r   Zrdftitlestypesr0   r   datesr+   r  r,   test_svg_metadata  sd   
$""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   r{   Zfonttype333333?ffffff?"   There are 几个汉字 in between!)fmFontPropertiesr   findfontr   pytestskipr   rcrD   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   r:   r  r  r  r  r  r  r  r  )r  r  r   r  r   r  r  r   rD   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FooZBarzUnknown metadata keyc              	   C   s   t j||d0 t }t }|j|d| d W d    n1 s"w   Y  W d    d S W d    d S 1 s:w   Y  d S )N)matchr   r   )r  Zraisesr   r   rD   r   )r   errormessager(   r!   r+   r+   r,   test_svg_incorrect_metadata+  s   Pr$  c                  C   sl   t  } | jddddd t }| j|dd |  }d|v s$J W d    d S 1 s/w   Y  d S )Nr   z<'"&>)r   r   r   z&lt;&apos;&quot;&amp;&gt;")r   rD   r   r   r   r   rE   )r!   r(   r)   r+   r+   r,   test_svg_escapeC  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rPg d}	n|g}	|	D ]}
|jddd||
gdd |jddd|g||
dd qU|d t }|j|dd | }W d    n1 sw   Y  tjj|}d}d}|d| dD ]+}|d7 }tdd t| d dD }|d | d ksJ |d! | ksJ q|t	|jksJ d S )"Nr	  r
  r  r  c                 S   s
   |  dS )N'stripr#   r+   r+   r,   <lambda>_  s   
 z&test_svg_font_string.<locals>.<lambda>z, zfont.z	font.sizer:   rT   
sans-serif)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,    s    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;z	font-sizeZpxzfont-family)r  r  r   r  r   r  r  r2  r3  r   r   rU   r   r   Zaxisr   r   r   r   r   r   r   r   dictr   Ztexts)r&  r'  r  ZexplicitrestZgenericr  r!   r"   Zgeneric_optionsZgeneric_namer(   r)   r   r   Z
text_countZtext_elementZ
font_styler+   r+   r,   test_svg_font_stringL  sN   








r9  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 sNw   Y  d}||v s[J d S )N)    r:  )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   rD   r}   r   Zonesr   rz   r   r   r7  r   rs   r   r   r   rE   )	r!   r"   Zarr_imgZxyZimageboxabr(   r)   rG   r+   r+   r,   test_annotationbbox_gid  s0   

	
r=  c                  C   s$  t  \} }|g dg d | j  t }| j|dd |  }W d   n1 s0w   Y  t	j
j|}t jd du sEJ |drLJ d}t jd|d	 t }| j|dd |  }W d   n1 spw   Y  t	j
j|}t jd |ksJ |d
| dsJ dS )z=Test that `svg.id` rcparam appears in output svg if not None.r   )ri   r8   r/   r   r   Nzsvg.idz.[@id]za test for issue 28535)r   z.[@id="r   )r   r   rO   r   r   r   r   r   rE   r   r   r   r   rU   r   r  )r!   r"   r(   r)   r   Zsvg_idr+   r+   r,   
test_svgid  s&   
r>  )Br  ior   pathlibr   Zxml.etree.ElementTreer   Zxml.parsers.expatr  numpyr   Z
matplotlibrr   Zmatplotlib.figurer   Zmatplotlib.patchesr   Zmatplotlib.textr   Zmatplotlib.pyplotZpyplotr   Zmatplotlib.testing.decoratorsr   r   Zmatplotlib.testing._markersr	   r
   r  r   r   r   r-   r5   rA   rB   rS   rV   rg   ro   ru   r   r5  contextr   r   r   r   r   rF   r   r   r   r   r  r  r   markZparametrize	TypeError
ValueErrorr$  r%  r9  r=  r>  r+   r+   r+   r,   <module>   s    


	






:?"!9





	1