o
0iF) @ s g d Z ddlZdZdZdZee ZdZed d Zd Zd
Z ee e e Z
dddZddlZ
dd
lmZ i ZG dd dZe G dd dZdS ))
ascii_lettersascii_lowercaseascii_uppercasecapwordsdigits hexdigits octdigits printablepunctuation
whitespace FormatterTemplate Nz
ZabcdefghijklmnopqrstuvwxyzZABCDEFGHIJKLMNOPQRSTUVWXYZ
0123456789ZabcdefZABCDEFZ01234567z !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~c C s |pd dd | |D S )N c s s | ]}| V qd S N)
capitalize).0x r -/opt/alt/python310/lib64/python3.10/string.py 0 s zcapwords..)joinsplit)ssepr r r r % s
r )ChainMapc sX e Zd Z dZdZdZejZ fddZ dd Z
dd Zefd
dZ
efdd
Z ZS )r $z(?a:[_a-z][_a-z0-9]*)Nc sr t d| jv r| j}nt| j}| j}| jp| j}d| d| d| d| d }t || j
tjB | _d S )Npatternz
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 _reescape delimiter idpatternbraceidpatterncompileflagsVERBOSE)clsr ZdelimidZbid __class__r r r E s
zTemplate.__init_subclass__c C s
|| _ d S r )template)selfr- r r r __init__W
zTemplate.__init__c C s` | d}| jd | jdd}|sd}d}n|td|d d }t|}td||f )NinvalidT)keepends z.Invalid placeholder in string: line %d, col %d)startr-
splitlineslenr
ValueError)r. moilinescolnolinenor r r _invalid\ s
zTemplate._invalidc : t u r| n|rt| fdd}j|jS )Nc s` | dp | d}|d urt | S | dd urjS | dd ur*| tdjNnamedZbracedZescapedr1 z#Unrecognized named group in pattern)groupstrr# r? r9 r r: rB mappingr. r r convertn s
z$Template.substitute..convert_sentinel_dict _ChainMapr subr- r. rG ZkwsrH r rF r
substituteh s
zTemplate.substitutec r@ )Nc s| | dp | d}|d ur#zt | W S ty" | Y S w | dd ur-jS | dd ur8| S tdjrA )rC rD KeyErrorr# r9 r rE rF r r rH s z)Template.safe_substitute..convertrI rM r rF r safe_substitute{ s
zTemplate.safe_substitute)__name__
__module____qualname__r# r$ r% r!
IGNORECASEr' r r/ r? rJ rN rP
__classcell__r r r+ r r 9 s r c @ sX e Zd Zdd Zdd Z dddZdd Zd
d Zdd
Zdd Z dd Z
dd ZdS )r c O s | |||S r )vformat)r.
format_stringargskwargsr r r format s zFormatter.formatc C s. t }| ||||d\}}| ||| |S )N )set_vformatcheck_unused_args)r. rW rX rY used_argsresult_r r r rV s zFormatter.vformatr
c C s |dk rt dg }| |D ]^\}} }
}|r|| | d urm| dkr5|du r,t dt|} |d7 }n| rA|r?t dd}| | ||\}}
||
| ||}| j|
||||d |d\}
}|| ||
qd
||fS )Nr
zMax string recursion exceededr4 FzJcannot switch from manual field specification to automatic field numberingr3 )auto_arg_index)r9 parseappendrD isdigit get_fieldadd
convert_fieldr] format_fieldr )r. rW rX rY r_ Zrecursion_depthrb r` Zliteral_text
field_nameformat_spec
conversionobjZarg_usedr r r r] s8
zFormatter._vformatc C s t |tr || S || S r )
isinstanceint)r. keyrX rY r r r get_value s
zFormatter.get_valuec C s d S r r )r. r_ rX rY r r r r^ s zFormatter.check_unused_argsc C s
t ||S r )rZ )r. valuerk r r r ri r0 zFormatter.format_fieldc C sJ |d u r|S |dkrt |S |dkrt|S |dkrt|S td|)Nr raz"Unknown conversion specifier {0!s})rD reprasciir9 rZ )r. rr rl r r r rh s zFormatter.convert_fieldc C s
t |S r )_stringZformatter_parser)r. rW r r r rc r0 zFormatter.parsec C sJ t |\}}| |||}|D ]\}}|rt||}q|| }q||fS r )rw Zformatter_field_name_splitrq getattr) r. rj rX rY firstrestrm Zis_attrr; r r r rf s
zFormatter.get_fieldN)r
)rQ rR rS rZ rV r] rq r^ ri rh rc rf r r r r r s
6 r r )__all__rw r
r r r r r r r r r rer! collectionsr rK rJ r r r r r r r s&