Spade
Mini Shell
3
\.�@s�dddddddddd d
dgZdd
lZdZdZdZeeZdZeddZdZdZ eee eZ
ddd�Zdd
lZ
ddlmZGdd�de�ZGdd�ded�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� <genexpr>0szcapwords.<locals>.<genexpr>)�join�split)�s�seprrrr%s)�ChainMapcs
eZdZdZ�fdd�Z�ZS)�_TemplateMetaclassa/
%(delim)s(?:
(?P<escaped>%(delim)s) | # Escape sequence of two delimiters
(?P<named>%(id)s) | # delimiter and a Python identifier
{(?P<braced>%(id)s)} | # delimiter and a braced identifier
(?P<invalid>) # 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
�ZdS)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|std��|^�}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.<locals>.convert)� TypeErrorr9� _ChainMapr�subr0)�args�kwsrGr)rFr1r�
substituteiszTemplate.substitutecsl|std��|^�}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
cs||jd�p|jd�}|dk rByt�|�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.<locals>.convert)rHr9rIrrJr0)rKrLrGr)rFr1r�safe_substitute�s
zTemplate.safe_substituteN)r+r,r-r"r#r
�
IGNORECASEr%rr@rMrOrrrrrMs)� metaclassc@sVeZdZdd�Zdd�Zddd�Zdd �Zd
d�Zdd
�Zdd�Z dd�Z
dd�ZdS)rcOsz|std��|^}}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`Zliteral_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|dkr<t|�Stdj|���dS)Nr�r�az"Unknown
conversion specifier
{0!s})rE�repr�asciir:r[)r1rrrlrrrrhszFormatter.convert_fieldcCs
tj|�S)N)�_stringZformatter_parser)r1rRrrrrcszFormatter.parsec CsNtj|�\}}|j|||�}x(|D]
\}}|r:t||�}q"||}q"W||fS)N)rwZformatter_field_name_splitrq�getattr) r1rjrKrZ�first�restrmZis_attrr<rrrrf(szFormatter.get_fieldN)r
)r+r,r-r[rYr]rqr^rirhrcrfrrrrr�s
5 )N)�__all__rwr
rrrrrrr rr�rer
�collectionsrrI�typerrrrrrr�<module>s$
`