Ë
    íÍ:jäY  ã                   óØ  — d dl m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	Z	d dl
Z
d dlZd dlZd dlmZmZ d dlZd dlmZ d dlmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z# d dlm$Z$m%Z%m&Z'm(Z(m)Z* d dl+m,Z,m-Z- e
j\                  d	k7  xr  e	j^                  d
«      duZ0d„ Z1d„ Z2d„ Z3d„ Z4d„ Z5ejl                  jo                  e
j\                  dk(  xs e0 d¬«      d„ «       Z8d„ Z9d„ Z:d„ Z;d„ Z<d„ Z=ejl                  jo                  e
j\                  dk7  xs e0 d¬«      d„ «       Z>d„ Z?ejl                  jo                  e
j\                  dk7  d¬«      d„ «       Z@d„ ZAejl                  jo                  e
j\                  d	k(  d ¬«      ejl                  jo                   eBed!«       d"¬«      ejl                  j‡                  d#«      ejl                  j‡                  d$«      d%„ «       «       «       «       ZDd&„ ZEd'„ ZFd(„ ZGd)„ ZHd*„ ZId+„ ZJejl                  jo                  e
j\                  dk(  d,¬«      d-„ «       ZKd.„ ZLejl                  j›                  d/g d0¢«      d1„ «       ZNd2„ ZOd3„ ZPd4„ ZQd5„ ZRd6„ ZSd7„ ZTy)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                  ó²  — t        dd«      } t        dd«      }t        | «      dk(  sJ ‚t        | «      dk(  sJ ‚| j                  dk(  sJ ‚| j                  dk(  sJ ‚t        j                  t        d¬«      5  d| _        d d d «       t        j                  t        d¬«      5  d| _        d d d «       | dk(  sJ ‚| t        dd«      k(  sJ ‚| | k  sJ ‚| | k\  sJ ‚| |k7  sJ ‚| |k  sJ ‚| |k  sJ ‚|| kD  sJ ‚|| k\  sJ ‚| ddd	i}| |v sJ ‚||    dk(  sJ ‚|t        dd«         dk(  sJ ‚||vsJ ‚d|vsJ ‚t        dd
«      |vsJ ‚y # 1 sw Y   ŒÄxY w# 1 sw Y   Œ¥xY w)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      úw/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/matplotlib/tests/test_font_manager.pyÚtest_font_pathr1      sš  € Ü	�%˜Ó	€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ØˆR‰5�AŠ:Ðˆ:ØŒX�e˜SÓ!Ñ" aÒ'Ð'Ð'Ø�a‰<Ðˆ<Ø˜‰>Ðˆ>Ü�E˜1Ó QÑ&Ð&Ñ&÷+ð ú÷ð ús   Á6EÂ!EÅE
ÅEc                  ó  — t        dddgi¬«      5  t        t        dg¬«      «      } d d d «       t         «      j                  dk(  sJ ‚t        | «      }|j                  «       }t        |«      dk(  sJ ‚|d	   d
k(  sJ ‚y # 1 sw Y   ŒYxY w)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ñ Cô œN°<°.ÔAÓBˆ÷Cô �‹>×Ñ ,Ò.Ð.Ð.ô �HÓ€DØ×ÑÓ€DÜˆt‹9˜ÒÐÐØ�‰:˜ÒÐÑ÷Cð Cús   ‘B Â B	c                  ó®  — dt        j                  dd«      k(  sJ ‚dt        j                  dd«      k(  sJ ‚dt        j                  dd«      cxk  rt        j                  dd«      k  sJ ‚ J ‚dt        j                  dd«      cxk  rt        j                  dd«      k  sJ ‚ J ‚t        j                  dd«      t        j                  dd«      k(  sJ ‚y )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                 óX  — t        t        | dz  «       t        | dz  «      }t        j                  «       5  t        j
                  dd«       ddidddœdd	ifD ]:  }t        di |¤Ž}t        j                  |d
¬«      |j                  |d
¬«      k(  rŒ:J ‚ 	 d d d «       y # 1 sw Y   y xY w)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Ü	×	 Ñ	 Ó	"ñ AÜ×Ñ Ð*LÔMØ Ð.Ø 5ÀÑEØÐ 5Ð6ð8ò 	AˆDô  Ñ' $Ñ'ˆBÜ×(Ñ(¨ÀÔFØ—M‘M "¸�MÓ?ó@ð Að @ñ		A÷A÷ Añ Aús   ¶AB ÂB Â B)c                  ó2  — d} t        | «      j                  «       r:t        j                  t        j
                  «      5  t        | «      sJ ‚	 d d d «       t        j                  D ]‹  }d|j                  v sŒt        |j                  d«      5 }|j                  d«      dk(  }d d d «       t        j                  t        j
                  «      5  t        |j                  «      k(  sJ ‚	 d d d «       Œ� y # 1 sw Y   Œ¨xY w# 1 sw Y   Œ_xY w# 1 sw Y   Œ°xY w)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#   ¿C5ÂDÃDÃ5C>ÄD
	ÄD	Úwin32zno fontconfig installed)Úreasonc                  ó4   — t        t        «       «      dkD  sJ ‚y )Nr$   )r=   r   rH   rI   r0   Útest_get_fontconfig_fontsrl   r   s   € ô Ô$Ó&Ó'¨!Ò+Ð+Ñ+rI   c                  ó°   — 	 t        d„ t        j                  D «       «      } | j                  dk(  sJ ‚y # t        $ r t        j                  d«       Y y w xY w)Nc              3   ód   K  — | ](  }t        |j                  «      j                  d k(  r|–— Œ* y­w)zseguisbi.ttfN)r   rb   r;   )Ú.0Úentrys     r0   ú	<genexpr>z#test_utf16m_sfnt.<locals>.<genexpr>{   s0   è ø€ ò B˜uÜ˜UŸ[™[Ó)×.Ñ.°.Ò@ô ñ Bùs   ‚.0éX  z0Couldn't find seguisbi.ttf font to test against.)Únextr   ra   rP   ÚStopIterationr*   Úskip)rp   s    r0   Útest_utf16m_sfntrv   x   sZ   € ð	#äñ B¬×(;Ñ(;ô Bó Bˆð �|‰|˜sÒ"Ð"Ñ"øô ò HÜ�‰ÐFÖGðHús   ‚ 4 ´AÁAc                  óV  — t        dg¬«      } t        | «      }t        |«      j                  dk7  rt	        j
                  d«       dD ]‘  }t        t        |g¬«      d¬«      }|j                  |j                  k(  sJ ‚|j                  |j                  k7  sJ ‚t        |«      }|j                  |j                  k(  sJ ‚|j                  |j                  k(  rŒ‘J ‚ t        j                  «       \  }}|j                  ddd	| ¬
