
    G8cK                     j   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	 Z ed
gd      d        Z edgd      d        Zd Z edg      d        Z edg      d        Z  ed      d        Z! e       d        Z"d Z#ejH                  jK                  d      ed               Z&d Z'd Z(d Z)d Z*d  Z+d! Z,d" Z-d# Z.d$ Z/ ed%gd&      d'        Z0 ed(g      d)        Z1ejd                  jg                  d*d+d,ie4d-fd+d,gie4d.fd/d,ie4d0fd/d,gie4d1fd2d,ie4d3fd2d,gie4d4fd5d,ie4d6fd7d,ie4d8fd9d:ie5d;fg	      d<        Z6d= Z7ejd                  jg                  d>g d?      ejd                  jg                  d@ddAg      dB               Z8y)C    N)BytesIO)Path)Figure)Text)check_figures_equalimage_comparison)needs_usetex)font_managerc                  .   t        j                         \  } }t        j                  ddt        j                  z  d      }t        j
                  |      }t        j                  |      }|j                  |||d      \  }}}|D ]  }|j                  d        t               5 }	| j                  |	d       |	j                         }
d d d        t        j                  j                  j                         }|j!                  
       y # 1 sw Y   CxY w)	Nr      2   ko)yerrfmtFsvgformat)pltsubplotsnplinspacepisin	ones_likeerrorbarset_visibler   savefiggetvaluexmlparsersexpatParserCreateParse)figaxxyr   abcartistfdbufparsers               C/usr/lib/python3/dist-packages/matplotlib/tests/test_backend_svg.pytest_visibilityr0      s    llnGC
Aq255y"%A
q	A<<?Dkk!QTtk4GAq! "5!" 
 bBu%kkm [[++-F
LL s   %$DDzfill_black_with_alpha.svgT)remove_textc                  f    t        j                         \  } }|j                  g dg dddd       y )N)r   皙?   )r   r   r   kr3   i'  )r&   r'   r*   alphas)r   r   scatterr$   r%   s     r/   test_fill_black_with_alphar:   '   s'    llnGCJJ	SuJE    noscalec                     t        j                  t        j                  ddd      t        j                  ddd            \  } }t        j                  |dz        }t	        j
                         \  }}|j                  |dd       y )N   r4      graynone)cmapinterpolation)r   meshgridaranger   r   r   imshow)XYZr$   r%   s        r/   test_noscalerK   -   sb    ;;ryyQ*BIIb!Q,?@DAq
qAvAllnGCIIafFI3r;   c                  $   t        j                         } d}| j                  d|       t               5 }| j	                  |d       |j                         j                         }d d d        dj                  |      }|v sJ y # 1 sw Y   !xY w)Nz$http://test_text_urls.matplotlib.orgtest_text_urls)urlr   r   z<a xlink:href="{0}">)r   figuresuptitler   r   r   decoder   )r$   test_urlr,   r-   expecteds        r/   rM   rM   6   s    
**,C5HLL!xL0	 %bBu%kkm""$% &,,X6Hs??% %s   2BBzbold_font_output.svgc                     t        j                         \  } }|j                  t        j                  d      t        j                  d             |j                  d       |j                  dd       |j                  dd       y )N
   nonbold-xlabelbold-ylabelbold
