a
    ëÝEb]!  ã                   @   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Zd dl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&„ Z.ej#j$e/ed'ƒ d(d�d)d*„ ƒZ0d+d,„ Z1d-d.„ Z2d/d0„ Z3dS )1é    )ÚBytesIOÚStringION)ÚPath)
ÚfindfontÚfindSystemFontsÚFontPropertiesÚfontManagerÚ	json_dumpÚ	json_loadÚget_fontÚis_opentype_cff_fontÚMSUserFontDirectoriesÚ_get_fontconfig_fonts)ÚpyplotÚ
rc_contextzfc-listc                  C   sˆ   t dddgid��  ttdgd�ƒ} W d   ƒ n1 s80    Y  t| ƒjdksTJ ‚t| ƒ} |  ¡ }t|ƒdkstJ ‚|d	 d
ks„J ‚d S )Núfont.sans-serifZcmmi10úBitstream Vera Sans)Úrcú
sans-serif©Úfamilyz
cmmi10.ttféƒ   i"  é   )r   r   r   r   Únamer   Zget_charmapÚlen)ÚfontZcmap© r   úb/home/ja/django-apps/lartica_env/lib/python3.9/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 rLt  dd¡k sRn J ‚dt  dd¡  k rvt  dd¡k s|n J ‚t  dd¡t  dd¡ks˜J ‚d S )Nr   ZregularÚboldi�  Únormal)r   Zscore_weightr   r   r   r   Útest_score_weight$   s    
ÿ
ÿ

ÿr!   c                 C   s    t | dƒ}tt|ƒ t|ƒ}t ¡ �h t dd¡ ddidddœdd	ifD ]2}tf i |¤Ž}tj|d
d�|j|d
d�ksJJ ‚qJW d   ƒ n1 s’0    Y  d S )Nzfontlist.jsonÚignorez findfont: Font family.*not foundr   ZSTIXGeneralr   i¼  )r   Úweightzno such font familyF)Zrebuild_if_missing)	r   r	   r   r
   ÚwarningsÚcatch_warningsÚfilterwarningsr   r   )ÚtmpdirÚpathÚcopyÚpropÚfpr   r   r   Útest_json_serialization/   s    


þÿr,   c               	   C   s‚   d} t | ƒ ¡ rt| ƒsJ ‚tjD ]Z}d|jv r"t|jdƒ�}| d¡dk}W d   ƒ n1 s`0    Y  |t|jƒks"J ‚q"d S )Nz//usr/share/fonts/opentype/freefont/FreeMono.otfZotfÚrbé   s   OTTO)r   Úexistsr   r   ÚttflistÚfnameÚopenÚread)r1   ÚfÚfdÚresr   r   r   Útest_otf?   s    

,r7   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    r:   Úfactor)é   r.   é   é   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   r9   )Zhinting_factoré   éd   Úabcgš™™™™™¹?)Zrtol)
r   r   r   ÚclearZset_sizeÚset_textZget_width_heightÚnpÚtestingZassert_allclose)r;   r   Zfont1ÚexpectedZhinted_fontr   r   r   Útest_hinting_factorO   s    

ÿrG   c                  C   sH   zt dd„ tjD ƒƒ} W n ty4   t d¡ Y n0 | jdksDJ ‚d S )Nc                 s   s"   | ]}t |jƒjd kr|V  qdS )zseguisbi.ttfN)r   r1   r   )Ú.0Úentryr   r   r   Ú	<genexpr>e   s   ÿz#test_utf16m_sfnt.<locals>.<genexpr>z#Couldn't find font to test against.iX  )Únextr   r0   ÚStopIterationÚpytestÚskipr#   )rI   r   r   r   Útest_utf16m_sfntb   s
    rO   c                  C   sd   t dgd�} tt| ƒƒjdkr(t d¡ t ¡ \}}|jddd| d� dD ]}|j	t