«       dD ]  }|j                  t        «       |¬«       Œ y )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*   ru   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Ø×!Ñ! [×%;Ñ%;Ó;Ð;Ð;ð<ô �l‰l‹n�G€CˆØ‡G�GˆB�Ð/À€GÔCØ*ò +ˆØ�‰”G“I cˆÕ*ñ+rI   c                  ó2  — t        ddg¬«      } t        t        | «      «      j                  }|dvrt	        j
                  d|› d�«       t        j                  «       \  }}|j                  ddd| ¬	«       d
D ]  }|j                  t        «       |¬«       Œ y )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 ú)rz   u   Hello, ä½ å¥½r{   r}   r‚   )r   r   r   r;   r*   ru   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                  óô  —  G d„ d«      } t        d«      }t        j                  |«      }t        |«      }|j                  |k(  sJ ‚t        |«      }|j                  |k(  sJ ‚t         | |«      «      }|j                  |k(  sJ ‚t         | |«      «      }|j                  |k(  sJ ‚t        t        |d«      «      }|j                  |k(  sJ ‚t        || | |«       | |«      g«      }|j                  |k(  sJ ‚y )Nc                   ó   — e Zd Zd„ Zd„ Zy)ú&test_find_valid.<locals>.PathLikeClassc                 ó   — || _         y ©N©Úfilename)Úselfr˜   s     r0   Ú__init__z/test_find_valid.<locals>.PathLikeClass.__init__¦   s	   € Ø$ˆD�MrI   c                 ó   — | j                   S r–   r—   )r™   s    r0   Ú
__fspath__z1test_find_valid.<locals>.PathLikeClass.__fspath__©   s   € Ø—=‘=Ð rI   N)Ú__name__Ú
__module__Ú__qualname__rš   rœ   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˜zÙ" 8Ó,©m¸JÓ.GðIó J€Dà�:‰:˜Ò!Ð!Ñ!rI   c                 ó�  — t        j                  t        «      5  t        | dz  «       d d d «       t        j                  t        «      5  t        t	        | dz  «      «       d d d «       t        j                  t        «      5  t        t        | dz  «      «       d d d «       y # 1 sw Y   Œ|xY w# 1 sw Y   ŒOxY w# 1 sw Y   y xY w)Nznon-existent-font-name.ttf)r*   r+   ÚFileNotFoundErrorr   r&   Úbytes)rU   s    r0   Útest_find_invalidrª   À   sª   € ä	�‰Ô(Ó	)ñ :Ü�Ð8Ñ8Ô9÷:ô 
�‰Ô(Ó	)ñ ?Ü”�XÐ <Ñ<Ó=Ô>÷?ô 
�‰Ô(Ó	)ñ AÜ”�xÐ">Ñ>Ó?Ô@÷Að A÷:ð :ú÷?ð ?ú÷Að Aús#   šB$Á
B0ÂB<Â$B-Â0B9Â<CÚlinuxz$only Linux with fontconfig installedc                 óR  ‡— dŠt        «       }t        ˆfd„|D «       «      rt        j                  ‰› d�«       | j	                  d«      }|j                  d¬«       t        j                  t        t        «      j                  dz  ‰z  |j	                  ‰«      «       |j                  «       5 }|j                  dt        | «      «       t        j                  «        t        «       }t        ˆfd	„|D «       «      sJ ‚	 d d d «       t        j                  «        y # 1 sw Y   ŒxY w)
Númpltest.ttfc              3   ó&   •K  — | ]  }‰|v –— Œ
 y ­wr–   rH   ©ro   r?   Úfont_test_files     €r0   rq   z(test_user_fonts_linux.<locals>.<genexpr>Ó   ó   øè ø€ Ò
4 dˆ>˜TÔ!Ñ
4ùó   ƒú already exists in system fontsÚfontsT)ÚdirÚdataÚXDG_DATA_HOMEc              3   ó&   •K  — | ]  }‰|v –— Œ
 y ­wr–   rH   r¯   s     €r0   rq   z(test_user_fonts_linux.<locals>.<genexpr>á   s   øè ø€ Ò<¨d�> TÔ)Ñ<ùr²   )r	   Úanyr*   ru   Ú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Ü�‰�~Ð&Ð&EÐFÔGð —[‘[ Ó)€NØ×Ñ˜dÐÔ#Ü
‡O�O”Dœ“N×)Ñ)¨FÑ2°^ÑCØ"×'Ñ'¨Ó7ô9ð 
×	Ñ	Ó	ð = !Ø	�‰�¤# f£+Ô.Ü×)Ñ)Ô+äÓ!ˆÜÓ<°eÔ<Ô<Ð<Ñ<÷=ô ×%Ñ%Õ'÷=ð =ús   Â/ADÄD&c                 óÀ  ‡— dŠt        t        «      j                  dz  ‰z  }	 t        j                  |«       t        j
                  d«      t        |d«      k(  sJ ‚| j                  «       5 }t        j                  t        «      5  |j                  dd«       t        j
                  dd¬«       d	d	d	«       d	d	d	«       ˆfd