fontweight
bold-title)r   r   plotr   rF   
set_xlabel
set_ylabel	set_titler9   s     r/   test_bold_font_outputr`   D   s\    llnGCGGBIIbM299R=)MM"#MM-FM3LL&L1r;   z'bold_font_output_with_none_fonttype.svgc                  6   dt         j                  d<   t        j                         \  } }|j                  t	        j
                  d      t	        j
                  d             |j                  d       |j                  dd       |j                  dd       y )	NrB   svg.fonttyperU   rV   rW   rX   rY   r[   )	r   rcParamsr   r\   r   rF   r]   r^   r_   r9   s     r/   (test_bold_font_output_with_none_fonttyperd   M   sj    #)CLL llnGCGGBIIbM299R=)MM"#MM-FM3LL&L1r;      )tolc                    t        j                  dd      dz  }t        j                  |      }t        j                  |      }|j	                         }|j                  ||ddd       |j                  |dz   |dd	d       | j	                         }|j                  ||dddd
       |j                  |dz   |dd	dd
       y )Nr   d   ffffff@-rrU   )r*   lwr4   r)   Tr*   rl   
rasterized)r   rF   cosr   r   r\   fig_testfig_reftr&   r'   ax_refax_tests          r/   test_rasterizedrv   W   s    
		!SS!A
q	A
q	AF
KK1cSRK(
KK!QsrK*!GLLAscbTL:LL1atL<r;   c           	         t        j                  dd      dz  }t        j                  |      }t        j                  |      }|j	                         }|j                  dd       |j                  dd       |j                  ||ddd	d
       |j                  |dz   |ddd	d       |j                  |dz   |ddd	d
       |j                  |dz   |ddd	d
       | j	                         }|j                  dd       |j                  dd       |j                  ||ddd	d
d       |j                  |dz   |ddd	d
d       |j                  |dz   |ddd	d
d       |j                  |dz   |ddd	dd       y )Nr   rh   ri      gg?rj   rk   rU   Trm   r4   r)   Fr@   gm)r*   rl   rn   zorderg?gffffff?g333333?)r   rF   ro   r   r   set_xlimset_ylimr\   rp   s          r/   test_rasterized_orderingr~   f   si   
		!SS!A
q	A
q	AF
OOAq
OOD#
KK1cSRDK9
KK!QsreK<
KK!QsrdK;
KK!QsrdK;!GQT3LLAscbT#LFLL1atCLHLL1atCLHLL1auSLIr;   c                  v   d } t        j                         }|j                  ddd      }|j                          t	        d      D ]  }|j                  ddgd|gdd         | |d	      dk(  sJ  | |d
      dk(  sJ t        j                         }|j                  ddd      }|j                          t	        d      D ]  }|j                  ddgd|gdd         | |d	      dk(  sJ  | |d
      dk(  sJ t        j                         }|j                  ddd      }|j                          t	        d      D ]4  }|j                  ddg|dgdd       |j                  ddgd|gdd       6  | |d	      dk(  sJ  | |d
      dk(  sJ t        j                         }|j                  ddd      }	|	j                          |	j                  d       t	        d      D ]4  }|	j                  ddg|dgdd       |	j                  ddgd|gdd       6  | |d	      dk(  sJ  | |d
      dk(  sJ t        j                         }
d|
_        |
j                  ddd      }|j                          t	        d      D ]  }|j                  ddgd|gdd         | |
d	      dk(  sJ  | |
d
      dk(  sJ y )Nc                     t               5 }| j                  |d       |j                         j                         }d d d        j	                  d|       S # 1 sw Y   xY w)Nr   r   <)r   r   r   rQ   count)r$   tagr,   r-   s       r/   	count_tagz%test_count_bitmaps.<locals>.count_tag~   sY    Y 	)"KK5K)++-&&(C	) yy1SE##	) 	)s   2AA"r4   r?   r   re   zb-F)rn   imagepath   T)r   rO   add_subplotset_axis_offranger\   set_rasterizedsuppressComposite)r   fig1ax1nfig2ax2fig3ax3fig4ax4fig5ax5s               r/   test_count_bitmapsr   }   s   $ ::<D


1a
#C1X :!R1a&$59:T7#q(((T6"a''' ::<D


1a
#C1X 9!R1a&$489T7#q(((T6"a''' ::<D


1a
#C1X 9!R1a&$59!R1a&$489 T7#q(((T6"a''' ::<D


1a
#Ct1X 9!R1a&$59!R1a&$489 T7#q(((T6"a''' ::<D!D


1a
#C1X 9!R1a&$489T7#q(((T6"a'''r;   defaultc            	         t               } | j                  dddd       t               5 }| j                  |d       |j	                         }d d d        t
        j                  j                  j                        }d}d}t        |j                  d	| d
| d            dk(  sJ d| |j                  d	| d      j                  j                         v sJ y # 1 sw Y   xY w)N      ?z\textwonT)usetexr   r   http://www.w3.org/2000/svgzSFSS3583-8e.//{z}path[@d][@id="z"]r4   #z}use)r   textr   r   r   r   etreeElementTree
fromstringlenfindallfindattribvalues)r$   r,   r-   treenswon_ids         r/   test_unicode_wonr      s     (CHHR[H.	 bBu%kkm 99  ++C0D	%BFt||eB4'7xrBCDIIIvh<499uRD%67>>EEGGGG s   $CC'c                  0   t         j                  j                  ddd       d} t        j                         \  }}|j	                  t        j                  d      d|        |j                  t        j                  d      t        j                  d             |j                  d	d
       t               5 }|j                  |d       |j                  d	       |j                         j                         }d d d        | v rd|v sJ y # 1 sw Y   xY w)NrB   	condensed)rb   zfont.stretchzUnlikely to appear by chancez
2019-06-30r4   z
2019-01-01z
2019-12-31r   r@   r   r   )r   rc   updater   r   r   
datetime64r|   r}   r   r   seekreadrQ   )rS   r$   r%   r,   r-   s        r/   "test_svgnone_with_data_coordinatesr      s    LLMN-HllnGCGGBMM,'H5KKl+R]]<-HIKK1	 !bBu%

ggi !
 s?{c1111! !s   6ADDc                     ddl m ddlm t	        j
                         } | j                  d      }|j                  ddgddggd	       |j                  g d
g d
d       |j                  g dd       |j                          |j                         }|j                  g d
g d
       | j                  dd      }|j                  g dg d
       | j                  dd      }|j                  ddgddgddg       | j                  j                          i }t        | j!                  d            D ]H  \  }}|j#                         sd|j$                  j&                   d| }|||<   |j)                  |       J t+               5 }	| j-                  |	d       |	j/                         j1                         }
ddd       fd}|j3                         D ]  \  }} |||      s|
v rJ  y# 1 sw Y   8xY w)z+Test that object gid appears in output svg.r   )	OffsetBox)Tick   g      ?g       @g      @auto)aspectr4   r@   rx   	myscatter)label)r@   rx   r4   myplot   polar)
projection)r   g      ?rx      3dr4   r@   T)include_selftest123_r   r   Nc                    t        |      ryt        |t              r!|j                         dk(  ry|j                  yt        |t        j
                        rK|j                         \  }}t        |      t        |      cxk(  rdk(  ry t        |d      r|j                  yt        |      rC|j                         }|dk(  ry|j                         }|t        |      k  s|t        |      kD  ryy)NF r4   axesr   T)
isinstancer   get_textr   r   Line2Dget_datar   hasattrget_locget_view_intervalminmax)gidobjxdataydatalocvir   r   s         r/   includeztest_gid.<locals>.include   s    c9%c4 ||~#!c3::&<<>LE55zSZ,1, -S&)SXX-=c4 ++-Cax&&(BSW}c"gr;   )matplotlib.offsetboxr   matplotlib.axisr   r   rO   r   rG   r8   r\   legendtwinxbarcanvasdraw	enumeratefindobjget_visible	__class____name__set_gidr   r   r   rQ   items)r$   r   ax1ar   r   gdicidxr   r   r,   r-   r   r   r   s               @@r/   test_gidr      s   .$
**,C
//#
CJJR2r(#FJ3KK	9KK8HHYhH'JJL99;DHHY	"
//#'/
2CHH[)$
//#$/
/CHHaVaVaV$JJOODckktk<= S??CMM2231SE:CDIKK	 
 %bBu%kkm""$%0 JJL S3#::9% %s   2G::Hc                  D    t        j                  t               dd       y )Nsvgztight)r   bbox_inches)r   r   r    r;   r/   test_savefig_tightr     s     KK	&g>r;   c                  X   t        j                         \  } }|j                  g dg d      }|j                  g d       t        j                  ddgddg      \  }|j                  d       t               }| j                  |d	
       |j                         }dD ]  }d|z   |v rJ  y )Nr   r   r?   r   )zhttps://example.com/foozhttps://example.com/barNr4   rx   r   r?   zhttps://example.com/bazr   r   )s   foos   bars   bazs   https://example.com/)	r   r   r8   set_urlsr\   set_urlr   r   r   )r$   r%   r7   pr)   vs         r/   rR   rR     s     llnGC 	

9i(AJJKL 
1a&1a&	!BAII'(	AKK%K 	

A% 0&*a///0r;   c                 |   | j                  dd       t        j                         \  }}|j                  g dg d       t	        |j
                  j                               D ]  \  }}|j                  d|         t        j                         \  }}|j                  g dg d       t	        |j
                  j                               D ]A  \  }}|j                  j                  d|        |j                  j                  d|        C t               }|j                  |d       |j                         }t               }|j                  |d       |j                         }t        t        |j
                  j                                     D ]  }d| j                  d      |v rJ  ||k(  sJ y )	NSOURCE_DATE_EPOCH19680801r   r   zhttps://example.com/r   r   ascii)setenvr   r   r8   r   yaxisget_major_ticksr   label1label2r   r   r   r   r   encode)monkeypatchr   r%   itickr   b1b2s           r/   test_url_tickr  2  sz   *J7||~HD"JJy)$RXX5578 14+A3/01 ||~HD"JJy)$RXX5578 8421#6721#678 
BLLEL"	B	BLLEL"	B3rxx//123 @%aS)009R???@8O8r;   c           
      :   | j                  dd       t        j                         \  }}t               5 }|j	                  |d       |j                         j                         }d d d        t        j                  v sJ d|v sJ d|v sJ d|v sJ t               5 }|j	                  |dd d d d d	       |j                         j                         }d d d        t        j                  |vsJ d|vsJ d|vsJ d|vsJ y # 1 sw Y   xY w# 1 sw Y   <xY w)
Nr   r   r   r   
1970-08-16image/svg+xml
StillImageDateCreatorFormatTyper   metadata)	r   r   r   r   r   r   rQ   mpl__version__)r  r$   r%   r,   r-   s        r/   test_svg_default_metadatar  M  s2   *J7llnGC	 %bBu%kkm""$%
 ??c!!!3c!!!3 
 %bBu:>0N 	Okkm""$% ??#%%%s"""#%%%s"""5% %% %s   2D8DDDc           
         | j                  dd       t        j                  dddd}d}d}d	}d
}t        j                         \  }}|D ]  }t               5 }	|j                  |	d|j                         d i       |	j                         j                         }
d d d        t        j                  j                  j                  
      }|j                  d| d| d| d      \  }|D ]Z  }|j                  d| |       }||k(  r|rJ #|\  }t        j                  j                  j                  |d      }||   |v rZJ   y # 1 sw Y   xY w)Nr   r   r  r	  r
  )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/Workunicode)encoding)r   r  r  r   r   r   r   titler   rQ   r   r   r   r   r   tostring)r  metadata_containsSVGNSRDFNSCCNSDCNSr$   r%   namer,   r-   rootworkkeydataxmlstrs                   r/   test_svg_clear_default_metadatar/  o  s`    *J7$'OO\#2LJ +E;E-D/DllnGC! 4Y 	)"KK5DJJL$3GKH++-&&(C	) yy$$//4r%	%TF$GH$ 		4C<<"TF3% 01Dd{xEDYY**33D93MF$S)V333		44	) 	)s   AE		E	c            
      b   t        j                         \  } }t               5 }| j                  |dd d d d d       |j	                         j                         }d d d        d}t        j                  j                  j                        }|j                  d| d      rJ y # 1 sw Y   LxY w)Nr   r  r  r  r  r  )r   r   r   r   r   rQ   r   r   r   r   r   )r$   r%   r,   r-   r%  r*  s         r/   test_svg_clear_all_metadatar1    s     llnGC	 %bBu:>0N 	Okkm""$%
 +E99  ++C0D||bx01111% %s   8B%%B.c                     g d} g d}t        j                  ddd      t        j                   dddddd      gdd	| D ci c]  }|| d

 c}|D ci c]  }|| d| dg c}}t        j                         }t	               5 }|j                  |d|       |j                         j                         }d d d        d}d}d}	d}
