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<