„t        j                  D «       \  }t        j                  j                  |«       t        j                  D �cg c]  }|j                  j                  ‰«      r|‘Œ! }}|D ]!  }t        j                  j                  |«       Œ# y	# 1 sw Y   ŒªxY w# 1 sw Y   Œ®xY wc c}w # t        j                  D �cg c]  }|j                  j                  ‰«      r|‘Œ! nc c}w }}|D ]!  }t        j                  j                  |«       Œ# w xY w)z/Smoke test that addfont() accepts pathlib.Path.r­   r¶   zmpltest:weight=500r   ÚMPL_IGNORE_SYSTEM_FONTSÚtrueFrx   Nc              3   óX   •K  — | ]!  }|j                   j                  ‰«      r|–— Œ# y ­wr–   )rb   Úendswithr¯   s     €r0   rq   z'test_addfont_as_path.<locals>.<genexpr>ñ   s*   øè ø€ ò :˜4Ø—Z‘Z×(Ñ(¨Ô8ô ñ :ùs   ƒ'*)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Ø× Ñ Ó"ð 	R a¬¯©´zÓ)Bñ 	RØ�H‰HÐ.°Ô7Ü× Ñ Ð!5È5ÕQ÷	R÷ 	Ró:¤;×#6Ñ#6ô :‰ˆä×Ñ×"Ñ" 5Ô)ä&1×&9Ñ&9ö =˜dØŸ
™
×+Ñ+¨NÔ;ò ð =ˆ	ð =àò 	-ˆDÜ×Ñ×&Ñ& tÕ,ñ	-÷	Rð 	Rú÷ 	Rð 	Rüò=ø¤k×&9Ñ&9ö =˜dØŸ
™
×+Ñ+¨NÔ;ò ñ =ùò =ˆ	ð =àò 	-ˆDÜ×Ñ×&Ñ& tÕ,ñ	-úsO   ¤A	E7 Á-E&Â*EÂ1E&Â9AE7 Ä$E2ÅE#	ÅE&Å&E/Å+E7 Å7GÆ
$F/Æ./GzWindows onlyc                  ó(  ‡— t         j                  j                  d«      s4t         j                  j                  d«      st        j                  d«       t        j                  d«       dŠt        «       } t        ˆfd„| D «       «      rt        j                  ‰› d�«       t        d   }t        j                  |«       t        j                  t        t        «      j                  d	z  ‰z  |«       t        «       } t        ˆfd
„| D «       «      sJ ‚y )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   ó&   •K  — | ]  }‰|v –— Œ
 y ­wr–   rH   r¯   s     €r0   rq   z(test_user_fonts_win32.<locals>.<genexpr>  r±   r²   r³   r   r¶   c              3   ó&   •K  — | ]  }‰|v –— Œ
 y ­wr–   rH   r¯   s     €r0   rq   z(test_user_fonts_win32.<locals>.<genexpr>  s   øè ø€ Ò8¨$ˆ~ Ô%Ñ8ùr²   )r¢   ÚenvironÚgetr*   Úxfailr	   r¹   ru   r   Úmakedirsr¼   rV   r   r¾   r¿   )r´   rÅ   r°   s     @r0   Útest_user_fonts_win32rÜ   û   sÎ   ø€ ä�J‰J�N‰N˜:Ô&¬"¯*©*¯.©.¸Ô*DÜ�‰ð "ô 	#ô ‡L�LÐGÔHØ"€Nô Ó€EÜ
