3 \.� @s�dddddddddd d d g Zd d lZdZdZdZeeZdZeddZdZdZ eee eZ ddd�Z d d l Z d dlmZGdd�de�ZGdd �d ed�ZGdd �d �Zd S)� ascii_letters�ascii_lowercase�ascii_uppercase�capwords�digits� hexdigits� octdigits� printable� punctuation� whitespace� Formatter�Template�Nz ZabcdefghijklmnopqrstuvwxyzZABCDEFGHIJKLMNOPQRSTUVWXYZ� 0123456789ZabcdefZABCDEFZ01234567z !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~cCs|pdjdd�|j|�D��S)N� css|]}|j�VqdS)N)� capitalize)�.0�x�r�/usr/lib64/python3.6/string.py� 0szcapwords..)�join�split)�s�seprrrr%s )�ChainMapcs eZdZdZ�fdd�Z�ZS)�_TemplateMetaclassa/ %(delim)s(?: (?P%(delim)s) | # Escape sequence of two delimiters (?P%(id)s) | # delimiter and a Python identifier {(?P%(id)s)} | # delimiter and a braced identifier (?P) # Other ill-formed delimiter exprs ) csXtt|�j|||�d|kr$|j}ntjtj|j�|jd�}tj||j tj B�|_dS)N�pattern)Zdelim�id) �superr�__init__r�_re�escape� delimiter� idpattern�compile�flags�VERBOSE)�cls�name�basesZdctr)� __class__rrrAs  z_TemplateMetaclass.__init__)�__name__� __module__� __qualname__rr� __classcell__rr)r*rr7src@s:eZdZdZdZejZdd�Zdd�Z dd�Z d d �Z d S) r �$z(?-i:[_a-zA-Z][_a-zA-Z0-9]*)cCs ||_dS)N)�template)�selfr0rrrrXszTemplate.__init__cCsd|jd�}|jd|�jdd�}|s.d}d}n"|tdj|dd���}t|�}td||f��dS)N�invalidT)�keepends��z.Invalid placeholder in string: line %d, col %d�����)�startr0� splitlines�lenr� ValueError)r1�mo�i�lines�colno�linenorrr�_invalid]s zTemplate._invalidcsl|s td��|^�}t|�dkr(td��|s2|�n|rFt||d��n|d���fdd�}�jj|�j�S)Nz>descriptor 'substitute' of 'Template' object needs an argumentr4zToo many positional argumentsr csd|jd�p|jd�}|dk r(t�|�S|jd�dk r<�jS|jd�dk rT�j|�td�j��dS)N�named�braced�escapedr2z#Unrecognized named group in pattern)�group�strr"r@r:r)r;rA)�mappingr1rr�convertws  z$Template.substitute..convert)� TypeErrorr9� _ChainMapr�subr0)�args�kwsrGr)rFr1r� substituteis  zTemplate.substitutecsl|s td��|^�}t|�dkr(td��|s2|�n|rFt||d��n|d���fdd�}�jj|�j�S)NzCdescriptor 'safe_substitute' of 'Template' object needs an argumentr4zToo many positional argumentsr c s||jd�p|jd�}|dk rBy t�|�Stk r@|j�SX|jd�dk rV�jS|jd�dk rl|j�Std�j��dS)NrArBrCr2z#Unrecognized named group in pattern)rDrE�KeyErrorr"r:r)r;rA)rFr1rrrG�s  z)Template.safe_substitute..convert)rHr9rIrrJr0)rKrLrGr)rFr1r�safe_substitute�s  zTemplate.safe_substituteN) r+r,r-r"r#r � IGNORECASEr%rr@rMrOrrrrr Ms )� metaclassc@sVeZdZdd�Zdd�Zddd�Zdd �Zd d �Zd d �Zdd�Z dd�Z dd�Z dS)r c Osz|s td��|^}}y |^}}WnJtk rjd|kr\|jd�}ddl}|jdtdd�n td�d�YnX|j|||�S)Nz;descriptor 'format' of 'Formatter' object needs an argument� format_stringr z9Passing 'format_string' as keyword argument is deprecated�)� stacklevelz@format() missing 1 required positional argument: 'format_string')rHr:�pop�warnings�warn�DeprecationWarning�vformat)rK�kwargsr1rRrVrrr�format�s    zFormatter.formatcCs.t�}|j||||d�\}}|j|||�|S)NrS)�set�_vformat�check_unused_args)r1rRrKrZ� used_args�result�_rrrrY�szFormatter.vformatr c Cs�|dkrtd��g}x�|j|�D]�\}} } } |r:|j|�| dk r | dkrl|dkrZtd��t|�} |d7}n| j�r�|r�td��d}|j| ||�\} } |j| �|j| | �} |j| ||||d|d�\} }|j|j | | ��q Wdj |�|fS)Nr zMax string recursion exceededr5FzJcannot switch from manual field specification to automatic field numberingr4)�auto_arg_index) r:�parse�appendrE�isdigit� get_field�add� convert_fieldr]� format_fieldr)r1rRrKrZr_Zrecursion_depthrbr`Z literal_text� field_name� format_spec� conversion�objZarg_usedrrrr]�s4     zFormatter._vformatcCst|t�r||S||SdS)N)� isinstance�int)r1�keyrKrZrrr� get_value�s zFormatter.get_valuecCsdS)Nr)r1r_rKrZrrrr^szFormatter.check_unused_argscCs t||�S)N)r[)r1�valuerkrrrriszFormatter.format_fieldcCsN|dkr |S|dkrt|�S|dkr,t|�S|dkrs$     `