U
e5d') ã @ s¶ d ddddddddd d
dgZ dd
lZdZdZdZee ZdZed d ZdZdZ ee e e Z
ddd„Zdd
lZ
ddlmZ i ZG dd„ deƒZG dd„ ded�ZG dd
„ d
ƒZd
S )Ú
ascii_lettersÚascii_lowercaseÚascii_uppercaseÚcapwordsÚdigitsÚ hexdigitsÚ octdigitsÚ printableÚpunctuationÚ
whitespaceÚ FormatterÚTemplateé Nz
ZabcdefghijklmnopqrstuvwxyzZABCDEFGHIJKLMNOPQRSTUVWXYZÚ
0123456789ZabcdefZABCDEFZ01234567z !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~c C s |pd dd„ | |¡D ƒ¡S )Nú c s s | ]}| ¡ V qd S ©N)Ú
capitalize)Ú.0Úx© r ú/usr/lib64/python3.8/string.pyÚ 0 s zcapwords..)ÚjoinÚsplit)ÚsÚsepr r r r % s )ÚChainMapc s e Zd ZdZ‡ 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
)
c sb t t| ƒ |||¡ d|kr$| j}n$tjt | j¡| j| jp@| jdœ }t || j
tjB ¡| _d S )NÚpattern)ZdelimÚidZbid)Úsuperr Ú__init__r Ú_reÚescapeÚ delimiterÚ idpatternÚbraceidpatternÚcompileÚflagsÚVERBOSE)ÚclsÚnameÚbasesZdctr ©Ú __class__r r r C s
ýz_TemplateMetaclass.__init__)Ú__name__Ú
__module__Ú__qualname__r r Ú
__classcell__r r r, r r 9 s r c @ sF e Zd ZdZdZdZejZdd„ Z dd„ Z
efdd „Zefd
d„Z
dS )r ú$z(?a:[_a-z][_a-z0-9]*)Nc C s
|| _ d S r )Útemplate)Úselfr3 r r r r \ s zTemplate.__init__c C sd | d¡}| jd |… jdd�}|s.d}d}n"|td |d d… ¡ƒ }t|ƒ}td||f ƒ‚d S )NÚinvalidT)Úkeependsé Ú éÿÿÿÿz.Invalid placeholder in string: line %d, col %d)Ústartr3 Ú
splitlinesÚlenr Ú
ValueError)r4 ÚmoÚiÚlinesÚcolnoÚlinenor r r Ú_invalida s
ÿzTemplate._invalidc s: ˆ t kr|‰ n|rt|ˆ ƒ‰ ‡ ‡fdd„}ˆj |ˆj¡S )Nc sd | d¡p| d¡}|d k r(tˆ | ƒS | d¡d k r<ˆjS | d¡d k rTˆ | ¡ tdˆjƒ‚d S ©NÚnamedZbracedZescapedr5 z#Unrecognized named group in pattern)ÚgroupÚstrr# rC r= r ©r> rE ©Úmappingr4 r r Úconverts s
ÿz$Template.substitute..convert©Ú_sentinel_dictÚ _ChainMapr Úsubr3 ©r4 rJ ZkwsrK r rI r Ú
substitutem s
zTemplate.substitutec s: ˆ t kr|‰ n|rt|ˆ ƒ‰ ‡ ‡fdd„}ˆj |ˆj¡S )Nc s‚ | d¡p| d¡}|d k rHztˆ | ƒW S tk
rF | ¡ Y S X | d¡d k r\ˆjS | d¡d k rr| ¡ S tdˆjƒ‚d S rD )rF rG ÚKeyErrorr# r= r rH rI r r rK † s ÿz)Template.safe_substitute..convertrL rP r rI r Úsafe_substitute€ s
zTemplate.safe_substitute)r. r/ r0 r# r$ r% r! Ú
IGNORECASEr' r rC rM rQ rS r r r r r P s )Ú metaclassc @ sV e Zd Zdd„ Zdd„ Zddd„Zdd „ Zd
d„ Zdd
„ Zdd„ Z dd„ Z
dd„ ZdS )r c O s | |||¡S r )Úvformat)r4 Ú
format_stringÚargsÚkwargsr r r Úformat¢ s zFormatter.formatc C s. t ƒ }| ||||d¡\}}| |||¡ |S )Né )ÚsetÚ_vformatÚcheck_unused_args)r4 rW rX rY Ú used_argsÚresultÚ_r r r rV ¥ s zFormatter.vformatr
c C sê |dk rt dƒ‚g }| |¡D ]¼\}} }
}|r8| |¡ | d k r| dkrj|dkrXt dƒ‚t|ƒ} |d7 }n| ¡ r‚|r~t dƒ‚d}| | ||¡\}}
| |
¡ | ||¡}| j|
||||d |d�\}
}| | ||
¡¡ qd
|¡|fS )Nr
zMax string recursion exceededr8 FzJcannot switch from manual field specification to automatic field numberingr7 )Úauto_arg_index)r= ÚparseÚappendrG ÚisdigitÚ get_fieldÚaddÚ
convert_fieldr] Úformat_fieldr )r4 rW rX rY r_ Zrecursion_depthrb r` Zliteral_textÚ
field_nameÚformat_specÚ
conversionÚobjZarg_usedr r r r] « s<