Ó
4¨eÔ
4Ô4Ü�‰�~Ð&Ð&EÐFÔGä*¨1Ñ-€Nô ‡K�K�Ôô ‡K�K””X“×%Ñ%¨Ñ.°Ñ?ÀÔPô Ó€EÜÓ8°%Ô8Ô8Ð8Ñ8rI   c                 ó�   — t        j                  «       \  }}|j                  t        «       d¬«       t        j                  «        y )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                  óÐ   — t        d«       t        j                  d«      } | j                  d¬«      5 }|j	                  t         t        d«      «       d d d «       y # 1 sw Y   y xY w)Nr   Úforkr%   )Ú	processes)rà   ÚmultiprocessingÚget_contextÚPoolÚmapÚrange)ÚctxÚpools     r0   Ú	test_forkrì     sS   € ô �1ÔÜ
×
%Ñ
% fÓ
-€CØ	�‰˜AˆÓ	ð + $Ø�‰”¤ q£Ô*÷+÷ +ñ +ús   ³ AÁA%c                 óö   — dgt         j                  d<   | j                  d«      5  t        d«       d d d «       | j                  D �cg c]  }|j                  «       ‘Œ c}ddgk(  sJ ‚y # 1 sw Y   Œ9xY wc c}w )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ö   +  sw   € Ø'AÐ&B„C‡L�LÐ"Ñ#Ø	�‰˜Ó	#ñ Ü�Ô÷à(.¯©Ö7 ˆC�N‰NÕÒ7ð	'ð	Bð<ò ð ñ ÷ð üâ7s   ¦A*ÁA6Á*A3c                  ón  ‡‡‡	— dd l } ddlmŠ dd lmŠ	 d„ }|| _        d}| j                  |«      Šˆˆˆ	fd„}t        |«      D �cg c]  }| j                  |d|› �|f¬«      ‘Œ }}|D ]  }|j                  «        Œ |D ]/  }|j                  d¬	«       |j                  «       sŒ&t        d
«      ‚ y c c}w )Nr   )Ú	LoadFlagsc                 ó   — t        d«      ‚)Nzerror in thread!)ÚRuntimeError)Úargss    r0   Úloud_excepthookz(_test_threading.<locals>.loud_excepthook<  s   € ÜÐ-Ó.Ð.rI   é
   c                 óØ   •— ‰j                  d¬«       t        d«      D ]I  }‰j                  ‰j                  d«      «      }|j	                  t        | «      d‰j                  ¬«       ŒK y )Né   ©Útimeoutéd   r¡   g        )Úflags)Úwaitré   r   r   Úset_textr&   Ú
