
    gY                        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 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' edddg      d        Z(d  Z)ejT                  jW                  d!      ed"               Z,d# Z-d$ Z.d% Z/d& Z0d' Z1d( Z2d) Z3d* Z4d+ Z5d, Z6 ed-gd.      d/        Z7 ed0g      d1        Z8ejr                  ju                  d2d3d4ie;d5fd3d4gie;d6fd7d4ie;d8fd7d4gie;d9fd:d4ie;d;fd:d4gie;d<fd=d4ie;d>fd?d4ie;d@fdAdBie<dCfg	      dD        Z=dE Z>ejr                  ju                  dFg dG      ejr                  ju                  dHddIg      dJ               Z?dK Z@dL ZAy)M    N)BytesIO)Path)Figure)Circle)Text)check_figures_equalimage_comparison)needs_usetex)font_manager)OffsetImageAnnotationBboxc                  .   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               ^/var/www/dash_apps/app1/venv/lib/python3.12/site-packages/matplotlib/tests/test_backend_svg.pytest_visibilityr3      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   kr6   i'  )r)   r*   r-   alphas)r   r   scatterr'   r(   s     r2   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   r7      graynone)cmapinterpolation)r   meshgridaranger   r   r   imshow)XYZr'   r(   s        r2   test_noscalerN   /   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| d}|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="z">)r   figuresuptitler   r    r!   decode)r'   test_urlr/   r0   expecteds        r2   rP   rP   8   s    
