o
    j                  	   @   sF  d Z ddlmZmZ ddlZddlmZmZmZm	Z	m
Z
mZmZmZ dZeede jdZeede jd	Zd
Zeede jdZeede jd	Zi ddddddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1Zed2d3 Zed4d5 Zd6d7 ZdS )8z
A module for parsing and generating `fontconfig patterns`_.

.. _fontconfig patterns:
   https://www.freedesktop.org/software/fontconfig/fontconfig-user.html
    )	lru_cachepartialN)GroupOptionalParseExceptionRegex	StringEndSuppress
ZeroOrMoreone_ofz\\\-:,z
\\(?=[%s]) z(?=[%s])z\\z\\=_:,Zthin)weightlightZ
extralightZ
ultralightr   book)r   r   regular)r   r   normal)r   r   medium)r   r   demibold)r   r   semibold)r   r   bold)r   r   Z	extrabold)r   z
extra boldblack)r   r   heavy)r   r   roman)slantr   italic)r   r   oblique)r   r   )widthzultra-condensed)r   zextra-condensed)r   	condensed)r   zsemi-condensed)r   expanded)r   zextra-expanded)r   zultra-expanded)ZultracondensedZextracondensedr   Zsemicondensedr   ZextraexpandedZultraexpandedc                  C   s   dd } t dt dt d}t d}t d}t dt dt d}t|td | | ttB }t| |d	td
| |d  td|d  t	  S )Nc                 S   s   | t td|   S )N,)r
   r	   )elem r!   _/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/matplotlib/_fontconfig_pattern.pycomma_separated9   s   z0_make_fontconfig_parser.<locals>.comma_separatedz([^z]|(\\[z]))*z([0-9]+\.?[0-9]*|\.[0-9]+)z[a-z]+=families-sizes:zproperties*)
r   _family_punc_value_puncr   r	   r   
_CONSTANTSr   r
   r   )r#   familysizenamevaluepropr!   r!   r"   _make_fontconfig_parser7   s    r1   c              
   C   s   t  }z|| }W n ty! } ztdt|d dd}~ww |  i }d|v r7g tt|d |d< d|v rCg |d |d< |dg D ]}t	|d	krWt
|d  }|^}}||g tt| qI|S )
zs
    Parse a fontconfig *pattern* into a dict that can initialize a
    `.font_manager.FontProperties` object.
    
r   Nr%   r,   r'   r-   
properties   )r1   parse_stringr   
ValueErrorZexplainZreset_cachemap_family_unescapegetlenr+   
setdefaultextend_value_unescape)patternparserparseerrpropsr0   kvr!   r!   r"   parse_fontconfig_patternM   s&   rE   c                    s>    fdddD }d dd   D d dd |D  S )	z;Convert a `.FontProperties` to a fontconfig pattern string.c                    s"   g | ]}|t  d |  fqS )get_)getattr).0rC   dr!   r"   
<listcomp>i   s    z/generate_fontconfig_pattern.<locals>.<listcomp>)stylevariantr   Zstretchfiler-   r   c                 s   s    | ]}t |V  qd S )N)_family_escape)rH   fr!   r!   r"   	<genexpr>m   s    z.generate_fontconfig_pattern.<locals>.<genexpr>r   c                 s   s4    | ]\}}|d urd| dt t| V  qd S )Nr(   r$   )_value_escapestr)rH   rC   rD   r!   r!   r"   rQ   n   s    )joinZ
get_family)rJ   Zkvsr!   rI   r"   generate_fontconfig_patterng   s   

rU   )__doc__	functoolsr   r   reZ	pyparsingr   r   r   r   r   r	   r
   r   r)   compilesubr8   rO   r*   r=   rR   r+   r1   rE   rU   r!   r!   r!   r"   <module>   st    (	


