grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026o ®û|jF)ã@s˜ gd¢ZddlZdZdZdZeeZdZeddZd Zd Z eee eZ dd d „Z ddl Z dd lmZiZGdd„dƒZe ¡Gdd„dƒZdS)) Ú 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/python310/lib64/python3.10/string.pyÚ 0s€zcapwords..)ÚjoinÚsplit)ÚsÚseprrrr%s r)ÚChainMapcsXeZdZ dZdZdZejZ‡fdd„Z dd„Z dd „Z e fd d „Z e fd d „Z‡ZS)r ú$z(?a:[_a-z][_a-z0-9]*)Nc srtƒ ¡d|jvr|j}nt |j¡}|j}|jp|j}d|›d|›d|›d|›d� }t  ||j tj B¡|_dS)NÚpatternz z(?: (?PzC) | # Escape sequence of two delimiters (?PzJ) | # delimiter and a Python identifier {(?Pz�)} | # delimiter and a braced identifier (?P) # Other ill-formed delimiter exprs ) ) ÚsuperÚ__init_subclass__Ú__dict__rÚ_reÚescapeÚ delimiterÚ idpatternÚbraceidpatternÚcompileÚflagsÚVERBOSE)ÚclsrZdelimÚidZbid©Ú __class__rrrEs    ÿþýüzTemplate.__init_subclass__cCs ||_dSr)Útemplate)Úselfr-rrrÚ__init__Wó zTemplate.__init__cCs`| d¡}|jd|…jdd�}|sd}d}n|td |dd…¡ƒ}t|ƒ}td||fƒ‚)NÚinvalidT)ÚkeependséÚéÿÿÿÿz.Invalid placeholder in string: line %d, col %d)Ústartr-Ú splitlinesÚlenrÚ ValueError)r.ÚmoÚiÚlinesÚcolnoÚlinenorrrÚ_invalid\s ÿzTemplate._invalidc ó:ˆtur|‰n|rt|ˆƒ‰‡‡fdd„}ˆj |ˆj¡S)Ncs`| d¡p | d¡}|durtˆ|ƒS| d¡durˆjS| d¡dur*ˆ |¡tdˆjƒ‚©NÚnamedZbracedZescapedr1z#Unrecognized named group in pattern)ÚgroupÚstrr#r?r9r©r:rB©Úmappingr.rrÚconvertns  ÿz$Template.substitute..convert©Ú_sentinel_dictÚ _ChainMaprÚsubr-©r.rGZkwsrHrrFrÚ substitutehs   zTemplate.substitutec r@)Ncs|| d¡p | d¡}|dur#ztˆ|ƒWSty"| ¡YSw| d¡dur-ˆjS| d¡dur8| ¡Stdˆjƒ‚rA)rCrDÚKeyErrorr#r9rrErFrrrH�s  ÿÿz)Template.safe_substitute..convertrIrMrrFrÚsafe_substitute{s   zTemplate.safe_substitute)Ú__name__Ú __module__Ú __qualname__r#r$r%r!Ú IGNORECASEr'rr/r?rJrNrPÚ __classcell__rrr+rr 9s  r c@sXeZdZdd„Zdd„Z ddd„Zdd „Zd d „Zd d „Zdd„Z dd„Z dd„Z dS)r cOs| |||¡Sr)Úvformat)r.Ú format_stringÚargsÚkwargsrrrÚformat szFormatter.formatcCs.tƒ}| ||||d¡\}}| |||¡|S)Né)ÚsetÚ_vformatÚcheck_unused_args)r.rWrXrYÚ used_argsÚresultÚ_rrrrV£szFormatter.vformatr c Csê|dkrtdƒ‚g}| |¡D]^\}} } } |r| |¡| durm| dkr5|dur,tdƒ‚t|ƒ} |d7}n |  ¡rA|r?tdƒ‚d}| | ||¡\} } | | ¡| | | ¡} |j| ||||d|d�\} }| |  | | ¡¡qd  |¡|fS)Nr zMax string recursion exceededr4FzJcannot switch from manual field specification to automatic field numberingr3)Úauto_arg_index) r9ÚparseÚappendrDÚisdigitÚ get_fieldÚaddÚ convert_fieldr]Ú format_fieldr)r.rWrXrYr_Zrecursion_depthrbr`Z literal_textÚ field_nameÚ format_specÚ conversionÚobjZarg_usedrrrr]©s8ÿ     ý€zFormatter._vformatcCst|tƒr ||S||Sr)Ú isinstanceÚint)r.ÚkeyrXrYrrrÚ get_valueßs zFormatter.get_valuecCsdSrr)r.r_rXrYrrrr^æszFormatter.check_unused_argscCs t||ƒSr)rZ)r.Úvaluerkrrrriêr0zFormatter.format_fieldcCsJ|dur|S|dkrt|ƒS|dkrt|ƒS|dkrt|ƒStd |¡ƒ‚)NrÚrÚaz"Unknown conversion specifier {0!s})rDÚreprÚasciir9rZ)r.rrrlrrrrhîszFormatter.convert_fieldcCs t |¡Sr)Ú_stringZformatter_parser)r.rWrrrrcr0zFormatter.parsec CsJt |¡\}}| |||¡}|D]\}}|rt||ƒ}q||}q||fSr)rwZformatter_field_name_splitrqÚgetattr) r.rjrXrYÚfirstÚrestrmZis_attrr;rrrrf s   zFormatter.get_fieldN)r ) rQrRrSrZrVr]rqr^rirhrcrfrrrrr Ÿs ÿ6 r r)Ú__all__rwr rrrrrrr rrÚrer!Ú collectionsrrKrJr rr rrrrÚs&   Y