NO_HINTING)ÚnÚjr?   rø   ÚbÚfms      €€€r0   Úbad_ideaz!_test_threading.<locals>.bad_ideaD  sY   ø€ Ø	�‰�qˆÔÜ�s“ò 	CˆAØ—;‘;˜rŸ{™{¨=Ó9Ó:ˆDØ�M‰Mœ#˜a›& #¨Y×-AÑ-AˆMÕBñ	C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Ç   ú€ ÛÝ,Ý(ò/ð +€IÔà
€AØ×Ñ˜!Ó€AöCô �q“öàð 	×Ñ °¸Q¸CÐ/@ÈÀtÐÕLð€Gð ð
 ò ˆØ	�‰�	ðð ò 8ˆØ	�‰�qˆÔØ�:‰:�<ÜÐ6Ó7Ð7ñ8ùòs   ÁB2c                  óP   — t        j                  d«       t        t        d¬«       y )Nr  rý   r   )r*   Úimportorskipr   r  rH   rI   r0   Útest_fontcache_thread_safer  X  s   € Ü
×Ñ˜Ô$äœ/°2Ö6rI   c                 ó|   — t        t        j                  ddgi t        j                  ¥dt        | «      i¥d¬«      }y )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_lockfilefailurer&  ^  s>   € ô &ä�N‰NØð.ð	
ð :Œr�z‰zÐ9˜>¬3¨x«=Ñ9Øô�DrI   c                  ó  — t        d¬«      } | j                  «       }t        j                  t	        |«      «      }|j
                  dkD  sJ ‚|j                  dkD  sJ ‚| j                  «       }|j                  d«      sJ ‚y )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_dataclassr2  t  sm   € Ü˜[Ô)€Gà
×
Ñ
Ó
€CÜ
�*‰*”W˜S“\Ó
"€CØ�9‰9�qŠ=Ðˆ=Ø�:‰:˜Š>Ðˆ>à×ÑÓ €DØ�?‰?Ð=Ô>Ð>Ñ>rI   c                  óš   — t        j                  t        «      5  t        dd¬«      } | j	                  «        d d d «       y # 1 sw Y   y xY w)Nz/randomr(  )rb   r;   )r*   r+   r¨   r
   r,  )r.  s    r0   Ú%test_fontentry_dataclass_invalid_pathr4  €  s<   € Ü	�‰Ô(Ó	)ñ Ü )°+Ô>ˆØ×ÑÔ÷÷ ñ ús   šAÁA