t        j                  j                  j                        }|j                  d| d| d      \  }|j                  d| d      D cg c]  }|j                   }}||d   gk(  sJ |j                  d|	 d|
 d      D cg c]  }|j                  | d    }}||d   gk(  sJ dg| D ]Q  }|dk(  r	|j                  d|	 d|
 |j                                D cg c]  }|j                   }}|||   gk(  rQJ  |D ]W  }|dk(  r	|j                  d|	 d|
 |j                          d|	 d|
 d
      D cg c]  }|j                   }}|||   k(  rWJ  |j                  d|	 d|
 d       D cg c]  }|j                   }}|d!gk(  sJ |j                  d|	 d|
 d"| d#| d$	      D cg c]  }|j                   }}||d   k(  sJ y c c}w c c}w # 1 sw Y   xY wc c}w c c}w c c}w c c}w c c}w c c}w )%N)Coverage
IdentifierLanguageRelationSourceTitler  )Contributorr  Keywords	PublisherRightsi     r4   r@   rx   zdescription
text)r  Descriptionz fooz barz bazr   r  r  r  r  r  r  r  RDFr"  r8  zWork/r  resourcer  r>  r:  /zAgent/r  z1968-08-01/1968-08-02T01:02:03zsubject/zBag/li)datetimer  r   rO   r   r   r   rQ   r   r   r   r   r   r   r   lower)single_valuemulti_valuer5   r  r$   r,   r-   r%  r&  r'  r(  r*  rdfnodetitlestypesr   datess                     r/   test_svg_metadatarL    s   %LOKtQ*""4Aq!Q79* #/
/Q14j=
/	
 1<
