o
    i                     @   s  d dl mZmZ d dlZd dlZd dlmZ d dlZd dlZd dl	Z	d dl
Zd dlZd dlmZ d dlmZ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 edduZ dd	 Z!d
d Z"dd Z#dd Z$ej%j&e  dddd Z'ej%(dg ddd Z)dd Z*dd Z+dd Z,ej%j&ej-dkddd d! Z.ej%j&ej-d"kd#dd$d% Z/d&d' Z0ej%j&e1ed( d)dd*d+ Z2dS ),    )BytesIOStringION)Path)font_manager)findfontfindSystemFontsFontPropertiesfontManager	json_dump	json_loadget_fontget_fontconfig_fontsis_opentype_cff_fontMSUserFontDirectories_call_fc_list)pyplot
rc_contextzfc-listc                  C   s   t dddgid ttdgd} W d    n1 sw   Y  t| jdks*J t| } |  }t|dks:J |d	 d
ksBJ d S )Nzfont.sans-serifcmmi10Bitstream Vera Sans)rc
sans-seriffamilyz
cmmi10.ttf   i"     )r   r   r   r   namer   get_charmaplen)fontcmap r    ]/var/www/edux/Edux_v2/venv/lib/python3.10/site-packages/matplotlib/tests/test_font_manager.pytest_font_priority   s   
r"   c                   C   s   dt ddks
J dt ddksJ dt dd  k r't ddk s*J  J dt dd  k r=t ddk s@J  J t ddt ddksNJ d S )Nr   regularboldi  normal)r	   score_weightr    r    r    r!   test_score_weight$   s   



r'   c                 C   s   t | d}tt| t|}t 5 tdd ddiddddd	ifD ]}tdi |}tj|d
d|j|d
dks>J q%W d    d S 1 sJw   Y  d S )Nzfontlist.jsonignorez findfont: Font family.*not foundr   STIXGeneralr   i  )r   weightzno such font familyF)rebuild_if_missingr    )	r   r
   r	   r   warningscatch_warningsfilterwarningsr   r   )tmpdirpathcopypropfpr    r    r!   test_json_serialization/   s   



"r4   c               	   C   s   d} t |  rt| sJ tjD ]-}d|jv r>t|jd}|ddk}W d    n1 s0w   Y  |t|jks>J qd S )Nz//usr/share/fonts/opentype/freefont/FreeMono.otfotfrb   s   OTTO)r   existsr   r	   ttflistfnameopenread)r:   ffdresr    r    r!   test_otf?   s   

r@   zno fontconfig installed)reasonc                   C   s   t t dks	J d S )N   )r   r   r    r    r    r!   test_get_fontconfig_fontsJ   s   rC   factor)   r7         c                 C   s   t tdgd}t|dd}|  |dd |d | }t|| d}|  |dd |d tjj	| |dd	 d S )
Nr   r   rB   )hinting_factor   d   abcg?)rtol)
r   r   r   clearset_sizeset_textget_width_heightnptestingassert_allclose)rD   r   font1expectedhinted_fontr    r    r!   test_hinting_factorO   s   


rW   c                  C   sJ   zt dd tjD } W n ty   td Y d S w | jdks#J d S )Nc                 s   s$    | ]}t |jjd kr|V  qdS )zseguisbi.ttfN)r   r:   r   ).0entryr    r    r!   	<genexpr>e   s    z#test_utf16m_sfnt.<locals>.<genexpr>z#Couldn't find font to test against.iX  )nextr	   r9   StopIterationpytestskipr*   )rY   r    r    r!   test_utf16m_sfntb   s   r_   c                  C   s  t dgd} tt| jdkr.tjdrtjdkrt	
d t  tt| jdks.J t \}}|jddd| d	 |jt d
d |jt dd t	t |jt dd W d    n1 sew   Y  t	t |jt dd W d    d S 1 sw   Y  d S )NzWenQuanYi Zen Heir   zwqy-zenhei.ttcTRAVISlinuxzFont may be missingg      ?u   ⿓)fontpropertiesrawformatsvgpdfps)r   r   r   r   osenvirongetsysplatformr]   r^   fm_rebuildpltsubplotstextsavefigr   raisesRuntimeError)r3   figaxr    r    r!   test_find_ttco   s    
"rx   c                 C   s   t | }tt t|d  W d    n1 sw   Y  tt tt|d  W d    n1 s7w   Y  tt tt|d  W d    n1 sTw   Y  ddlm} tjt	dd |t
  W d    d S 1 sww   Y  d S )Nznon-existent-font-name.ttfr   )FT2Fontzpath or binary-mode file)match)r   r]   rt   FileNotFoundErrorr   strbytesmatplotlib.ft2fontry   	TypeErrorr   )r/   tmp_pathry   r    r    r!   test_find_invalid   s   "r   ra   z
Linux onlyc                    s   d t  }t fdd|D rt  d | d}|jdd ttt	j
  |  | $}|dt|  t  t  }t fd	d|D sRJ W d    n1 s\w   Y  t  d S )
Nmpltest.ttfc                 3       | ]} |v V  qd S Nr    rX   r   font_test_filer    r!   rZ          z(test_user_fonts_linux.<locals>.<genexpr> already exists in system fontsfontsT)dirXDG_DATA_HOMEc                 3   r   r   r    r   r   r    r!   rZ      r   )r   anyr]   r^   joinensureshutilcopyfiler   __file__parentcontextsetenvr|   r   cache_clear)r/   monkeypatchr   user_fonts_dirmr    r   r!   test_user_fonts_linux   s    

r   win32zWindows onlyc                     s   t jddst jddstd d t } t fdd| D r+t  d td	 }t 	| t
ttj  | t } t fd
d| D sOJ d S )NAPPVEYORFTF_BUILDznThis test should only run on CI (appveyor or azure) as the developer's font directory should remain unchanged.r   c                 3   r   r   r    r   r   r    r!   rZ      r   z(test_user_fonts_win32.<locals>.<genexpr>r   r   c                 3   r   r   r    r   r   r    r!   rZ      r   )ri   rj   rk   r]   xfailr   r   r^   r   makedirsr   r1   r   r   r   )r   r   r    r   r!   test_user_fonts_win32   s   

r   c                 C   s(   t  \}}|jt dd t   d S )Nrg   rd   )rp   rq   rs   r   close)_rv   rw   r    r    r!   _model_handler   s   r   register_at_forkz Cannot register at_fork handlersc                  C   sT   t d td} | jdd}|t td W d    d S 1 s#w   Y  d S )Nr   forkrE   )	processes)r   multiprocessingget_contextPoolmaprange)ctxpoolr    r    r!   	test_fork   s
   
"r   )3ior   r   r   ri   pathlibr   r   rl   r,   numpyrQ   r]   
matplotlibr   rn   matplotlib.font_managerr   r   r   r	   r
   r   r   r   r   r   r   r   rp   r   which
has_fclistr"   r'   r4   r@   markskipifrC   parametrizerW   r_   rx   r   rm   r   r   r   hasattrr   r    r    r    r!   <module>   sB    4



