rL i  $dZddlmZmZddlZddlmZmZmZm Z m Z m Z m Z m Z dZeejdezj dZeejdezj d Zd Zeejdezj dZeejdezj d Zid d d d dd dd ddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1Zed2Zed3Zd4Zy)5z A module for parsing and generating `fontconfig patterns`_. .. _fontconfig patterns: https://www.freedesktop.org/software/fontconfig/fontconfig-user.html ) lru_cachepartialN)GroupOptionalParseExceptionRegex StringEndSuppress ZeroOrMoreone_ofz\\\-:,z \\(?=[%s])z(?=[%s])z\\z\\=_:,thin)weightlight extralight ultralightrbook)rrregular)rrnormal)rrmedium)rrdemibold)rrsemibold)rrbold)rr extrabold)rz extra boldblack)rrheavy)rrroman)slantritalic)rroblique)rr )widthzultra-condensed)r!zextra-condensed)r! condensed)r!zsemi-condensed)r!expanded)r!zextra-expanded)r!zultra-expanded)ultracondensedextracondensedr" semicondensedr# extraexpanded ultraexpandedcd}tdtdtd}td}td}tdtdtd}t|t dz||zt t z}t||dtd ||d zztd |d zztzS) Nc6|ttd|zzS)N,)r r )elems d/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/matplotlib/_fontconfig_pattern.pycomma_separatedz0_make_fontconfig_parser..comma_separated9sj#!5666z([^z]|(\\[z]))*z([0-9]+\.?[0-9]*|\.[0-9]+)z[a-z]+=families-sizes:z properties*) r _family_punc _value_puncrr r _CONSTANTSrr r )r.familysizenamevalueprops r-_make_fontconfig_parserr=7s7c,vl^4@ AF . /D  D S VK== >E $#&)??6*CUU VD((45 3..w77 8 9 S4 .. / 0 + r/ct} |j|}|j i}d|vrgt t|d|d<d|vr g|d|d<|jdgD]O}t|d k(r t|d}|^}}|j|gjt t|Q|S#t$r(}tdtj|dzdd}~wwxYw) zs Parse a fontconfig *pattern* into a dict that can initialize a `.font_manager.FontProperties` object.  rNr1r8r3r9 properties)r= parse_stringr ValueErrorexplain reset_cachemap_family_unescapegetlenr7 setdefaultextend_value_unescape)patternparserparseerrpropsr<kvs r-parse_fontconfig_patternrTMs  % &FJ##G,  EUEC 0% 2CDEh%)%.)f  ,+@ t9>d1g&DA B&&s?A'>? @ L J 6 6sA >>?TIJsB?? C0#C++C0c dDcgc]}|t|d|f}}djd|jDdjd|DzScc}w)z;Convert a `.FontProperties` to a fontconfig pattern string.)stylevariantrstretchfiler9get_r+c32K|]}t|yw)N)_family_escape).0fs r- z.generate_fontconfig_pattern..ms?1^A&?sr c 3ZK|]#\}}|d|dtt|%yw)Nr4r0) _value_escapestr)r]rRrSs r-r_z.generate_fontconfig_pattern..ns78!Q!AmCF3458s)+)getattrjoin get_family)drRkvss r-generate_fontconfig_patternrhgsN O %wqD*%' ( OC O HH? ? ?gg8"%88 89  OsA#)__doc__ functoolsrrre pyparsingrrrrr r r r r5compilesubrGr\r6rLrar7r=rTrhr/r-rps) UUU :2::ml&BCGGLK,$>?CCUK *"**][%@AEErJ  ;#<=AA5I  ))) )   (  +  * *,, (. ) ) )  )!"*#$32,1+111 8  *  29r/