<11!DzaS:&&
<H **,C	 %bBux8kkm""$% +E;E-D/D99  ++C0D<<"UG9UG378DC %)LL2eWE1B$CDDdiiDFDhw'((((r$uTF$%?@B [[E7(+, BE BXf%&&&&+l+ ';!kkBtfE$	{*KLN )) N N(1+&&&'  %
? TF%vaggi[$vdV5IKL IIL L !$$$% $';;D6tfD/I#JK4TYYKEK56666 kkBtfE$xwd5'LMODdii OF OXj))))] 0
<% % EBNL LOs<    J1J63J;%KK<KKKK!;Kzmulti_font_aspath.svgg?c                  b   t        j                  dg      } t        t        j                  |             j                  dk7  rt        j                  d       t        j                  dddgd       t        j                  d	d
       t        j                         }|j                  ddd       y )NWenQuanYi Zen Heifamilywqy-zenhei.ttcFont may be missingfontDejaVu Sans   rP  sizer   r   fonttype333333?ffffff?"   There are 几个汉字 in between!)fmFontPropertiesr   findfontr)  pytestskipr   rcrO   r   fpr$   s     r/   test_multi_font_type3re    s    			#6"7	8BBKKO!!%55)*FF6=*=>RHFF56"
**,CHHT5>?r;   zmulti_font_astext.svgc                  b   t        j                  dg      } t        t        j                  |             j                  dk7  rt        j                  d       t        j                         }t        j                  dd       t        j                  dd	dgd
       |j                  ddd       y )NrN  rO  rQ  rR  r   rB   rX  rS  rT  rU  rV  rZ  r[  r\  )r]  r^  r   r_  r)  r`  ra  r   rO   rb  r   rc  s     r/   test_multi_font_type42rg    s    			#6"7	8BBKKO!!%55)*
**,CFF56"FF6=*=>RHHHT5>?r;   zmetadata,error,messager  r4   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 iterabler8  z-Invalid type for Title metadata. Expected strr  z.Invalid type for Format metadata. Expected strFooBarzUnknown metadata keyc                     t        j                  ||      5  t               5 }t        j                         }|j                  |d|        d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)N)matchr   r  )r`  raisesr   r   rO   r   )r  errormessager,   r$   s        r/   test_svg_incorrect_metadataro    s_    & 
uG	, 9gi 92jjlBux89 9 9 9 9 9s"   A))AA)A&	"A))A2c                     t        j                         } | j                  dddd       t               5 }| j	                  |d       |j                         j                         }d|v sJ 	 d d d        y # 1 sw Y   y xY w)Nr   z<'"&>)r   r   r   z&lt;&apos;&quot;&amp;&gt;")r   rO   r   r   r   r   rQ   )r$   r,   r-   s      r/   test_svg_escaperq    so    
**,CHHS#yiH0	 3bBu%kkm""$+s2223 3 3s   8A66A?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                 R   t        j                  dg      }t        t        j                  |            j                  dk7  rt        j                  d       t        d | j                  d            ^}}}t        |      }|r||gz   }|t        j                  d| <   |t        j                  d<   d	t        j                  d
<   t        j                         \  }}|dk(  rg d}	n|g}	|	D ]5  }
|j                  ddd||
gd       |j                  ddd|g||
d       7 |j                  d       t               5 }|j!                  |d       |j#                         }d d d        t$        j&                  j(                  j+                        }d}d}|j-                  d| d      D ]Q  }|dz  }t/        d t/        |j1                               d   j                  d      D              d   }|| d|  k(  rQJ  |t        |j2                        k(  sJ y # 1 sw Y   xY w)NrN  rO  rQ  rR  c                 $    | j                  d      S )N'stripr&   s    r/   <lambda>z&test_svg_font_string.<locals>.<lambda>'  s    !''#, r;   z, zfont.z	font.sizerB   rb   
sans-serif)sansr{  z
sans serifr   r\  center)rP  har3   offr   r   r   r   r   z}textr4   c              3   p   K   | ].  }t        d  |j                         j                  d             0 yw)c                 "    | j                         S )Nrw  ry  s    r/   rz  z0test_svg_font_string.<locals>.<genexpr>.<lambda>I  s    !'') r;   :N)maprx  split).0r   s     r/   	<genexpr>z'test_svg_font_string.<locals>.<genexpr>H  s/      
 #QWWY__S%9:
