ó
    “’¤jZ  ã                   óê  • 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      Ú°C:\Users\johnn\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\matplotlib/tests/test_font_manager.pyÚtest_font_pathr1      sv  € Ü	�%˜Ó	€BÜ
�5˜#Ó
€CÜˆr‹7�eÓÐÐÜ�‹8Ð-Ó-Ð-Ð-Ø�7‰7�eÓÐÐØ�=‰=˜CÓÐÐä	�Š”~¨_Ó	=ØˆŒ÷ 
>ä	�Š”~¨_Ó	=ØˆŒ÷ 
>ð �‹;Ðˆ;Ø”˜% Ó%Ó%Ð%Ð%Ø‹8€Oˆ8Ø‹8€Oˆ8Ø‹9Ðˆ9Ø‹8€Oˆ8Ø‹9Ðˆ9Ø‹8€Oˆ8Ø‹9Ðˆ9à	ˆQ��qÐ€AØ‹7€Nˆ7Ø‰5�A‹:Ðˆ:ØŒX�e˜SÓ!Ñ" aÓ'Ð'Ð'Ø‹<Ðˆ<Ø˜‹>Ðˆ>Ü�E˜1Ó 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Üˆt‹9˜ÓÐÐØ�‰:˜ÓÐÑ÷
0õ 
0ús   Ž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Ü×$Ò$ X¨vÓ6ó7ð 8ñ 7ð 8ð 7à”×(Ò(¨°9Ó=õ 7Ü×$Ò$ X¨vÓ6ó7ð 8ñ 7ð 8ð 7ä×$Ò$ X¨yÓ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±   € ô Œk˜8 oÑ5Ô6Ü�X Ñ/Ó0€DÜ	×	 Ò	 Õ	"Ü×Ò Ð*LÔMØ Ð.Ø 5ÀÑEØÐ 5Ð6ó8ˆDô  Ñ' $Ñ'ˆBÜ×(Ò(¨ÀÑFØ—M‘M "¸�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ƒ{×Ñ×ÑÜ�\Š\œ#×:Ñ:Õ;Ü'¨×.Ñ.Ð.Ñ.÷ <ä× Ô ˆØ�A—G‘GÕÜ�a—g‘g˜tÔ$¨Ø—g‘g˜a“j GÑ+�÷ %ä—’œc×>Ñ>Õ?ØÔ2°1·7±7Ó;Ó;Ð;Ñ;÷ @Ñ?ò	 !÷ <Õ;ú÷ %Õ$úç?Ö?ú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Ñ	5€BÜ˜‹|€HÜˆHƒ~×ÑÐ.Ó.Ü�ŠÐ8Ô9ãEˆÜœ~°d°VÑ<ÐRWÑXˆØ×Ñ 8§=¡=Ó0Ð0Ð0Ø×%Ñ%¨×)<Ñ)<Ó<Ð<Ð<Ü˜;Ó'ˆØ�}‰} × 0Ñ 0Ó0Ð0Ð0Ø×!Ñ! [×%;Ñ%;Õ;Ð;Ð;ñ Fô �lŠl‹n�G€CØ‡G�GˆB�Ð/À€GÑCÛ*ˆØ�‰”G“I cˆÓ*ò +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ƒ   € Ü	Ð 2Ð4FÐGÑ	H€BÜ”˜“Ó×"Ñ"€DØÐKÓKÜ�ŠÐBÀ4À&ÈÐJÔKä�lŠl‹n�G€CØ‡G�GˆC��o°b€GÑ9Û*ˆØ�‰”G“I cˆÓ*ò +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Ø�:‰:˜Ó#Ð#Ð#Ü”H˜X qÓ)Ó*€DØ�:‰:˜Ó!Ð!Ð!ô �XÙ" 8Ó,©m¸JÓ.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>Ó   ó   øé € Ð
4ªe dˆ>˜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   øé € Ð<²e¨d�> TÖ)²eùr¹   )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Ü
Ô
4©eÓ
4×4Ñ4Ü�Š�~Ð&Ð&EÐFÔGð —[‘[ Ó)€NØ×Ñ˜dÐÑ#Ü
‡O‚O”Dœ“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,   øé € ð :Ò#6˜4Ø—Z‘Z×(Ñ(¨×8÷ ‘$Ò#6ùs   ƒ$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Ó9¼XÀdÈAÓ=NÓNÐNÐNØ× Ñ Ô" a¬¯ª´zÕ)BØ�H‰HÐ.°Ô7Ü× Ò Ð!5È5ÒQ÷ *C×"ô:¤;×#6Ò#6ó :‰ˆä×Ñ×"Ñ" 5Ô)ä&1×&9Ò&9ó =Ò&9˜dØŸ
™
×+Ñ+¨N×;÷ Ñ&9ˆ	ð =ãˆDÜ×Ñ×&Ñ& tÖ,ò ÷ *CÕ)Bú×"Õ"üò=ø¤k×&9Ò&9ó =Ò&9˜dØŸ
™
×+Ñ+¨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Ú   ø€ ä�J‰J�N‰N˜:×&Ñ&¬"¯*©*¯.©.¸×*DÑ*DÜ�Šð "ô 	#ô ‡L‚LÐGÔHØ"€Nô Ó€EÜ
Ô
4©eÓ
4×4Ñ4Ü�Š�~Ð&Ð&EÐFÔGä*¨1Ñ-€Nô ‡K‚K�Ôô ‡K‚K””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*   € Ü�lŠl‹n�G€CØ‡K�K”“	 %€KÑ(Ü‡I‚I…KrI   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Ð&B„C‡L�LÐ"Ñ#Ø	�‰˜Õ	#Ü�Ô÷ 
$à(.¯ªÓ7ª �N‰NÖ©Ñ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é   ©Útimeoutéd   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Ø�M‰Mœ#˜a›& #¨Y×-AÑ-AˆMÓ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ð 	×Ñ °¸Q¸CÐ/@ÈÀ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>   € ô &ä�N‰NØð.ð	
ð :Œr�z‰zÐ9˜>¬3¨x«=Ñ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Ü
�*Š*”W˜S“\Ó
"€CØ�9‰9�q‹=Ðˆ=Ø�:‰:˜‹>Ðˆ>à×ÑÓ €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ÓMÂW¸6”×%Ò% g¨vÖ6ÁW€IÐMÜ 	°5Ñ9€IÜ"¨5Ñ1€LÜ“€IØÔ(ˆð		Ü—?’? 4Ó(ˆDÜ" 4Ó(ˆDØ�M‰M˜$Ÿ)™)Ô$Ü# A t§~¡~Ö6�
Ü—’ tÑC�Ü& tÓ,�Ø—‘˜dŸi™iÖ(ó 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  oÝR$                  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ä�H˜zÑ)Ó*€IÜ I°MØ$,°hØ%(°(ÀñM€Mô 
Ð8Ø%ó
'ä	Ð8Ø)ó
+ä×(Ñ(×0Ñ0´×1CÑ1CÓDˆØ ˆÔØ ˆÔÜ'0£{ˆÔ$Ü3<³;ˆ×$Ñ$Ô0Ø×Ñ˜IÔ&÷
+÷
'ð )×0Ò0Ó1Ò0˜�VŒVÑ0€EÐ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Øˆ&ˆ�!‰�f—m‘m KÓ0ð'€I×ÑÔ#ô ! ¨HÓ5€FØ�| 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ˆÜ�nŠnÓˆØ�\‰\‹^ˆØ�‰��R˜¨NˆÑ;ÜŒY˜#Ü×(Ò(Õ*Ü×'Ò'¨Ô1Ø—‘˜C¨�Ñ.÷ +÷ ˆYß*Õ*ú÷ �Yús$   Á
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˜:×&Ó&Ü�KŠKÐ=Ö>ò  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ä�w RÒ(÷ 
8ô 
�Š”c×6Ñ6Õ	7ä˜�yÔ!÷ 
8ô
 ˜'¨Ò2Ü˜'Ò"Ü�7ÔÜÐ7Ô8ô Ð>Ó?÷7 
8Õ	7ú÷ 
8Õ	7ú÷ 
8Õ	7ús#   ¥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n[        [        U/SS95        SU S3nU R                   Vs/ s H  o3R                  PM     nnX$;   d   eg s  snf )Nr§   iî  rO   z-findfont: Failed to find font weight 750 for z, now using 700.)r   r   rû   Úmessage)rý   r?   r—  rþ   Úlogss        r0   Útest_font_match_warningrÂ  i  sR   € Ø€DÜŒ^ D 6°#Ñ6Ô7Ø>¸t¸fÐDTÐU€HØ#)§>¢>Ó2¢>˜C�KŒK¡>€DÐ2ØÓÐÑùò 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Ç  q  sN   € Ü	Ó	€BÜ�B‹<× Ñ Ð!1×2Ñ2Ð2Ð2Ø‡M�M�&ÔÜ�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É  x  sX   € Ø"*„C‡L�L�ÑÜ�MÓ"×+Ñ+Ð,<×=Ñ=Ð=Ð=Ø"(„C‡L�L�ÑÜ�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ð �\‰\˜\Ñ)×Q¨f¯lªl¸9Ó.EÈTÐ.Q€
ò'ò@ò0òAò
<ð ‡�×Ñ�C—L‘L GÑ+×=°:¬~Ø4ð ð 6ñ,ó6ð,ò
#ò+ò&	+ò"ò8	Að ‡�×Ñ�C—L‘L GÑ+×=°:¬~ØAð ð Cñ(óCð(ò2-ð( ‡�×Ñ�C—L‘L GÑ+°NÐÐCñ9ó Dð9ò6ð ‡�×Ñ�C—L‘L LÑ0ØEð ð Gà‡�×Ñ™ Ð$6Ó7Ô7Ø=ð ð ?ð ‡�×ÑÐPÓQØ‡�×ÑÐLÓMñ+ó Nó Ró?óGð+ò	ò8òB7òò,	?òð ‡�×Ñ�C—L‘L GÑ+Ð4FÐÐGñ:ó Hð:ò,R2ðj ‡�×ÑÐ*ò -ó ñ4	0ó5ð4	0ò?ò,$@òN%ò(ò8óCrI   