zLinux or OS onlyc                  ó8  — dD � cg c]  } t        j                  d| «      ‘Œ }} t        |d¬«      }t        d¬«      }t        «       }||z   D ]–  }	 t	        j
                  |«      }t        |«      }|j                  |j                  «       t        d|j                  «      D ]?  }t	        j
                  ||¬«      }t        |«      }|j                  |j                  «       ŒA Œ˜ |t        t        j                  «       «      k  sJ ‚y c c} w # t        $ r Y ŒÌw xY w)N)Úttfr´   r6  )Ú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_namesrD  †  sü   € àELÖM¸6”×%Ñ% g¨vÕ6ÐM€IÐMÜ 	°5Ô9€IÜ"¨5Ô1€LÜ“€IØ˜LÑ(ò 
ˆð		Ü—?‘? 4Ó(ˆDÜ" 4Ó(ˆDØ�M‰M˜$Ÿ)™)Ô$Ü# A t§~¡~Ó6ò )�
Ü—‘ t¸
ÔC�Ü& tÓ,�Ø—‘˜dŸi™iÕ(ñ)ð
ð œœK×6Ñ6Ó8Ó9Ò9Ð9Ñ9ùò% Nøô ò 	Ùð	ús   …DÁBDÄ	DÄDc           
      óò  — d}d}g |¢d‘­dj                  d«      g |¢d‘­dj                  d«      g |¢d‘­d	j                  d«      g |¢d‘­d
j                  d«      i}t        «       }||j                  _        t	        |d«      dgk(  sJ ‚t	        |d«      dgk(  sJ ‚g |¢d‘­dj                  d«      g |¢d‘­dj                  d«      g |¢d‘­dj                  d«      i}t        «       }||j                  _        t	        |d«      dgk(  sJ ‚g |¢d‘­dj                  d«      g |¢d‘­dj                  d«      i}t        «       }||j                  _        t	        |d«      g k(  sJ ‚t        «       }	t
        |	j                  _        t	        |	d«      g k(  sJ ‚t        | dz  «      }