s   46style;rS  zpx )r]  r^  r   r_  r)  r`  ra  r  r  r   r   rc   r   r   axisr   r   r   r   r   r   r   r   dictr   texts)rr  rs  rd  explicitrestgenericrW  r$   r%   generic_optionsgeneric_namer,   r-   r   r   
text_counttext_element	font_infos                     r/   test_svg_font_stringr    s4    
		#6"7	8BBKKO!!%55)*"t 4 HtW w<Dwi&*CLL5	"# $CLL#)CLL llnGC,>")' E
S> ,/H 	 	> 	S> 64668 	 	EE GGEN	 bBu%kkm 99  ++C0D	%BJuRD%78 3a
 
,,,./8>>sC
 
 	
 tfCz22223 RXX&&& s    $HH&)9rC  ior   pathlibr   xml.etree.ElementTreer   xml.parsers.expatr`  numpyr   
matplotlibr  matplotlib.figurer   matplotlib.textr   matplotlib.pyplotpyplotr   matplotlib.testing.decoratorsr   r   matplotlib.testing._markersr	   r
   r]  r0   r:   rK   rM   r`   rd   rv   r~   r   r  contextr   r   r   r   rR   r  r  r/  r1  rL  re  rg  markparametrize	TypeError
ValueErrorro  rq  r  r   r;   r/   <module>r     s           $    O 4 )& ./TBF CF
 9+404 14 )*+2 ,2 <=>2 ?2 = = J J,6(t 9H  H2"<~?0(6#D4B2 6*r *+5	@ 6	@ *+,	@ -	@ 1a[)KLqc]I8:!_i791#	<>^Y68!y;=q\946]I57U^Z!78!4 $9%$93  &  *T5M:-' ;-'r;   