
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
3

  \.  ã               @   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 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j dd„ | j|ƒD ƒƒS )Nú c             s   s   | ]}|j ƒ V  qd S )N)Ú
capitalize)Ú.0Úx© r   ú/usr/lib64/python3.6/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>%(id)s)}   |   # delimiter and a braced identifier
      (?P<invalid>)              # Other ill-formed delimiter exprs
    )
    c                sX   t t| ƒj|||ƒ d|kr$| j}ntjtj| jƒ| jdœ }tj|| j	tj
B ƒ| _d S )NÚpattern)ZdelimÚid)Úsuperr   Ú__init__r   Ú_reÚescapeÚ	delimiterÚ	idpatternÚcompileÚflagsÚVERBOSE)ÚclsÚnameÚbasesZdctr   )Ú	__class__r   r   r   A   s    
z_TemplateMetaclass.__init__)Ú__name__Ú
__module__Ú__qualname__r   r   Ú__classcell__r   r   )r*   r   r   7   s   r   c               @   s:   e Zd ZdZdZejZdd„ Zdd„ Z	dd„ Z
d	d
„ ZdS )r   ú$z(?-i:[_a-zA-Z][_a-zA-Z0-9]*)c             C   s
   || _ d S )N)Útemplate)Úselfr0   r   r   r   r   X   s    zTemplate.__init__c             C   sd   |j dƒ}| jd |… jdd�}|s.d}d}n"|tdj|d d… ƒƒ }t|ƒ}td||f ƒ‚d S )NÚinvalidT)Úkeependsé   Ú z.Invalid placeholder in string: line %d, col %déÿÿÿÿ)Ústartr0   Ú
splitlinesÚlenr   Ú
ValueError)r1   ÚmoÚiÚlinesÚcolnoÚlinenor   r   r   Ú_invalid]   s    
zTemplate._invalidc                 sl   | st dƒ‚| ^‰} t| ƒdkr(t dƒ‚| s2|‰ n|rFt|| d ƒ‰ n| d ‰ ‡ ‡fdd„}ˆjj|ˆjƒS )Nz>descriptor 'substitute' of 'Template' object needs an argumentr4   zToo many positional argumentsr   c                sd   | j dƒp| j dƒ}|d k	r(tˆ | ƒS | j dƒd k	r<ˆjS | j dƒd k	rTˆj| ƒ tdˆjƒ‚d S )NÚnamedÚbracedÚescapedr2   z#Unrecognized named group in pattern)ÚgroupÚstrr"   r@   r:   r   )r;   rA   )Úmappingr1   r   r   Úconvertw   s    
z$Template.substitute.<locals>.convert)Ú	TypeErrorr9   Ú	_ChainMapr   Úsubr0   )ÚargsÚkwsrG   r   )rF   r1   r   Ú
substitutei   s    zTemplate.substitutec                 sl   | st dƒ‚| ^‰} t| ƒdkr(t dƒ‚| s2|‰ n|rFt|| d ƒ‰ n| d ‰ ‡ ‡fdd„}ˆjj|ˆjƒS )NzCdescriptor 'safe_substitute' of 'Template' object needs an argumentr4   zToo many positional argumentsr   c                s|   | j dƒp| j dƒ}|d k	rBytˆ | ƒS  tk
r@   | j ƒ S X | j dƒd k	rVˆjS | j dƒd k	rl| j ƒ S tdˆjƒ‚d S )NrA   rB   rC   r2   z#Unrecognized named group in pattern)rD   rE   ÚKeyErrorr"   r:   r   )r;   rA   )rF   r1   r   r   rG   ’   s    
z)Template.safe_substitute.<locals>.convert)rH   r9   rI   r   rJ   r0   )rK   rL   rG   r   )rF   r1   r   Úsafe_substitute„   s    zTemplate.safe_substituteN)r+   r,   r-   r"   r#   r    Ú
IGNORECASEr%   r   r@   rM   rO   r   r   r   r   r   M   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   sz   | st dƒ‚| ^}} y| ^}} W nJ tk
rj   d|kr\|jdƒ}dd l}|jdtdd� n
t dƒd ‚Y nX |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')rH   r:   ÚpopÚwarningsÚwarnÚDeprecationWarningÚvformat)rK   Úkwargsr1   rR   rV   r   r   r   Úformat®   s    

zFormatter.formatc             C   s.   t ƒ }| j||||dƒ\}}| j|||ƒ |S )NrS   )ÚsetÚ_vformatÚcheck_unused_args)r1   rR   rK   rZ   Ú	used_argsÚresultÚ_r   r   r   rY   À   s    zFormatter.vformatr   c          	   C   sî   |dk rt dƒ‚g }xÊ| j|ƒD ]¼\}}	}
}|r:|j|ƒ |	d k	r |	dkrl|dkrZt dƒ‚t|ƒ}	|d7 }n|	jƒ r„|r€t dƒ‚d}| j|	||ƒ\}}|j|ƒ | j||ƒ}| j|
||||d |d�\}
}|j| j	||
ƒƒ q W dj
|ƒ|fS )Nr   zMax string recursion exceededr5   FzJcannot switch from manual field specification to automatic field numberingr4   )Úauto_arg_index)r:   ÚparseÚappendrE   ÚisdigitÚ	get_fieldÚaddÚconvert_fieldr]   Úformat_fieldr   )r1   rR   rK   rZ   r_   Zrecursion_depthrb   r`   Zliteral_textÚ
field_nameÚformat_specÚ
conversionÚobjZarg_usedr   r   r   r]   Æ   s4    


zFormatter._vformatc             C   s   t |tƒr|| S || S d S )N)Ú
isinstanceÚint)r1   ÚkeyrK   rZ   r   r   r   Ú	get_valueü   s    
zFormatter.get_valuec             C   s   d S )Nr   )r1   r_   rK   rZ   r   r   r   r^     s    zFormatter.check_unused_argsc             C   s
   t ||ƒS )N)r[   )r1   Ú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j|ƒƒ‚d S )Nr   ÚrÚaz"Unknown conversion specifier {0!s})rE   ÚreprÚasciir:   r[   )r1   rr   rl   r   r   r   rh     s    zFormatter.convert_fieldc             C   s
   t j|ƒS )N)Ú_stringZformatter_parser)r1   rR   r   r   r   rc     s    zFormatter.parsec       	      C   sN   t j|ƒ\}}| j|||ƒ}x(|D ] \}}|r:t||ƒ}q"|| }q"W ||fS )N)rw   Zformatter_field_name_splitrq   Úgetattr)	r1   rj   rK   rZ   ÚfirstÚrestrm   Zis_attrr<   r   r   r   rf   (  s    zFormatter.get_fieldN)r   )r+   r,   r-   r[   rY   r]   rq   r^   ri   rh   rc   rf   r   r   r   r   r   ­   s   
5	)N)Ú__all__rw   r
   r   r   r   r   r   r   r	   r   r   Úrer    Úcollectionsr   rI   Útyper   r   r   r   r   r   r   Ú<module>   s$   


`