**,C5HLL!xL0	 %bBu%kkm""$% !
"-Hs??% %s   2A;;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   rI   
set_xlabel
set_ylabel	set_titler<   s     r2   test_bold_font_outputrc   F   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 )	NrE   svg.fonttyperX   rY   rZ   r[   r\   r^   )	r   rcParamsr   r_   r   rI   r`   ra   rb   r<   s     r2   (test_bold_font_output_with_none_fonttyperg   O   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@-rrX   )r-   lwr7   r,   Tr-   ro   
rasterized)r   rI   cosr   r   r_   fig_testfig_reftr)   r*   ax_refax_tests          r2   test_rasterizedry   Y   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   rk   rl      gg?rm   rn   rX   Trp   r7   r,   FrC   gm)r-   ro   rq   zorderg?gffffff?g333333?)r   rI   rr   r   r   set_xlimset_ylimr_   rs   s          r2   test_rasterized_orderingr   h   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>   rB   r   pdf)ri   
extensionsc                    ddg}|j                         }|j                  |d   g|d   gddd       t        j                  j	                  d      }t        j                  j                  ||d	
      }|j                  |       | j                         }|j                  |d   g|d   gdddd       t        j                  j	                  d      }t        j                  j                  ||d	
      }|j                  |       y )Ng?r   r7   r)   blackrC   )markerr-   r~   rK   g @)r~   T)r   r-   r~   rq   )r   r_   mpl	offsetboxTextArear   
add_artist)rt   ru   locrw   r,   aboxrx   s          r2   test_prevent_rasterizationr      s    ,CF
KKQ3q6(3'!KDs#A==''3s';D
d!GLL#a&CF8C71   " 	s#A==''3s';Dtr>   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!   rT   count)r'   tagr/   r0   s       r2   	count_tagz%test_count_bitmaps.<locals>.count_tag   sY    Y 	)"KK5K)++-&&(C	) yy1SE##	) 	)s   2AA"r7   rB   r   rh   zb-F)rq   imagepath   T)r   rR   add_subplotset_axis_offranger_   set_rasterizedsuppressComposite)r   fig1ax1nfig2ax2fig3ax3fig4ax4fig5ax5s               r2   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=""]r7   #z}use)r   textr   r    r!   r"   etreeElementTree
fromstringlenfindallfindattribvalues)r'   r/   r0   treenswon_ids         r2   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)NrE   	condensed)re   zfont.stretchzUnlikely to appear by chancez
2019-06-30r7   z
2019-01-01z
2019-12-31r   rC   r   r   )r   rf   updater   r   r   
datetime64r   r   r   r    seekreadrT   )rV   r'   r(   r/   r0   s        r2   "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r7   rC   r{   	myscatter)label)rC   r{   r7   myplot   polar)
projection)r   g      ?r{      3dr7   rC   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 r7   axesr   T)
isinstancer   get_textr   r   Line2Dget_datar   hasattrget_locget_view_intervalminmax)gidobjxdataydatar   vir   r   s         r2   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   rR   r   rJ   r;   r_   legendtwinxbarcanvasdraw	enumeratefindobjget_visible	__class____name__set_gidr   r    r!   rT   items)r'   r   ax1ar   r   gdicidxr   r   r/   r0   r   r   r   s               @@r2   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                     t               t        dd      }} t        d      D ]6  }| j                         }|j	                  |gg      }|j                  |       8 t        dd      }| j                         }|j	                  dgg      }|j                  |       t               5 }| j                  |d       |j                         }d d d        t        j                  j                  j                        }d	}	t               }
|j                  d
|	 d      D ](  }|j                  d   }||
vsJ |
j!                  |       * t#        |
      dk(  sJ y # 1 sw Y   xY w)N)r   r   rX   )radiusrB   r7   r   r   r   r   r   z}clipPath[@id]idrC   )r   r   r   r   rJ   set_clip_pathr   r    r!   r"   r   r   r   setr   r   addr   )r'   circleir(   aimginner_circler/   r0   r   r   clip_path_idsnodenode_ids                r2   test_clip_path_ids_reuser  /  sL   (F6"5C1X #__yy1#6"#
 &+L		B99qcUD|$	 bBu%kkm 99  ++C0D	%BEMuRD89 #++d#m+++'"# }""" s   '$EE"c                  D    t        j                  t               dd       y )Nsvgztight)r   bbox_inches)r   r    r    r>   r2   test_savefig_tightr  J  s     KK	&g>r>   c                     t        j                         \  } }|j                  g dg d      }|j                  g d       t        j                  g dg d      \  }|j                  d       t        j                  g dg ddd	      \  }|j                  d
       t               }| j                  |d       |j                         }dD ]  }d|z   |v rJ  y )Nr   r   rB   r   )zhttps://example.com/foozhttps://example.com/barN)rC   r{   r   zhttps://example.com/baz)r{   r   rB   rE   r)   )	linestyler   zhttps://example.com/quuxr   r   )s   foos   bars   bazs   quuxs   https://example.com/)	r   r   r;   set_urlsr_   set_urlr   r    r!   )r'   r(   r:   pr,   vs         r2   rU   rU   P  s     llnGC 	

9i(AJJKL 
)Y	'BAII'( 
)Y&	EBA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   r;   r   yaxisget_major_ticksr  label1label2r   r    r!   r   r   encode)monkeypatchr   r(   r  tickr   b1b2s           r2   test_url_tickr#  h  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!   rT   r   __version__)r  r'   r(   r/   r0   s        r2   test_svg_default_metadatar0    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!   rT   r"   r   r   r   r   tostring)r  metadata_containsSVGNSRDFNSCCNSDCNSr'   r(   namer/   r0   rootworkkeydataxmlstrs                   r2   test_svg_clear_default_metadatarK    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-  r5  r9  r.  )r   r   r   r    r!   rT   r"   r   r   r   r   )r'   r(   r/   r0   rA  rF  s         r2   test_svg_clear_all_metadatarM    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     r7   rC   r{   zdescription
text)r)  Descriptionz fooz barz bazr   r-  r5  r6  r7  r8  r9  r:  RDFr>  rT  zWork/r4  resourcer,  rZ  rV  /zAgent/r3  z1968-08-01/1968-08-02T01:02:03zsubject/zBag/li)datetimer3  r   rR   r   r    r!   rT   r"   r   r   r   r   r   r   lower)single_valuemulti_valuer8   r.  r'   r/   r0   rA  rB  rC  rD  rF  rdfr  titlestypesr   datess                     r2   test_svg_metadatarg    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   rk  sizer   r   fonttype333333?ffffff?"   There are 几个汉字 in between!)fmFontPropertiesr   findfontrE  pytestskipr   rcrR   r   fpr'   s     r2   test_multi_font_type3r    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 )Nri  rj  rl  rm  r   rE   rs  rn  ro  rp  rq  ru  rv  rw  )rx  ry  r   rz  rE  r{  r|  r   rR   r}  r   r~  s     r2   test_multi_font_type42r    s    			#6"7	8BBKKO!!%55)*
**,CFF56"FF6=*=>RHHHT5>?r>   zmetadata,error,messager)  r7   z,Invalid type for Date metadata. Expected strz1Invalid type for Date metadata. Expected iterablerV  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 iterablerT  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   rR   r    )r.  errormessager/   r'   s        r2   test_svg_incorrect_metadatar  )  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   rR   r   r   r    r!   rT   )r'   r/   r0   s      r2   test_svg_escaper  A  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                 b   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 ]Y  }|dz  }t/        d t/        |j1                               d   j                  d      D              }|d   | dk(  sJ |d   | k(  rYJ  |t        |j2                        k(  sJ y # 1 sw Y   xY w) Nri  rj  rl  rm  c                 $    | j                  d      S )N'stripr)   s    r2   <lambda>z&test_svg_font_string.<locals>.<lambda>]  s    !''#, r>   z, zfont.z	font.sizerE   re   
sans-serif)sansr  z
sans serifr   rw  center)rk  har6   offr   r   r   r   r   z}textr7   c              3   p   K   | ].  }t        d  |j                         j                  d             0 yw)c                 "    | j                         S )Nr  r  s    r2   r  z0test_svg_font_string.<locals>.<genexpr>.<lambda>  s    !'') r>   :N)mapr  split).0r   s     r2   	<genexpr>z'test_svg_font_string.<locals>.<genexpr>~  s/      
 #QWWY__S%9:
s   46style;z	font-sizepxzfont-family)rx  ry  r   rz  rE  r{  r|  r  r  r   r   rf   r   r   axisr   r    r!   r"   r   r   r   r   dictr   texts)r  r  r  explicitrestgenericrr  r'   r(   generic_optionsgeneric_namer/   r0   r   r   
text_counttext_element
font_styles                     r2   test_svg_font_stringr  J  s=    
		#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 5a
 
,,,./8>>sC
 


 +&TF"+555-(H4445 RXX&&&! s    $H%%H.c                     t        j                         } | j                         }t        j                  d      }d}t        |d      }||j                  _        t        ||ddddt        d	d
            }|j                  d       |j                  |       t               5 }| j                  |d       |j                         j                  d      }d d d        d}|v sJ y # 1 sw Y   xY w)N)    r  )g333333?g?r6   )zoom)g      ^@g      TrI  zoffset pointsr   z->zangle,angleA=0,angleB=90,rad=3)
arrowstyleconnectionstyle)xyboxxycoords	boxcoordspad
arrowpropsza test for issue 20044r   r   zutf-8z<g id="a test for issue 20044">)r   rR   r   r   onesr   r   r   r   r  r   r   r   r    r!   rT   )	r'   r(   arr_imgxyimageboxabr/   r0   rV   s	            r2   test_annotationbbox_gidr    s     **,C		BgghG	B7-HHNN	"*!'"1#''+,L$N
B JJ'(MM"	 ,bBu%kkm""7+, 1Hs??, ,s   #3C''C0c                  X   t        j                         \  } }|j                  g dg d       | j                  j	                          t               5 }| j                  |d       |j                         j                         }ddd       t        j                  j                  j                        }t         j                  d   J |j                  d      rJ d}t        j                  d|	       t               5 }| j                  |d       |j                         j                         }ddd       t        j                  j                  j                  |      }t         j                  d   |k(  sJ |j                  d
| d      sJ y# 1 sw Y   xY w# 1 sw Y   oxY w)z=Test that `svg.id` rcparam appears in output svg if not None.r   )r{   rC   r7   r   r   Nzsvg.idz.[@id]za test for issue 28535)r   z.[@id="r   )r   r   r_   r   r   r   r    r!   rT   r"   r   r   r   rf   r   r}  )r'   r(   r/   r0   r   svg_ids         r2   
test_svgidr    sW    llnGCGGIy!JJOO 
 %bBu%kkm""$% 99  ++C0D<<!)))||H%%% &FFF5V	 %bBu%kkm""$% 99  ++C0D<<!V+++<<'&,---)% %% %s   2F 2F F F))Br_  ior   pathlibr   xml.etree.ElementTreer"   xml.parsers.expatr{  numpyr   
matplotlibr   matplotlib.figurer   matplotlib.patchesr   matplotlib.textr   matplotlib.pyplotpyplotr   matplotlib.testing.decoratorsr   r	   matplotlib.testing._markersr
   r   rx  r   r   r   r3   r=   rN   rP   rc   rg   ry   r   r   r   r  contextr   r   r   r  r  rU   r#  r0  rK  rM  rg  r  r  markparametrize	TypeError
ValueErrorr  r  r  r  r  r  r>   r2   <module>r     s           $ %    O 4 ) >& ./TBF CF
 9+404 14 )*+2 ,2 <=>2 ?2 = = J J, u~6 7(6(t 9H  H2"<~#6?00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:.' ;.'b>.r>   