a �DOgF)�@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 �abcdefghijklmnopqrstuvwxyz�ABCDEFGHIJKLMNOPQRSTUVWXYZ� 0123456789ZabcdefZABCDEF�01234567z !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~cCs|pd�dd�|�|�D��S)N� css|]}|��VqdS�N)� capitalize)�.0�x�r�/usr/lib64/python3.9/string.py� 0�zcapwords..)�join�split)�s�seprrrr%s r)�ChainMapcsVeZdZdZdZdZejZ�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}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)�clsr!�delim�id�bid�� __class__rrr#Es     ����zTemplate.__init_subclass__cCs ||_dSr)�template)�selfr3rrr�__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)�startr3� splitlines�lenr� ValueError)r4�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�named�braced�escapedr6z#Unrecognized named group in pattern)�group�strr'rDr>r!�r?rF��mappingr4rr�convertns  �z$Template.substitute..convert��_sentinel_dict� _ChainMapr!�subr3�r4rM�kwsrNrrLr� 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��dSrE)rIrJ�KeyErrorr'r>r!rKrLrrrN�s �z)Template.safe_substitute..convertrOrSrrLr�safe_substitute{s   zTemplate.safe_substitute)�__name__� __module__� __qualname__r'r(r)r%� IGNORECASEr+r#r5rDrPrUrW� __classcell__rrr1rr 9s  r c@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)r4r^r_r`� used_args�result�_rrrr]�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 exceededr9FzJcannot switch from manual field specification to automatic field numberingr8)�auto_arg_index) r>�parse�appendrJ�isdigit� get_field�add� convert_fieldrd� format_fieldr)r4r^r_r`rf�recursion_depthrirg� literal_text� field_name� format_spec� conversion�obj�arg_usedrrrrd�s6�    � zFormatter._vformatcCst|t�r||S||SdSr)� isinstance�int)r4�keyr_r`rrr� get_value�s zFormatter.get_valuecCsdSrr)r4rfr_r`rrrre�szFormatter.check_unused_argscCs t||�Sr)ra)r4�valuertrrrrp�szFormatter.format_fieldcCsN|dur |S|dkrt|�S|dkr,t|�S|dkrra)r4r|rurrrro�szFormatter.convert_fieldcCs t�|�Sr)�_string�formatter_parser)r4r^rrrrjszFormatter.parsec CsJt�|�\}}|�|||�}|D] \}}|r8t||�}q ||}q ||fSr)r��formatter_field_name_splitr{�getattr) r4rsr_r`�first�restrv�is_attrr@rrrrm s   zFormatter.get_fieldN)r ) rXrYrZrar]rdr{rerprorjrmrrrrr �s� 6 r )N)�__all__r�r rrrrrrr rr�rer%� collectionsrrQrPr r#r rrrr�s"   Y