
    
3jY                        S SK Jr  S SKrS SKrS SKrS SKJr  S SKJr  S SK	r	S SK
r
S SKrS SKrS SKJrJr  S SKrS SKJr  S SKJrJrJrJrJrJrJrJrJrJrJrJ r J!r!J"r"J#r#  S SKJ$r$J%r%J&r'J(r(J)r*  S SK+J,r,J-r-  \
R\                  S	:g  =(       a    \	R^                  " S
5      SLr0S r1S r2S r3S r4S r5\Rl                  Ro                  \
R\                  S:H  =(       d    \0(       + SS9S 5       r8S r9S r:S r;S r<S r=\Rl                  Ro                  \
R\                  S:g  =(       d    \0(       + SS9S 5       r>S r?\Rl                  Ro                  \
R\                  S:g  SS9S 5       r@S rA\Rl                  Ro                  \
R\                  S	:H  S S9\Rl                  Ro                  \B" \S!5      (       + S"S9\Rl                  R                  S#5      \Rl                  R                  S$5      S% 5       5       5       5       rDS& rES' rFS( rGS) rHS* rIS+ rJ\Rl                  Ro                  \
R\                  S:H  S,S9S- 5       rKS. rL\Rl                  R                  S// S0Q5      S1 5       rNS2 rOS3 rPS4 rQS5 rRS6 rSS7 rTg)8    )BytesION)Path)Image)	MagicMockpatch)findfontfindSystemFonts	FontEntryFontPathFontPropertiesfontManager	json_dump	json_loadget_fontis_opentype_cff_fontMSUserFontDirectoriesttfFontProperty_get_font_alt_names_get_fontconfig_fonts_normalize_weight)cbookft2fontpyplot
rc_contextfigure)subprocess_run_helpersubprocess_run_for_testing
emscriptenzfc-listc                     [        SS5      n [        SS5      n[        U 5      S:X  d   e[        U 5      S:X  d   eU R                  S:X  d   eU R                  S:X  d   e[
        R                  " [        SS9   SU l        S S S 5        [
        R                  " [        SS9   SU l        S S S 5        U S:X  d   eU [        SS5      :X  d   eX ::  d   eX :  d   eX:w  d   eX:  d   eX::  d   eX:  d   eX:  d   eU SSS	0nX;   d   eX    S:X  d   eU[        SS5         S:X  d   eX;  d   eSU;  d   e[        SS
5      U;  d   eg ! , (       d  f       N= f! , (       d  f       N= f)Nfoo{   iA  zFontPath('foo', 123)zhas no setter)matchbar      r   )r   strreprpath
face_indexpytestraisesAttributeError)fpfp2ds      \/home/wildlama/miniconda3/lib/python3.13/site-packages/matplotlib/tests/test_font_manager.pytest_font_pathr1      sv   	%	B
5#
Cr7e8----77e==C	~_	= 
>	~_	= 
> ;;%%%%%8O88O8998O8998O899	QqA7N75A::XeS!"a'''<<>>E1Q&&&+ 
>	=	=	=s   8E
!E

E
E)c                     [        SSS/0S9   [        [        S/S95      n S S S 5        [        W 5      R                  S:X  d   e[        U 5      nUR                  5       n[        U5      S:X  d   eUS	   S
:X  d   eg ! , (       d  f       Na= f)Nfont.sans-serifcmmi10Bitstream Vera Sans)rcz
sans-seriffamilyz
cmmi10.ttf   i"     )r   r   r   r   namer   get_charmaplen)fontfilefontcmaps      r0   test_font_priorityrA   =   s    	,-/ 
0 N<.AB
0 >,... HDDt9:
0 
0s   A==
Bc                     S[         R                  " SS5      :X  d   eS[         R                  " SS5      :X  d   eS[         R                  " SS5      s=:  a  [         R                  " SS5      :  d   e   eS[         R                  " SS5      s=:  a  [         R                  " SS5      :  d   e   e[         R                  " SS5      [         R                  " SS5      :X  d   eg )Nr   regularbold  normal)r   score_weight     r0   test_score_weightrJ   K   s    ((I>>>>((8888((c2 7$$Xv67 8 7 8 7((9= 7$$Xv67 8 7 8 7$$Xy9$$S#./ 0 /rI   c                 `   [        [        U S-  5        [        U S-  5      n[        R                  " 5          [        R
                  " SS5        SS0SSS.SS	04 H7  n[        S0 UD6n[        R                  " US
S9UR                  US
S9:X  a  M7   e   S S S 5        g ! , (       d  f       g = f)Nzfontlist.jsonignorez findfont: Font family.*not foundr8   STIXGeneralr5     r8   weightzno such font familyF)rebuild_if_missingrH   )r   r   r   warningscatch_warningsfilterwarningsr   r   )tmp_pathcopypropr-   s       r0   test_json_serializationrX   V   s     k8o56X/0D		 	 	"*LM. 5E 568D  '$'B((FMM"M?@ A @	8 
#	"	"s   ABB
B-c                  v   Sn [        U 5      R                  5       (       a@  [        R                  " [        R
                  5         [        U 5      (       d   e S S S 5        [        R                   H  nSUR                  ;   d  M  [        UR                  S5       nUR                  S5      S:H  nS S S 5        [        R                  " [        R
                  5         W[        UR                  5      :X  d   e S S S 5        M     g ! , (       d  f       N= f! , (       d  f       Nm= f! , (       d  f       M  = f)Nz//usr/share/fonts/opentype/freefont/FreeMono.otfotfrb   s   OTTO)r   existsr*   warnsmplMatplotlibDeprecationWarningr   r   ttflistfnameopenread)rb   ffdress       r0   test_otfrh   e   s    =EE{\\#::;'.... <  AGGaggt$ggajG+ %c>>?2177;;;; @?	 ! <; %$??s$   DDD)
D
D&	)
D8	win32zno fontconfig installed)reasonc                  6    [        [        5       5      S:  d   eg )Nr$   )r=   r   rH   rI   r0   test_get_fontconfig_fontsrl   r   s     $&'!+++rI   c                       [        S [        R                   5       5      n U R                  S:X  d   eg ! [         a    [
        R                  " S5         g f = f)Nc              3   p   #    U  H,  n[        UR                  5      R                  S :X  d  M(  Uv   M.     g7f)zseguisbi.ttfN)r   rb   r;   ).0entrys     r0   	<genexpr>#test_utf16m_sfnt.<locals>.<genexpr>{   s1      B(;uU[[)...@ U(;s   '6	6X  z0Couldn't find seguisbi.ttf font to test against.)nextr   ra   rP   StopIterationr*   skip)rp   s    r0   test_utf16m_sfntrw   x   sZ    	# B(;(; B B ||s"""  HFGHs    5  AAc                  L   [        S/S9n [        U 5      n[        U5      R                  S:w  a  [        R
                  " S5        S H  n[        [        U/S9SS9nUR                  UR                  :X  d   eUR                  UR                  :w  d   e[        U5      nUR                  UR                  :X  d   eUR                  UR                  :X  a  M   e   [        R                  " 5       u  pVUR                  SSS	U S
9  S H  nUR                  [        5       US9  M     g )NzWenQuanYi Zen Heir7   zwqy-zenhei.ttcz"Font wqy-zenhei.ttc may be missing)zWenQuanYi Zen Hei MonozWenQuanYi Zen Hei SharpFfallback_to_default      ?u   ⿓fontpropertiesrawsvgpdfpsformat)r   r   r   r;   r*   rv   r(   r)   r   rb   pltsubplotstextsavefigr   )r-   fontpathr;   subfontpathsubfontfigaxfmts           r0   test_find_ttcr      s   	 34	5B|HH~..89E~dV<RWX8==000%%)<)<<<<;'}} 0 0000!![%;%;;;; F llnGCGGB/GC*GIc* +rI   c                  *   [        SS/S9n [        [        U 5      5      R                  nUS;  a  [        R
                  " SU S35        [        R                  " 5       u  p#UR                  SSSU S	9  S
 H  nUR                  [        5       US9  M     g )NzNoto Sans CJK SCzNoto Sans CJK JPr7   )zNotoSansCJKsc-Regular.otfzNotoSansCJK-Regular.ttcz,Noto Sans CJK SC font may be missing (found )r{   u   Hello, 你好r|   r~   r   )r   r   r   r;   r*   rv   r   r   r   r   r   )r-   r;   r   r   r   s        r0   test_find_notor      s    	 24FG	HB""DKKB4&JKllnGCGGCobG9*GIc* +rI   c                       " S S5      n [        S5      n[        R                  " U5      n[        U5      nUR                  U:X  d   e[        U5      nUR                  U:X  d   e[        U " U5      5      nUR                  U:X  d   e[        U " U5      5      nUR                  U:X  d   e[        [        US5      5      nUR                  U:X  d   e[        XU " U5      U " U5      /5      nUR                  U:X  d   eg )Nc                        \ rS rSrS rS rSrg)&test_find_valid.<locals>.PathLikeClass   c                     Xl         g Nfilename)selfr   s     r0   __init__/test_find_valid.<locals>.PathLikeClass.__init__   s    $MrI   c                     U R                   $ r   r   )r   s    r0   
__fspath__1test_find_valid.<locals>.PathLikeClass.__fspath__   s    == rI   r   N)__name__
__module____qualname____firstlineno__r   r   __static_attributes__rH   rI   r0   PathLikeClassr      s    	%	!rI   r   DejaVu Sansr   )r   osfsencoder   rb   r   )r   file_str
file_bytesr?   s       r0   test_find_validr      s    ! ! &HX&JHD::!!!JD::###M(+,D::!!!M*-.D::###HXq)*D::!!! X"8,mJ.GI JD::!!!rI   c                    [         R                  " [        5         [        U S-  5        S S S 5        [         R                  " [        5         [        [	        U S-  5      5        S S S 5        [         R                  " [        5         [        [        U S-  5      5        S S S 5        g ! , (       d  f       N= f! , (       d  f       NZ= f! , (       d  f       g = f)Nznon-existent-font-name.ttf)r*   r+   FileNotFoundErrorr   r&   bytes)rU   s    r0   test_find_invalidr      s    	(	)889 
* 
(	)X <<=> 
* 
(	)x">>?@ 
*	) 
*	) 
*	) 
*	)s#   B'B8C	'
B58
C	
Clinuxz$only Linux with fontconfig installedc                 v  ^ Sm[        5       n[        U4S jU 5       5      (       a  [        R                  " T S35        U R	                  S5      nUR                  SS9  [        R                  " [        [        5      R                  S-  T-  UR	                  T5      5        UR                  5        nUR                  S[        U 5      5        [        R                  " 5         [        5       n[        U4S	 jU 5       5      (       d   e S S S 5        [        R                  " 5         g ! , (       d  f       N$= f)
Nmpltest.ttfc              3   .   >#    U  H
  nTU;   v   M     g 7fr   rH   ro   r?   font_test_files     r0   rq   (test_user_fonts_linux.<locals>.<genexpr>        
4ed>T!e    already exists in system fontsfontsT)dirdataXDG_DATA_HOMEc              3   .   >#    U  H
  nTU;   v   M     g 7fr   rH   r   s     r0   rq   r      s     <ed>T)er   )r	   anyr*   rv   joinensureshutilcopyfiler   __file__parentcontextsetenvr&   r   cache_clear)tmpdirmonkeypatchr   user_fonts_dirmr   s        @r0   test_user_fonts_linuxr      s     #N E

4e
444~&&EFG [[)Nd#
OODN))F2^C"''79 
			!	#f+.))+!<e<<<<< 
 %%' 
	s   4AD**
D8c                 
  ^ Sm[        [        5      R                  S-  T-  n [        R                  " U5        [        R
                  " S5      [        US5      :X  d   eU R                  5        n[        R                  " [        5         UR                  SS5        [        R
                  " SSS9  S	S	S	5        S	S	S	5        U4S
 j[        R                   5       u  n[        R                  R                  U5        [        R                   Vs/ s H'  nUR                  R                  T5      (       d  M%  UPM)     nnU H"  n[        R                  R                  U5        M$     g	! , (       d  f       N= f! , (       d  f       N= fs  snf ! [        R                   Vs/ s H'  nUR                  R                  T5      (       d  M%  UPM)     Os  snf nnU H"  n[        R                  R                  U5        M$     f = f)z/Smoke test that addfont() accepts pathlib.Path.r   r   zmpltest:weight=500r   MPL_IGNORE_SYSTEM_FONTStrueFry   Nc              3   l   >#    U  H)  nUR                   R                  T5      (       d  M%  Uv   M+     g 7fr   )rb   endswithr   s     r0   rq   'test_addfont_as_path.<locals>.<genexpr>   s,      :#64ZZ((8 $#6s   $4	4)r   r   r   r   addfontr   r   r   r*   r+   
ValueErrorr   ra   removerb   r   )r   r(   r   addedr?   	to_remover   s         @r0   test_addfont_as_pathr      s   "N>  6)N:D-D!##$89XdA=NNNN  "az)BHH.7  !55Q *C":;#6#6 :""5)&1&9&9 =&9d

++N; &9	 =D&&t,  *C)B""=k&9&9 =&9d

++N; &9 =	 =D&&t, s[   AF 0E:(E)3E:;AF $F8F)
E7	3E::
FF H#$GG1HzWindows onlyc                  ^  ^ [         R                  R                  S5      (       d:  [         R                  R                  S5      (       d  [        R                  " S5        [        R                  " S5        Sm[        5       n [        U4S jU  5       5      (       a  [        R                  " T S35        [        S   n[         R                  " U5        [        R                  " [        [        5      R                  S	-  T-  U5        [        5       n [        U4S
 jU  5       5      (       d   eg )NAPPVEYORTF_BUILDznThis test should only run on CI (appveyor or azure) as the developer's font directory should remain unchanged.z4We need to update the registry for this test to workr   c              3   .   >#    U  H
  nTU;   v   M     g 7fr   rH   r   s     r0   rq   (test_user_fonts_win32.<locals>.<genexpr>  r   r   r   r   r   c              3   .   >#    U  H
  nTU;   v   M     g 7fr   rH   r   s     r0   rq   r     s     8%$~%%r   )r   environgetr*   xfailr	   r   rv   r   makedirsr   rV   r   r   r   )r   r   r   s     @r0   test_user_fonts_win32r      s    JJNN:&&"**..*D*D " 	# LLGH"N E

4e
444~&&EFG*1-N KK KKX%%.?P E8%88888rI   c                     [         R                  " 5       u  pUR                  [        5       SS9  [         R                  " 5         g )Nr   r   )r   r   r   r   close)_r   r   s      r0   _model_handlerr     s*    llnGCKK	%K(IIKrI   z(emscripten does not support subprocessesregister_at_forkz Cannot register at_fork handlersz2ignore:.*multi-threaded.*fork.*:DeprecationWarningz.ignore:.*multi-threaded.*fork.*:RuntimeWarningc                      [        S5        [        R                  " S5      n U R                  SS9 nUR	                  [         [        S5      5        S S S 5        g ! , (       d  f       g = f)Nr   forkr%   )	processes)r   multiprocessingget_contextPoolmaprange)ctxpools     r0   	test_forkr     sJ     1

%
%f
-C	A	$q* 
		s    A
A(c                    S/[         R                  S'   U R                  S5         [        S5        S S S 5        U R                   Vs/ s H  oR                  5       PM     snSS/:X  d   eg ! , (       d  f       NA= fs  snf )Nzthis-font-does-not-existr3   WARNINGsanszFfindfont: Font family ['sans'] not found. Falling back to DejaVu Sans.zufindfont: Generic family 'sans' not found because none of the following families were found: this-font-does-not-exist)r   rcParamsat_levelr   records
getMessage)caplogrecs     r0   test_missing_familyr   +  sr    'A&BCLL"#		# 
$(.7NN7	'	B<    
$	#7s   A-A>-
A;c            	      z  ^^^	 SS K n SSKJm  SS KJm	  S nXl        SnU R                  U5      mUUU	4S jn[        U5       Vs/ s H  nU R                  USU 3U4S9PM     nnU H  nUR                  5         M     U H2  nUR                  SS	9  UR                  5       (       d  M)  [        S
5      e   g s  snf )Nr   )	LoadFlagsc                     [        S5      e)Nzerror in thread!)RuntimeError)argss    r0   loud_excepthook(_test_threading.<locals>.loud_excepthook<  s    -..rI   
   c                    > TR                  SS9  [        S5       HG  nTR                  TR                  S5      5      nUR	                  [        U 5      STR                  S9  MI     g )N   timeoutd   r   g        )flags)waitr   r   r   set_textr&   
NO_HINTING)njr?   r  bfms      r0   bad_idea!_test_threading.<locals>.bad_ideaD  sR    	qsA;;r{{=9:DMM#a&#Y-A-AMB rI   bad_thread_)targetr;   r  	   r
  zthread failed to join)	threadingmatplotlib.ft2fontr  matplotlib.font_managerfont_manager
excepthookBarrierr   Threadstartr   is_aliver  )
r  r  Nr  r  threadstr  r  r  s
          @@@r0   _test_threadingr&  7  s    ,(/ +
A!AC qA 	QC/@tL  
 		  	q::<<677 s   B8c                  L    [         R                  " S5        [        [        SS9  g )Nr  r  r
  )r*   importorskipr   r&  rH   rI   r0   test_fontcache_thread_safer)  X  s    
$/26rI   c                 v    [        [        R                  SS/0 [        R                  ES[        U 5      0ESS9ng )Nz-czlimport matplotlib;import os;p = matplotlib.get_cachedir();os.chmod(p, 0o555);import matplotlib.font_manager;MPLCONFIGDIRT)envcheck)r   sys
executabler   r   r&   )rU   procs     r0   test_lockfilefailurer1  ^  s>     &NN.	
 :rzz9>3x=9DrI   c                     [        SS9n U R                  5       n[        R                  " [	        U5      5      nUR
                  S:  d   eUR                  S:  d   eU R                  5       nUR                  S5      (       d   eg )N	font-name)r;   r   z<img src="data:image/png;base64)	r
   
_repr_png_r   rc   r   widthheight_repr_html_
startswith)fontentpngimghtmls       r0   test_fontentry_dataclassr=  t  sp    [)G



C
**WS\
"C99q==::>> D??=>>>>rI   c                      [         R                  " [        5         [        SSS9n U R	                  5         S S S 5        g ! , (       d  f       g = f)Nz/randomr3  )rb   r;   )r*   r+   r   r
   r7  )r9  s    r0   %test_fontentry_dataclass_invalid_pathr?    s3    	(	))+> 
*	)	)s	   ?
AzLinux or OS onlyc                  >   S V s/ s H  n [         R                  " SU 5      PM     nn [        USS9n[        SS9n[        5       nX#-    H  n [        R
                  " U5      n[        U5      nUR                  UR                  5        [        SUR                  5       H=  n[        R
                  " XXS9n[        U5      nUR                  UR                  5        M?     M     U[        [        R                  " 5       5      ::  d   eg s  sn f ! [         a     M  f = f)N)ttfr   rA  )fontextr$   )r)   )r   _get_data_pathr	   setr   FT2Fontr   addr;   r   	num_faces	Exceptionr   get_font_names)	subdir	paths_mpl	fonts_mplfonts_system	ttf_fontsr(   r?   rW   r)   s	            r0   test_get_font_namesrO    s    ELMW6%%gv6WIM	59I"51LI(		??4(D"4(DMM$))$#At~~6
tC&t,dii( 7 ) K6689999% N  		s   !D	BD
DDc           
         SnSn/ UQSP7SR                  S5      / UQSP7SR                  S5      / UQSP7S	R                  S5      / UQSP7S
R                  S5      0n[        5       nX4R                  l        [	        US5      S/:X  d   e[	        US5      S/:X  d   e/ UQSP7SR                  S5      / UQSP7SR                  S5      / UQSP7SR                  S5      0n[        5       nXVR                  l        [	        US5      S/:X  d   e/ UQSP7SR                  S5      / UQSP7SR                  S5      0n[        5       nXxR                  l        [	        US5      / :X  d   e[        5       n	[
        U	R                  l        [	        U	S5      / :X  d   e[        U S-  5      n
[        U
SSSSSSS9n[        SUS9   [        SUS9   [        R                  R                  [        R                  5      n/ Ul        / Ul        [        5       Ul        [        5       UR                  l        UR#                  U
5        SSS5        SSS5        WR                   Vs/ s H  oR$                  PM     nnUSS/:X  d   eUR                  S   nUR&                  S:X  d   eUR(                  UR(                  :X  d   eUR*                  UR*                  :X  d   eg! , (       d  f       N= f! , (       d  f       N= fs  snf )a%  
Fonts that advertise different family names across platforms or name IDs
should be registered under all of those names so users can address the font
by any of them.

Two real-world patterns are covered:

- **MS platform ID 1 differs from Mac platform ID 1** (e.g. Ubuntu Light):
  FreeType returns the Mac ID 1 value as ``family_name``; the MS ID 1
  value ("Ubuntu Light") is an equally valid name that users expect to work.
- **Name ID 16 (Typographic Family) differs from ID 1** (older fonts):
  some fonts store a broader family name in ID 16.
)r$   r   r      r$   i	  r$   Test Familyzlatin-1Test Family Light	utf-16-ber%   LightRegular)rT  rE   )rS  ,     zfake.ttfrF   rX  scalable)rb   r;   stylevariantrP   stretchsizez'matplotlib.font_manager.ft2font.FT2Font)return_valuez'matplotlib.font_manager.ttfFontPropertyNrE   )encoder   get_sfntr_  r   r   side_effectr&   r
   r   fm_modFontManager__new__ra   afmlist_findfont_cachedr   r   r;   rP   r[  rb   )rU   mac_keyms_keyubuntu_style_sfnt	fake_font	id16_sfntfake_font_id16	same_sfntfake_font_samefake_font_no_sfnt	fake_pathprimary_entryfm_instanceenames	alt_entrys                   r0   test_addfont_alternative_namesrw    s+    GF 	'1}++I6&1*11+>'1w~~i0&1y''4	 I&7#y-8=W<XXXXy*=>C    	'1,,Y7&1,,[9&2+22;?I
 [N+4(
$	%& & & 	'1}++I6&1}++K8I [N+4(~}=CCC "-7*0-@BFFFHz)*IIM$,h%((MM 
8%
'	8)
+((001C1CD  '0{$3<;$$0I&
+
' )0010VV0E1]$78888##A&Is"""??m11111??m11111
+ 
+
' 
' 2s+   K,A5KK, K=
K)	%K,,
K:zsubfam,expected))Thinr  )
ExtraLight   )
UltraLightrz  )	DemiLight^  )	SemiLightr}  )rV  rX  )Booki|  )rW  rE   )NormalrE   )Medium  )DemiBoldrs   )Demirs   )SemiBoldrs   )	ExtraBold   )	SuperBoldr  )	UltraBoldr  )BoldrN   )
UltraBlack  )
SuperBlackr  )
ExtraBlackr  )Ultrar  )Black  )Heavyr  ) rE   c                     Sn[        5       n/ UQSP7SR                  S5      / UQSP7U R                  S5      0UR                  l        [	        US5      nUSU4/:X  d   eg)zD_get_font_alt_names derives weight from the paired subfamily string.rQ  r$   z
Family AltrU  r%   FamilyN)r   r`  ra  r_  r   )subfamexpectedri  rk  results        r0   #test_alt_name_weight_from_subfamilyr    sr    8 FI&!l))+6&!fmmK0'I# !H5F|X.////rI   c                     ^  " S S5      mU4S jn U " 5         [         R                  " 5        H,  n[        UT5      (       d  M  [        R                  " S5        M.     g )Nc                       \ rS rSrSrg)/test_donot_cache_tracebacks.<locals>.SomeObjecti  rH   N)r   r   r   r   r   rH   rI   r0   
SomeObjectr    s    rI   r  c                  t  > T" 5       n [         R                  " 5       nUR                  5       nUR                  SSSSS9  [	        5        n[
        R                  " 5          [
        R                  " S5        UR                  USS9  S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nr{   aardvarkdoesnotexistr7   rL   r   r   )	mfigureFigurer   r   r   rR   rS   rT   r   )xr   r   outr  s       r0   inner*test_donot_cache_tracebacks.<locals>.inner  s    Lnn\\^RN;Y#((*''1C. + Y** Ys$   
B) 'BB)
B&	"B))
B7z#object from inner stack still alive)gcget_objects
isinstancer*   fail)r  objr  s     @r0   test_donot_cache_tracebacksr    sD     / 
G~~c:&&KK=>  rI   c                      [         R                  " [        R                  5         [	        SS5        SSS5        [         R                  " [        R                  5         [	        SSS9  SSS5        [         R                  " [        R                  5         [	        S/5        SSS5        [	        SSS9  [	        SS9  [	        S5        [	        S5        [	        SS9  g! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Nc= f)	a;  
Test the deprecated API of FontProperties.__init__.

The deprecation does not change behavior, it only adds a deprecation warning
via a decorator. Therefore, the purpose of this test is limited to check
which calls do and do not issue deprecation warnings. Behavior is still
tested via the existing regular tests.
TimesitalicNr  )r^  )r8   r[  r7   z"serif-24:style=oblique:weight=bold)r*   r^   r_   r`   r   rH   rI   r0   $test_fontproperties_init_deprecationr  .  s     
c66	7w) 
8 
c66	7wR( 
8 
c66	7y! 
8
 '2'"778 >?7 
8	7 
8	7 
8	7s#   CC.C?
C+.
C<?
Dc                     [        S5      S:X  d   e[        S5      S:X  d   e[        S5      S:X  d   e[        S5      S:X  d   e[        S5      S:X  d   e[        S	5      S:X  d   e[        S
5      S:X  d   e[        S5      S:X  d   e[        S5      S:X  d   e[        S5      S:X  d   e[        S5      S:X  d   e[        S5      S:X  d   e[        S5      S:X  d   e[        S5      S:X  d   e[        S5      S:X  d   e[        R                  " [        5         [        S5        S S S 5        g ! , (       d  f       g = f)NrX  
ultralightr  lightrz  rF   rE   rC   bookmediumr  romansemiboldrs   demibolddemirD   rN   heavyr  z
extra boldblackr  invalid)r   r*   r+   KeyErrorrH   rI   r0   test_normalize_weightsr  U  s?   S!S(((\*c111W%,,,X&#---Y'3...V$+++X&#---W%,,,Z(C///Z(C///V$+++V$+++W%,,,\*c111W%,,,	x	 )$ 
!	 	 s   D//
D=c                     [        [        S/SS95        U R                   Vs/ s H  oR                  PM     nnSU;   d   eg s  snf )Nr   i  rO   z8findfont: Failed to find font weight 750, now using 700.)r   r   r   message)r   r   logss      r0   test_font_match_warningr  i  s@    ^M?3?@#)>>2>CKK>D2EMMM 3s   Ac                      [        5       n [        U 5      R                  S5      (       d   eU R                  S5        [        U 5      R                  S5      (       d   eg )NDejaVuSans.ttfrD   DejaVuSans-Bold.ttf)r   r   r   
set_weight)r-   s    r0   ,test_mutable_fontproperty_cache_invalidationr  o  sN    		BB<  !12222MM&B<  !67777rI   c                      S[         R                  S'   [        S5      R                  S5      (       d   eS[         R                  S'   [        S5      R                  S5      (       d   eg )NrF   zfont.weightr   r  rD   r  )r_   r   r   r   rH   rI   r0   ,test_fontproperty_default_cache_invalidationr  v  sX    "*CLLM"++,<===="(CLLM"++,ABBBBrI   )Uior   r  r   r   pathlibr   PILr   r   r.  rR   r*   unittest.mockr   r   
matplotlibr_   r  r  rc  r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  matplotlib.testingr   r   platformwhich
has_fclistr1   rA   rJ   rX   rh   markskipifrl   rw   r   r   r   r   r   r   r   r   hasattrrT   r   r   r&  r)  r1  r=  r?  rO  rw  parametrizer  r  r  r  r  r  r  rH   rI   r0   <module>r     s    	  	    
   *  (. . . . .
 T S P \\\)Qfll9.ET.Q
'@0A
< CLLG+=:~4  6,6,
#+&	+"8	A CLLG+=:~A  C(C(2-( CLLG+NC9 D96 CLLL0E  G$677=  ? PQLM+ N R?G+	8B7,	? CLLG+4FG: H:,R2j * - 4	054	0?,$@N%(N8CrI   