t        |
dddddd¬«      }t        d|¬«      5  t        d|¬«      5  t        j                  j                  t        j                  «      }g |_        g |_        t        «       |_        t        «       |j                  _        |j#                  |
«       ddd«       ddd«       j                  D �cg c]  }|j$                  ‘Œ }}|ddgk(  sJ ‚|j                  d   }|j&                  dk(  sJ ‚|j(                  |j(                  k(  sJ ‚|j*                  |j*                  k(  sJ ‚y# 1 sw Y   Œ”xY w# 1 sw Y   Œ˜xY wc c}w )aM  
    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)rI  rE   )rH  é,  é   zfake.ttfrF   rM  Úscalable)rb   r;   ÚstyleÚvariantrP   ÚstretchÚsizez'matplotlib.font_manager.ft2font.FT2Font)Úreturn_valuez'matplotlib.font_manager.ttfFontPropertyNrE   )Úencoder   Úget_sfntrT  r   rÎ   Úside_effectr&   r
   r   Úfm_modÚFontManagerÚ__new__ra   ÚafmlistÚ_findfont_cachedrÂ   rÍ   r;   rP   rP  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_namesrl  �  s<  € ð €GØ€Fð 	ˆ'ˆ�1‰�}×+Ñ+¨IÓ6Øˆ&ˆ�1‰Ð*×1Ñ1°+Ó>Øˆ'ˆ�1‰�w—~‘~ iÓ0Øˆ&ˆ�1‰�y×'Ñ'¨Ó4ð	Ðô “€IØ&7€I×ÑÔ#ä˜y¨-Ó8Ð=WÐ<XÒXÐXÐXÜ˜yÐ*=Ó>ØðCò ð ð ð 	ˆ'ˆ�1‰˜×,Ñ,¨YÓ7Øˆ&ˆ�1‰˜×,Ñ,¨[Ó9Øˆ&ˆ�2‰Ð+×2Ñ2°;Ó?ð€Iô
 “[€NØ+4€N×ÑÔ(äØ˜óà
$Ð	%ò&ð &ð &ð 	ˆ'ˆ�1‰�}×+Ñ+¨IÓ6Øˆ&ˆ�1‰�}×+Ñ+¨KÓ8ð€Iô “[€NØ+4€N×ÑÔ(Ü˜~¨}Ó=ÀÒ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˜ˆQ�V‹VÐ1€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(É'K4ËK%	Ë!K(Ë(K1zsubfam,expected))ÚThinr  )Ú
ExtraLightéÈ   )Ú
UltraLightro  )Ú	DemiLighté^  )Ú	SemiLightrr  )rK  rM  )ÚBooki|  )rL  rE   )ÚNormalrE   )ÚMediuméô  )ÚDemiBoldrr   )ÚDemirr   )ÚSemiBoldrr   )Ú	ExtraBoldé   )Ú	SuperBoldr|  )Ú	UltraBoldr|  )ÚBoldrN   )Ú
UltraBlackéè  )Ú
SuperBlackr�  )Ú
ExtraBlackr�  )ÚUltrar�  )ÚBlacké„  )ÚHeavyr†  )Ú rE   c                 óÂ   — d}t        «       }g |¢d‘­dj                  d«      g |¢d‘­| j                  d«      i|j                  _        t	        |d«      }|d|fgk(  sJ ‚y)zD_get_font_alt_names derives weight from the paired subfamily string.rF  r$   z
Family AltrJ  r%   ÚFamilyN)r   rU  rV  rT  r   )ÚsubfamÚexpectedr^  r`  Ú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                  ó¨   ‡—  G d„ d«      Šˆfd„}  | «        t        j                  «       D ]$  }t        |‰«      sŒt        j                  d«       Œ& y )Nc                   ó   — e Zd Zy)ú/test_donot_cache_tracebacks.<locals>.SomeObjectN)r�   rž   rŸ   rH   rI   r0   Ú
SomeObjectr‘    s   „ ØrI   r’  c                  óf  •—  ‰«       } t        j                  «       }|j                  «       }|j                  dddd¬«       t	        «       5 }t        j                  «       5  t        j                  d«       |j                  |d¬«       d d d «       d d d «       y # 1 sw Y   ŒxY w# 1 sw Y   y xY w)Nrz   ÚaardvarkÚdoesnotexistr7   rL   r~   r‚   )	ÚmfigureÚFigurer…   r†   r   rR   rS   rT   r‡   )Úxr‹   rŒ   Úoutr’  s       €r0   Úinnerz*test_donot_cache_tracebacks.<locals>.inner  s•   ø€ Ù‹LˆÜ�n‰nÓˆØ�\‰\‹^ˆØ�‰��R˜¨NˆÔ;Ü‹Yð 	/˜#Ü×(Ñ(Ó*ñ /Ü×'Ñ'¨Ô1Ø—‘˜C¨�Ô.÷/÷	/ð 	/÷/ð /ú÷	/ð 	/ús$   ÁB'Á!)BÂ
B'ÂB$	Â B'Â'B0z#object from inner stack still alive)ÚgcÚget_objectsÚ
isinstancer*   Úfail)rš  Úobjr’  s     @r0   Útest_donot_cache_tracebacksr     sF   ø€ ÷ñ ô/ñ 
„Gä�~‰~Óò ?ˆÜ�c˜:Õ&Ü�K‰KÐ=Õ>ñ?rI   c                  ó  — t        j                  t        j                  «      5  t	        dd«       ddd«       t        j                  t        j                  «      5  t	        dd¬«       ddd«       t        j                  t        j                  «      5  t	        dg«       ddd«       t	        dd¬«       t	        d¬«       t	        d«       t	        d«       t	        d¬«       y# 1 sw Y   Œ¶xY w# 1 sw Y   Œ‰xY w# 1 sw Y   Œ]xY w)	aS  
    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ý   )rS  )r8   rP  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 Ô)÷*ô 
�‰”c×6Ñ6Ó	7ñ )ä�w RÕ(÷)ô 
�‰”c×6Ñ6Ó	7ñ "ä˜�yÔ!÷"ô
 ˜'¨Õ2Ü˜'Õ"Ü�7ÔÜÐ7Ô8ô Ð>Ö?÷7*ð *ú÷)ð )ú÷"ð "ús#   ¤C&ÁC2ÂC>Ã&C/Ã2C;Ã>Dc                  óV  — t        d«      dk(  sJ ‚t        d«      dk(  sJ ‚t        d«      dk(  sJ ‚t        d«      dk(  sJ ‚t        d«      dk(  sJ ‚t        d	«      dk(  sJ ‚t        d
«      dk(  sJ ‚t        d«      dk(  sJ ‚t        d«      dk(  sJ ‚t        d«      dk(  sJ ‚t        d«      dk(  sJ ‚t        d«      dk(  sJ ‚t        d«      dk(  sJ ‚t        d«      dk(  sJ ‚t        d«      dk(  sJ ‚t        j                  t        «      5  t        d«       d d d «       y # 1 sw Y   y xY w)NrM  Ú
ultralightr  Úlightro  rF   rE   rC   ÚbookÚmediumrw  ÚromanÚsemiboldrr   ÚdemiboldÚdemirD   rN   Úheavyr|  z
extra boldÚblackr†  Úinvalid)r   r*   r+   ÚKeyErrorrH   rI   r0   Útest_normalize_weightsr²  U  sH  € Ü˜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                 óŽ   — t        t        dgd¬«      «       | j                  D �cg c]  }|j                  ‘Œ }}d|v sJ ‚y c c}w )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  sA   € ÜŒ^ M ?¸3Ô?Ô@Ø#)§>¡>Ö2˜CˆC�K‹KÐ2€DÐ2ØEÈÑMÐMÑMùò 3s   ¦Ac                  óª   — t        «       } t        | «      j                  d«      sJ ‚| j                  d«       t        | «      j                  d«      sJ ‚y )NúDejaVuSans.ttfrD   úDejaVuSans-Bold.ttf)r   r   rÌ   Ú
set_weight)r-   s    r0   Ú,test_mutable_fontproperty_cache_invalidationr»  o  sH   € Ü	Ó	€BÜ�B‹<× Ñ Ð!1Ô2Ð2Ð2Ø‡M�M�&ÔÜ�B‹<× Ñ Ð!6Ô7Ð7Ñ7rI   c                  óÀ   — dt         j                  d<   t        d«      j                  d«      sJ ‚dt         j                  d<   t        d«      j                  d«      sJ ‚y )NrF   zfont.weightr¡   r¸  rD   r¹  )r_   rð   r   rÌ   rH   rI   r0   Ú,test_fontproperty_default_cache_invalidationr½  v  sR   € Ø"*„C‡L�L�ÑÜ�MÓ"×+Ñ+Ð,<Ô=Ð=Ð=Ø"(„C‡L�L�ÑÜ�MÓ"×+Ñ+Ð,AÔBÐBÑBrI   )UÚior   r›  rå   r¢   Úpathlibr   ÚPILr   r¼   r#  rR   r*   Úunittest.mockr   r   Ú
matplotlibr_   r  r  rX  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   rv   rŽ   r‘   r¦   rª   rÇ   rÒ   rÜ   rà   ÚhasattrrT   rì   rö   r  r  r&  r2  r4  rD  rl  ÚparametrizerŽ  r   r¤  r²  r¶  r»  r½  rH   rI   r0   ú<module>rË     s¡  ðÝ Û 	Û Û 	Ý Ý Û Û 
Û ã ç *ã Ý (÷.÷ .÷ .÷ .ñ .÷
 TÕ Sß Pð �\‰\˜\Ñ)ÒQ¨l¨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%ò(Nò8óCrI   