ƒ |d	� qJd S )
NzWenQuanYi Zen Heir   zwqy-zenhei.ttczFont may be missingg      à?u   â¿“)Zfontproperties)ÚrawÚsvgÚpdfZps©Úformat)r   r   r   r   rM   rN   ÚpltÚsubplotsÚtextÚsavefigr   )r+   ÚfigÚaxÚfmtr   r   r   Útest_find_ttco   s    
r\   c                 C   sú   t | ƒ}t t¡� t|d ƒ W d   ƒ n1 s40    Y  t t¡�  tt|d ƒƒ W d   ƒ n1 sn0    Y  t t¡�  tt|d ƒƒ W d   ƒ n1 s¨0    Y  ddlm} tjt	dd�� |t
ƒ ƒ W d   ƒ n1 sì0    Y  d S )Nznon-existent-font-name.ttfr   )ÚFT2Fontzpath or binary-mode file)Úmatch)r   rM   ZraisesÚFileNotFoundErrorr   ÚstrÚbytesÚmatplotlib.ft2fontr]   Ú	TypeErrorr   )r'   Ztmp_pathr]   r   r   r   Útest_find_invalidz   s    *..rd   Úlinuxz
Linux onlyc                    sÎ   d‰ t ƒ }t‡ fdd„|D ƒƒr0t ˆ › d�¡ |  d¡}|jdd� t tt	ƒj
ˆ  | ˆ ¡¡ | ¡ �H}| dt| ƒ¡ t ¡  t ƒ }t‡ fd	d„|D ƒƒs¤J ‚W d   ƒ n1 s¸0    Y  t ¡  d S )
Númpltest.ttfc                 3   s   | ]}ˆ |v V  qd S ©Nr   ©rH   r   ©Zfont_test_filer   r   rJ   ’   ó    z(test_user_fonts_linux.<locals>.<genexpr>ú already exists in system fontsÚfontsT)ÚdirÚXDG_DATA_HOMEc                 3   s   | ]}ˆ |v V  qd S rg   r   rh   ri   r   r   rJ       rj   )r   ÚanyrM   rN   ÚjoinZensureÚshutilÚcopyfiler   Ú__file__ÚparentÚcontextZsetenvr`   r   Úcache_clear)r'   Zmonkeypatchrl   Úuser_fonts_dirÚmr   ri   r   Útest_user_fonts_linuxŒ   s    
ÿ
8ry   Úwin32zWindows onlyc                     sž   t j d¡s"t j d¡s"t d¡ d‰ tƒ } t‡ fdd„| D ƒƒrRt ˆ › d�¡ td }t  	|¡ t
 ttƒjˆ  |¡ tƒ } t‡ fd	d„| D ƒƒsšJ ‚d S )
NZAPPVEYORZTF_BUILDznThis test should only run on CI (appveyor or azure) as the developer's font directory should remain unchanged.rf   c                 3   s   | ]}ˆ |v V  qd S rg   r   rh   ri   r   r   rJ   ±   rj   z(test_user_fonts_win32.<locals>.<genexpr>rk   r   c                 3   s   | ]}ˆ |v V  qd S rg   r   rh   ri   r   r   rJ   ¿   rj   )ÚosÚenvironÚgetrM   Zxfailr   ro   rN   r   Úmakedirsrq   r)   r   rs   rt   )rl   rw   r   ri   r   Útest_user_fonts_win32¦   s    

r   c                 C   s(   t  ¡ \}}|jtƒ dd� t  ¡  d S )NrR   rS   )rU   rV   rX   r   Úclose)Ú_rY   rZ   r   r   r   Ú_model_handlerÂ   s    r‚   Úregister_at_forkz Cannot register at_fork handlersc                  C   sR   t dƒ t d¡} | jdd�� }| t tdƒ¡ W d   ƒ n1 sD0    Y  d S )Nr   Úforkr<   )Z	processes)r‚   ÚmultiprocessingZget_contextZPoolÚmapÚrange)ÚctxÚpoolr   r   r   Ú	test_forkÈ   s    
rŠ   c                 C   s^   dgt jd< |  d¡� tdƒ W d   ƒ n1 s40    Y  dd„ | jD ƒddgksZJ ‚d S )	Nzthis-font-does-not-existr   ÚWARNINGÚsansc                 S   s   g | ]}|  ¡ ‘qS r   )Ú
getMessage)rH   Zrecr   r   r   Ú
<listcomp>Õ   rj   z'test_missing_family.<locals>.<listcomp>zFfindfont: 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)rU   ZrcParamsZat_levelr   Úrecords)Zcaplogr   r   r   Útest_missing_familyÑ   s    &ýr�   c                     s~   dd l ‰ddlm‰  dd lm‰ d} ˆ | ¡‰‡ ‡‡fdd„‰‡‡fdd„t| ƒD ƒ}|D ]}| ¡  qZ|D ]}| ¡  qld S )Nr   )ÚLOAD_NO_HINTINGé
   c                    s>   ˆ  ¡  tdƒD ](}ˆ ˆ d¡¡}|jt| ƒdˆ d� qd S )Nr@   zDejaVu Sansg        )Úflags)Úwaitr‡   r   r   rC   r`   )ÚnÚjr   )r‘   ÚbÚfmr   r   Úbad_ideaå   s    z!_test_threading.<locals>.bad_ideac                    s$   g | ]}ˆj ˆ d |› �|fd�‘qS )Zbad_thread_)Útargetr   Úargs)ÚThread)rH   r–   )r™   Ú	threadingr   r   rŽ   ë   s   ÿz#_test_threading.<locals>.<listcomp>)	r�   rb   r‘   Úmatplotlib.font_managerZfont_managerÚBarrierr‡   Ústartrp   )ÚNÚthreadsÚtr   )r‘   r—   r™   r˜   r�   r   Ú_test_threadingÝ   s    
þ
r¤   c                  C   sL   t  d¡ dd l} t tjd|  t¡d g¡}|j	rHt  
d|j	› d�¡ d S )Nr�   r   z-cz
_test_threading()z2The subprocess returned with non-zero exit status Ú.)rM   ZimportorskipÚinspectÚ
subprocessÚrunÚsysÚ
executableÚ	getsourcer¤   Ú
returncodeZfail)r¦   Úprocr   r   r   Útest_fontcache_thread_safe÷   s    
ÿÿÿr®   )4Úior   r   r…   r{   Úpathlibr   rq   r§   r©   r$   ÚnumpyrD   rM   rž   r   r   r   r   r	   r
   r   r   r   r   Z
matplotlibr   rU   r   ÚwhichZ
has_fclistr   r!   r,   r7   ÚmarkZskipifr:   ZparametrizerG   rO   r\   rd   Úplatformry   r   r‚   ÚhasattrrŠ   r�   r¤   r®   r   r   r   r   Ú<module>   sF   0



ÿ
