grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026U iÛf')ã @s¶dddddddddd d d g Zd d lZdZdZdZeeZdZeddZdZdZ eee eZ ddd„Z d d l Z d dlmZiZGdd„deƒZGdd „d ed�ZGdd „d ƒZd S)Ú ascii_lettersÚascii_lowercaseÚascii_uppercaseÚcapwordsÚdigitsÚ hexdigitsÚ octdigitsÚ printableÚ punctuationÚ whitespaceÚ FormatterÚTemplateéNz ZabcdefghijklmnopqrstuvwxyzZABCDEFGHIJKLMNOPQRSTUVWXYZÚ 0123456789ZabcdefZABCDEFZ01234567z !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~cCs|pd dd„| |¡Dƒ¡S)Nú css|]}| ¡VqdS©N)Ú capitalize)Ú.0Úx©rú+/opt/alt/python38/lib64/python3.8/string.pyÚ 0szcapwords..)ÚjoinÚsplit)ÚsÚseprrrr%s )ÚChainMapcs eZdZdZ‡fdd„Z‡ZS)Ú_TemplateMetaclassa/ %(delim)s(?: (?P%(delim)s) | # Escape sequence of two delimiters (?P%(id)s) | # delimiter and a Python identifier {(?P%(bid)s)} | # delimiter and a braced identifier (?P) # Other ill-formed delimiter exprs ) csbtt|ƒ |||¡d|kr$|j}n$tjt |j¡|j|jp@|jdœ}t  ||j tj B¡|_dS)NÚpattern)ZdelimÚidZbid) ÚsuperrÚ__init__rÚ_reÚescapeÚ delimiterÚ idpatternÚbraceidpatternÚcompileÚflagsÚVERBOSE)ÚclsÚnameÚbasesZdctr©Ú __class__rrr Cs  ýz_TemplateMetaclass.__init__)Ú__name__Ú __module__Ú __qualname__rr Ú __classcell__rrr,rr9s rc@sFeZdZdZdZdZejZdd„Z dd„Z e fdd „Z e fd d „Z dS) r ú$z(?a:[_a-z][_a-z0-9]*)NcCs ||_dSr)Útemplate)Úselfr3rrrr \szTemplate.__init__cCsd| d¡}|jd|…jdd�}|s.d}d}n"|td |dd…¡ƒ}t|ƒ}td||fƒ‚dS)NÚinvalidT)ÚkeependséÚéÿÿÿÿz.Invalid placeholder in string: line %d, col %d)Ústartr3Ú splitlinesÚlenrÚ ValueError)r4ÚmoÚiÚlinesÚcolnoÚlinenorrrÚ_invalidas ÿzTemplate._invalidc s:ˆtkr|‰n|rt|ˆƒ‰‡‡fdd„}ˆj |ˆj¡S)Ncsd| d¡p| d¡}|dk r(tˆ|ƒS| d¡dk r<ˆjS| d¡dk rTˆ |¡tdˆjƒ‚dS©NÚnamedZbracedZescapedr5z#Unrecognized named group in pattern)ÚgroupÚstrr#rCr=r©r>rE©Úmappingr4rrÚconvertss  ÿz$Template.substitute..convert©Ú_sentinel_dictÚ _ChainMaprÚsubr3©r4rJZkwsrKrrIrÚ substitutems   zTemplate.substitutec s:ˆtkr|‰n|rt|ˆƒ‰‡‡fdd„}ˆj |ˆj¡S)Ncs‚| d¡p| d¡}|dk rHztˆ|ƒWStk rF| ¡YSX| d¡dk r\ˆjS| d¡dk rr| ¡Stdˆjƒ‚dSrD)rFrGÚKeyErrorr#r=rrHrIrrrK†sÿz)Template.safe_substitute..convertrLrPrrIrÚsafe_substitute€s   zTemplate.safe_substitute)r.r/r0r#r$r%r!Ú IGNORECASEr'r rCrMrQrSrrrrr Ps )Ú metaclassc@sVeZdZdd„Zdd„Zddd„Zdd „Zd d „Zd d „Zdd„Z dd„Z dd„Z dS)r cOs| |||¡Sr)Úvformat)r4Ú format_stringÚargsÚkwargsrrrÚformat¢szFormatter.formatcCs.tƒ}| ||||d¡\}}| |||¡|S)Né)ÚsetÚ_vformatÚcheck_unused_args)r4rWrXrYÚ used_argsÚresultÚ_rrrrV¥szFormatter.vformatr c Csê|dkrtdƒ‚g}| |¡D]¼\}} } } |r8| |¡| dk r| dkrj|dkrXtdƒ‚t|ƒ} |d7}n|  ¡r‚|r~tdƒ‚d}| | ||¡\} } | | ¡| | | ¡} |j| ||||d|d�\} }| |  | | ¡¡qd  |¡|fS)Nr zMax string recursion exceededr8FzJcannot switch from manual field specification to automatic field numberingr7)Úauto_arg_index) r=ÚparseÚappendrGÚisdigitÚ get_fieldÚaddÚ convert_fieldr]Ú format_fieldr)r4rWrXrYr_Zrecursion_depthrbr`Z literal_textÚ field_nameÚ format_specÚ conversionÚobjZarg_usedrrrr]«s<ÿ    ý zFormatter._vformatcCst|tƒr||S||SdSr)Ú isinstanceÚint)r4ÚkeyrXrYrrrÚ get_valueás zFormatter.get_valuecCsdSrr)r4r_rXrYrrrr^èszFormatter.check_unused_argscCs t||ƒSr)rZ)r4ÚvaluerkrrrriìszFormatter.format_fieldcCsN|dkr |S|dkrt|ƒS|dkr,t|ƒS|dkrs4þ   Q