???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................U
    e5d')                     @   s   d ddddddddd	d
dgZ ddlZdZdZdZee ZdZed d ZdZdZ	ee e	 e Z
dddZddlZddlmZ i ZG dd deZG dd dedZG dd
 d
ZdS )ascii_lettersascii_lowercaseascii_uppercasecapwordsdigits	hexdigits	octdigits	printablepunctuation
whitespace	FormatterTemplate    Nz 	
ZabcdefghijklmnopqrstuvwxyzZABCDEFGHIJKLMNOPQRSTUVWXYZ
0123456789ZabcdefZABCDEFZ01234567z !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~c                 C   s   |pd dd | |D S )N c                 s   s   | ]}|  V  qd S N)
capitalize).0x r   /usr/lib64/python3.8/string.py	<genexpr>0   s     zcapwords.<locals>.<genexpr>)joinsplit)ssepr   r   r   r   %   s    )ChainMapc                       s    e Zd ZdZ fddZ  ZS )_TemplateMetaclassa/  
    %(delim)s(?:
      (?P<escaped>%(delim)s) |   # Escape sequence of two delimiters
      (?P<named>%(id)s)      |   # delimiter and a Python identifier
      {(?P<braced>%(bid)s)}  |   # delimiter and a braced identifier
      (?P<invalid>)              # Other ill-formed delimiter exprs
    )
    c                    sb   t t| ||| d|kr$| j}n$tjt| j| j| jp@| jd }t	|| j
tjB | _d S )Npattern)ZdelimidZbid)superr   __init__r   _reescape	delimiter	idpatternbraceidpatterncompileflagsVERBOSE)clsnamebasesZdctr   	__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 Zd ZdZdZdZejZdd Z	dd Z
efdd	Zefd
dZdS )r   $z(?a:[_a-z][_a-z0-9]*)Nc                 C   s
   || _ d S r   )template)selfr3   r   r   r   r    \   s    zTemplate.__init__c                 C   sd   | d}| jd | jdd}|s.d}d}n"|td|d d  }t|}td||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    
zTemplate._invalidc                   s:    t kr| n|rt|   fdd}j|jS )Nc                    sd   |  dp|  d}|d k	r(t | S |  dd k	r<jS |  dd k	rT|  tdjd S NnamedZbracedZescapedr5   z#Unrecognized named group in pattern)groupstrr#   rC   r=   r   r>   rE   mappingr4   r   r   converts   s    
z$Template.substitute.<locals>.convert_sentinel_dict	_ChainMapr   subr3   r4   rJ   ZkwsrK   r   rI   r   
substitutem   s    
zTemplate.substitutec                   s:    t kr| n|rt|   fdd}j|jS )Nc                    s   |  dp|  d}|d k	rHzt | W S  tk
rF   |    Y S X |  dd k	r\jS |  dd k	rr|   S tdjd S rD   )rF   rG   KeyErrorr#   r=   r   rH   rI   r   r   rK      s    z)Template.safe_substitute.<locals>.convertrL   rP   r   rI   r   safe_substitute   s    
zTemplate.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 Zd Zdd Zdd ZdddZdd	 Zd
d Zdd Zdd Z	dd Z
dd ZdS )r   c                O   s   |  |||S r   )vformat)r4   format_stringargskwargsr   r   r   format   s    zFormatter.formatc                 C   s.   t  }| ||||d\}}| ||| |S )N   )set_vformatcheck_unused_args)r4   rW   rX   rY   	used_argsresult_r   r   r   rV      s    zFormatter.vformatr   c              	   C   s   |dk rt dg }| |D ]\}}	}
}|r8|| |	d k	r|	dkrj|dkrXt dt|}	|d7 }n|	 r|r~t dd}| |	||\}}|| | ||}| j|
||||d |d\}
}|| 	||
 qd
||fS )Nr   zMax 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_   Zrecursion_depthrb   r`   Zliteral_text
field_nameformat_spec
conversionobjZarg_usedr   r   r   r]      s<    


   
zFormatter._vformatc                 C   s   t |tr|| S || S d S r   )
isinstanceint)r4   keyrX   rY   r   r   r   	get_value   s    
zFormatter.get_valuec                 C   s   d S r   r   )r4   r_   rX   rY   r   r   r   r^      s    zFormatter.check_unused_argsc                 C   s
   t ||S r   )rZ   )r4   valuerk   r   r   r   ri      s    zFormatter.format_fieldc                 C   sN   |d kr|S |dkrt |S |dkr,t|S |dkr<t|S td|d S )Nr   raz"Unknown conversion specifier {0!s})rG   reprasciir=   rZ   )r4   rr   rl   r   r   r   rh      s    zFormatter.convert_fieldc                 C   s
   t |S r   )_stringZformatter_parser)r4   rW   r   r   r   rc     s    zFormatter.parsec           	      C   sJ   t |\}}| |||}|D ] \}}|r8t||}q || }q ||fS r   )rw   Zformatter_field_name_splitrq   getattr)	r4   rj   rX   rY   firstrestrm   Zis_attrr?   r   r   r   rf     s    
zFormatter.get_fieldN)r   )r.   r/   r0   rZ   rV   r]   rq   r^   ri   rh   rc   rf   r   r   r   r   r      s    
6	)N)__all__rw   r
   r   r   r   r   r   r   r	   r   r   rer!   collectionsr   rN   rM   typer   r   r   r   r   r   r   <module>   s4         
Q