grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026a XC?hF)ã@sšdZgd¢ZddlZdZdZdZeeZdZedd Zd Z d Z eee eZ dd d „Z ddl ZddlmZiZGdd„dƒZe ¡Gdd„dƒZdS)anA collection of string constants. Public module variables: whitespace -- a string containing all ASCII whitespace ascii_lowercase -- a string containing all ASCII lowercase letters ascii_uppercase -- a string containing all ASCII uppercase letters ascii_letters -- a string containing all ASCII letters digits -- a string containing all ASCII decimal digits hexdigits -- a string containing all ASCII hexadecimal digits octdigits -- a string containing all ASCII octal digits punctuation -- a string containing all ASCII punctuation characters printable -- a string containing all ASCII characters considered printable ) Ú ascii_lettersÚascii_lowercaseÚascii_uppercaseÚcapwordsÚdigitsÚ hexdigitsÚ octdigitsÚ printableÚ punctuationÚ whitespaceÚ FormatterÚTemplateéNz ZabcdefghijklmnopqrstuvwxyzZABCDEFGHIJKLMNOPQRSTUVWXYZÚ 0123456789ZabcdefZABCDEFZ01234567z !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~cCs|pd dd„| |¡Dƒ¡S)a‘capwords(s [,sep]) -> string Split the argument into words using split, capitalize each word using capitalize, and join the capitalized words using join. If the optional second argument sep is absent or None, runs of whitespace characters are replaced by a single space and leading and trailing whitespace are removed, otherwise sep is used to split and join the words. ú css|]}| ¡VqdS©N)Ú capitalize)Ú.0Úx©rú+/opt/alt/python39/lib64/python3.9/string.pyÚ 0ózcapwords..)ÚjoinÚsplit)ÚsÚseprrrr%s r)ÚChainMapcsZeZdZdZdZdZdZejZ ‡fdd„Z dd„Z d d „Z e fd d „Ze fd d„Z‡ZS)r z.A string class for supporting $-substitutions.ú$z(?a:[_a-z][_a-z0-9]*)Nc srtƒ ¡d|jvr|j}nzC) | # 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__rrr Es     ÿþýüzTemplate.__init_subclass__cCs ||_dSr)Útemplate)Úselfr.rrrÚ__init__WszTemplate.__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)Ústartr.Ú splitlinesÚlenrÚ ValueError)r/ÚmoÚiÚlinesÚcolnoÚlinenorrrÚ_invalid\s ÿzTemplate._invalidc s:ˆtur|‰n|rt|ˆƒ‰‡‡fdd„}ˆj |ˆj¡S)Ncsd| d¡p| d¡}|dur(tˆ|ƒS| d¡dur<ˆjS| d¡durTˆ |¡tdˆjƒ‚dS©NÚnamedZbracedZescapedr1z#Unrecognized named group in pattern)ÚgroupÚstrr$r?r9r©r:rA©Úmappingr/rrÚconvertns  ÿz$Template.substitute..convert©Ú_sentinel_dictÚ _ChainMaprÚsubr.©r/rFZkwsrGrrErÚ substitutehs   zTemplate.substitutec s:ˆtur|‰n|rt|ˆƒ‰‡‡fdd„}ˆj |ˆj¡S)Ncs€| d¡p| d¡}|durFztˆ|ƒWStyD| ¡YS0| d¡durZˆjS| d¡durp| ¡Stdˆjƒ‚dSr@)rBrCÚKeyErrorr$r9rrDrErrrG�s ÿz)Template.safe_substitute..convertrHrLrrErÚsafe_substitute{s   zTemplate.safe_substitute)Ú__name__Ú __module__Ú __qualname__Ú__doc__r$r%r&r"Ú IGNORECASEr(r r0r?rIrMrOÚ __classcell__rrr,rr 9s  r c@sVeZdZdd„Zdd„Zddd„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]¼\}} } } |r8| |¡| dur| dkrj|durXtdƒ‚t|ƒ} |d7}n|  ¡r‚|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ÚappendrCÚisdigitÚ get_fieldÚaddÚ convert_fieldr]Ú format_fieldr)r/rWrXrYr_Zrecursion_depthrbr`Z literal_textÚ field_nameÚ format_specÚ conversionÚobjZarg_usedrrrr]©s6ÿ    ý zFormatter._vformatcCst|tƒr||S||SdSr)Ú isinstanceÚint)r/ÚkeyrXrYrrrÚ get_valueßs zFormatter.get_valuecCsdSrr)r/r_rXrYrrrr^æszFormatter.check_unused_argscCs t||ƒSr)rZ)r/ÚvaluerkrrrriêszFormatter.format_fieldcCsN|dur |S|dkrt|ƒS|dkr,t|ƒS|dkrs$   Y