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

  \a ã               @   s,  d Z ddddddddd	d
dddddddgZddlZddlZddlZddlZ	ddl
ZddlZddlmZmZ dZdZdZdZdZdZdZG dd„ deƒZdd„ ZG d d„ deƒZG d!d„ deƒZG d"d„ deƒZG d#d„ deƒZG d$d	„ d	eƒZd%d&„ Z G d'd„ de!ƒZ"G d(d„ de!ƒZ#G d)d„ deƒZ$G d*d+„ d+e$ƒZ%G d,d-„ d-e$ƒZ&G d.d/„ d/e&ƒZ'G d0d1„ d1e&ƒZ(G d2d3„ d3e$ƒZ)G d4d5„ d5e$ƒZ*G d6d7„ d7e$ƒZ+G d8d9„ d9e$ƒZ,G d:d;„ d;e$ƒZ-G d<d=„ d=e$ƒZ.G d>d„ deƒZ/G d?d
„ d
eƒZ0G d@dA„ dAeƒZ1G dBdC„ dCe1ƒZ2G dDdE„ dEe2ƒZ3G dFd„ dee1ƒZ4dS )Gz1.1ÚArgumentParserÚArgumentErrorÚArgumentTypeErrorÚFileTypeÚHelpFormatterÚArgumentDefaultsHelpFormatterÚRawDescriptionHelpFormatterÚRawTextHelpFormatterÚMetavarTypeHelpFormatterÚ	NamespaceÚActionÚONE_OR_MOREÚOPTIONALÚPARSERÚ	REMAINDERÚSUPPRESSÚZERO_OR_MOREé    N)ÚgettextÚngettextz==SUPPRESS==ú?Ú*ú+zA...z...Z_unrecognized_argsc               @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )Ú_AttributeHolderc             C   s”   t | ƒj}g }i }x| jƒ D ]}|jt|ƒƒ qW x8| jƒ D ],\}}|jƒ r`|jd||f ƒ q<|||< q<W |r‚|jdt|ƒ ƒ d|dj|ƒf S )Nz%s=%rz**%sz%s(%s)z, )ÚtypeÚ__name__Ú	_get_argsÚappendÚreprÚ_get_kwargsÚisidentifierÚjoin)ÚselfZ	type_nameÚarg_stringsZ	star_argsÚargÚnameÚvalue© r&   ú /usr/lib64/python3.6/argparse.pyÚ__repr__v   s    
z_AttributeHolder.__repr__c             C   s   t | jjƒ ƒS )N)ÚsortedÚ__dict__Úitems)r!   r&   r&   r'   r   …   s    z_AttributeHolder._get_kwargsc             C   s   g S )Nr&   )r!   r&   r&   r'   r   ˆ   s    z_AttributeHolder._get_argsN)r   Ú
__module__Ú__qualname__r(   r   r   r&   r&   r&   r'   r   m   s   	r   c             C   s&   t | |d ƒd krt| ||ƒ t | |ƒS )N)ÚgetattrÚsetattr)Ú	namespacer$   r%   r&   r&   r'   Ú_ensure_valueŒ   s    r1   c               @   sð   e Zd Zd:dd„Zdd„ Zdd	„ ZG d
d„ deƒZdd„ Zd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"d#„ Zd$d%„ Zd&d'„ Zd(d)„ Zd*d+„ Zd,d-„ Zd.d/„ Zd0d1„ Zd2d3„ Zd4d5„ Zd6d7„ Zd8d9„ ZdS )<r   é   é   Nc             C   sº   |d kr@yt tjd ƒ}W n ttfk
r6   d}Y nX |d8 }|| _|| _|| _t|t	|d |d ƒƒ| _|| _
d| _d| _d| _| j| d ƒ| _| j| _tjdtjƒ| _tjdƒ| _d S )NZCOLUMNSéP   r2   é   r   z\s+z\n\n\n+)ÚintÚ_osÚenvironÚKeyErrorÚ
ValueErrorÚ_progÚ_indent_incrementÚ_max_help_positionÚminÚmaxÚ_widthÚ_current_indentÚ_levelÚ_action_max_lengthÚ_SectionÚ_root_sectionÚ_current_sectionÚ_reÚcompileÚASCIIÚ_whitespace_matcherÚ_long_break_matcher)r!   ÚprogZindent_incrementZmax_help_positionÚwidthr&   r&   r'   Ú__init__�   s&    
zHelpFormatter.__init__c             C   s"   |  j | j7  _ |  jd7  _d S )Né   )rA   r<   rB   )r!   r&   r&   r'   Ú_indent¿   s    zHelpFormatter._indentc             C   s"   |  j | j8  _ |  jd8  _d S )NrO   )rA   r<   rB   )r!   r&   r&   r'   Ú_dedentÃ   s    zHelpFormatter._dedentc               @   s   e Zd Zddd„Zdd„ ZdS )zHelpFormatter._SectionNc             C   s   || _ || _|| _g | _d S )N)Ú	formatterÚparentÚheadingr+   )r!   rR   rS   rT   r&   r&   r'   rN   Ê   s    zHelpFormatter._Section.__init__c             C   sŽ   | j d k	r| jjƒ  | jj}|dd„ | jD ƒƒ}| j d k	rD| jjƒ  |sLdS | jtk	rz| jd k	rz| jj}d|d| jf }nd}|d||dgƒS )Nc             S   s   g | ]\}}||Ž ‘qS r&   r&   )Ú.0ÚfuncÚargsr&   r&   r'   ú
<listcomp>Õ   s    z6HelpFormatter._Section.format_help.<locals>.<listcomp>Ú z%*s%s:
Ú
)	rS   rR   rP   Ú_join_partsr+   rQ   rT   r   rA   )r!   r    Z	item_helpZcurrent_indentrT   r&   r&   r'   Úformat_helpÐ   s    



z"HelpFormatter._Section.format_help)N)r   r,   r-   rN   r\   r&   r&   r&   r'   rD   È   s   
rD   c             C   s   | j jj||fƒ d S )N)rF   r+   r   )r!   rV   rW   r&   r&   r'   Ú	_add_itemç   s    zHelpFormatter._add_itemc             C   s0   | j ƒ  | j| | j|ƒ}| j|jg ƒ || _d S )N)rP   rD   rF   r]   r\   )r!   rT   Zsectionr&   r&   r'   Ústart_sectioní   s    zHelpFormatter.start_sectionc             C   s   | j j| _ | jƒ  d S )N)rF   rS   rQ   )r!   r&   r&   r'   Úend_sectionó   s    
zHelpFormatter.end_sectionc             C   s$   |t k	r |d k	r | j| j|gƒ d S )N)r   r]   Ú_format_text)r!   Útextr&   r&   r'   Úadd_text÷   s    zHelpFormatter.add_textc             C   s&   |t k	r"||||f}| j| j|ƒ d S )N)r   r]   Ú_format_usage)r!   ÚusageÚactionsÚgroupsÚprefixrW   r&   r&   r'   Ú	add_usageû   s    zHelpFormatter.add_usagec             C   sz   |j tk	rv| j}||ƒg}x | j|ƒD ]}|j||ƒƒ q&W tdd„ |D ƒƒ}|| j }t| j|ƒ| _| j| j	|gƒ d S )Nc             S   s   g | ]}t |ƒ‘qS r&   )Úlen)rU   Úsr&   r&   r'   rX   
  s    z.HelpFormatter.add_argument.<locals>.<listcomp>)
Úhelpr   Ú_format_action_invocationÚ_iter_indented_subactionsr   r?   rA   rC   r]   Ú_format_action)r!   ÚactionZget_invocationZinvocationsÚ	subactionZinvocation_lengthZaction_lengthr&   r&   r'   Úadd_argument   s    


zHelpFormatter.add_argumentc             C   s   x|D ]}| j |ƒ qW d S )N)rq   )r!   re   ro   r&   r&   r'   Úadd_arguments  s    
zHelpFormatter.add_argumentsc             C   s.   | j jƒ }|r*| jjd|ƒ}|jdƒd }|S )Nz

rZ   )rE   r\   rK   ÚsubÚstrip)r!   rk   r&   r&   r'   r\     s
    
zHelpFormatter.format_helpc             C   s   dj dd„ |D ƒƒS )NrY   c             S   s   g | ]}|r|t k	r|‘qS r&   )r   )rU   Úpartr&   r&   r'   rX   !  s   z-HelpFormatter._join_parts.<locals>.<listcomp>)r    )r!   Zpart_stringsr&   r&   r'   r[      s    
zHelpFormatter._join_partsc                s  |d krt dƒ}|d k	r,|t| jd� }�nÜ|d krN| rNdt| jd� }�nº|d k�rdt| jd� }g }g }x(|D ] }|jrŒ|j|ƒ qv|j|ƒ qvW | j}	|	|| |ƒ}
djdd„ ||
gD ƒƒ}| j| j ‰ t	|ƒt	|ƒ ˆ k�rd}|	||ƒ}|	||ƒ}t
j||ƒ}t
j||ƒ}d‡ fdd	„	}t	|ƒt	|ƒ d
ˆ  k�r¤dt	|ƒt	|ƒ d  }|�r‚||g| ||ƒ}|j|||ƒƒ n |�rœ||g| ||ƒ}n|g}nZdt	|ƒ }|| }|||ƒ}t	|ƒdk�rôg }|j|||ƒƒ |j|||ƒƒ |g| }dj|ƒ}d||f S )Nzusage: )rL   z%(prog)sú c             S   s   g | ]}|r|‘qS r&   r&   )rU   rj   r&   r&   r'   rX   A  s    z/HelpFormatter._format_usage.<locals>.<listcomp>z%\(.*?\)+(?=\s|$)|\[.*?\]+(?=\s|$)|\S+c                sÊ   g }g }|d k	rt |ƒd }nt |ƒd }xb| D ]Z}|d t |ƒ ˆ krp|rp|j|dj|ƒ ƒ g }t |ƒd }|j|ƒ |t |ƒd 7 }q0W |r¦|j|dj|ƒ ƒ |d k	rÆ|d t |ƒd … |d< |S )NrO   rv   r   )ri   r   r    )ÚpartsÚindentrg   ÚlinesÚlineZline_lenru   )Ú
text_widthr&   r'   Ú	get_linesU  s"    

z.HelpFormatter._format_usage.<locals>.get_linesg      è?rO   rZ   z%s%s

)N)Ú_Údictr;   Úoption_stringsr   Ú_format_actions_usager    r@   rA   ri   rG   ÚfindallÚextend)r!   rd   re   rf   rg   rL   Z	optionalsÚpositionalsro   ÚformatZaction_usageZpart_regexpZ	opt_usageZ	pos_usageZ	opt_partsZ	pos_partsr|   rx   ry   rw   r&   )r{   r'   rc   %  sV    






zHelpFormatter._format_usagec             C   sÎ  t ƒ }i }xî|D ]æ}y|j|jd ƒ}W n tk
r>   wY qX |t|jƒ }|||… |jkrx|jD ]}|j|ƒ qhW |js¬||krš||  d7  < nd||< d||< n*||krÆ||  d7  < nd||< d||< xt|d |ƒD ]}	d	||	< qæW qW g }
�x2t|ƒD �]$\}	}|j	t
k�rj|
jd ƒ |j|	ƒd	k�rF|j|	ƒ n"|j|	d ƒd	k�r.|j|	d ƒ nÄ|j�sÆ| j|ƒ}| j||ƒ}||k�rº|d dk�rº|d dk�rº|dd… }|
j|ƒ nh|jd }|jdk�ræd
| }n"| j|ƒ}| j||ƒ}d||f }|j �r$||k�r$d| }|
j|ƒ �q
W x(t|dd�D ]}	||	 g|
|	|	…< �qBW djdd„ |
D ƒƒ}d}d}tjd| d|ƒ}tjd| d|ƒ}tjd||f d|ƒ}tjdd|ƒ}|jƒ }|S )Nr   z [ú[ú]z (ú(ú)rO   ú|z%sz%s %sz[%s]T)Úreverserv   c             S   s   g | ]}|d k	r|‘qS )Nr&   )rU   Úitemr&   r&   r'   rX   Ø  s    z7HelpFormatter._format_actions_usage.<locals>.<listcomp>z[\[(]z[\])]z(%s) z\1z (%s)z%s *%srY   z\(([^|]*)\)éÿÿÿÿrŒ   )ÚsetÚindexÚ_group_actionsr:   ri   ÚaddÚrequiredÚrangeÚ	enumeraterk   r   r   ÚgetÚpopr   Ú#_get_default_metavar_for_positionalÚ_format_argsÚnargsÚ!_get_default_metavar_for_optionalr)   r    rG   rs   rt   )r!   re   rf   Úgroup_actionsZinsertsÚgroupÚstartÚendro   Úirw   Údefaultru   Úoption_stringÚargs_stringra   ÚopenÚcloser&   r&   r'   r€   …  sr    







z#HelpFormatter._format_actions_usagec             C   sF   d|kr|t | jd� }t| j| j dƒ}d| j }| j|||ƒd S )Nz%(prog))rL   é   rv   z

)r~   r;   r?   r@   rA   Ú
_fill_text)r!   ra   r{   rx   r&   r&   r'   r`   æ  s
    
zHelpFormatter._format_textc             C   sB  t | jd | jƒ}t| j| dƒ}|| j d }| j|ƒ}|jsV| jd|f}d| }n@t|ƒ|kr~| jd||f}d| }d}n| jd|f}d| }|}|g}|jrü| j	|ƒ}	| j
|	|ƒ}
|jd|d|
d f ƒ x@|
dd … D ]}|jd|d|f ƒ qÞW n|jdƒ�s|jdƒ x$| j|ƒD ]}|j| j|ƒƒ �qW | j|ƒS )	Nr2   r¤   rY   z%*s%s
z	%*s%-*s  r   rO   rZ   )r>   rC   r=   r?   r@   rA   rl   rk   ri   Ú_expand_helpÚ_split_linesr   Úendswithrm   rn   r[   )r!   ro   Zhelp_positionZ
help_widthZaction_widthZaction_headerÚtupZindent_firstrw   Z	help_textZ
help_linesrz   rp   r&   r&   r'   rn   í  s6    




zHelpFormatter._format_actionc             C   sˆ   |j s&| j|ƒ}| j||ƒdƒ\}|S g }|jdkrB|j|j ƒ n8| j|ƒ}| j||ƒ}x |j D ]}|jd||f ƒ q`W dj|ƒS d S )NrO   r   z%s %sz, )	r   r–   Ú_metavar_formatterr˜   r‚   r™   r—   r   r    )r!   ro   rŸ   Úmetavarrw   r¡   r    r&   r&   r'   rl     s    


z'HelpFormatter._format_action_invocationc                sP   |j d k	r|j ‰ n.|jd k	r<dd„ |jD ƒ}ddj|ƒ ‰ n|‰ ‡ fdd„}|S )Nc             S   s   g | ]}t |ƒ‘qS r&   )Ústr)rU   Zchoicer&   r&   r'   rX   8  s    z4HelpFormatter._metavar_formatter.<locals>.<listcomp>z{%s}ú,c                s   t ˆ tƒrˆ S ˆ f|  S d S )N)Ú
isinstanceÚtuple)Z
tuple_size)Úresultr&   r'   r„   =  s    
z0HelpFormatter._metavar_formatter.<locals>.format)r«   Úchoicesr    )r!   ro   Údefault_metavarZchoice_strsr„   r&   )r°   r'   rª   4  s    

z HelpFormatter._metavar_formatterc             C   sÀ   | j ||ƒ}|jd kr$d|dƒ }n˜|jtkr<d|dƒ }n€|jtkrTd|dƒ }nh|jtkrld|dƒ }nP|jtkr|d}n@|jtkr”d|dƒ }n(d	d
„ t|jƒD ƒ}dj|ƒ||jƒ }|S )Nz%srO   z[%s]z[%s [%s ...]]r2   z%s [%s ...]z...z%s ...c             S   s   g | ]}d ‘qS )z%sr&   )rU   r}   r&   r&   r'   rX   S  s    z.HelpFormatter._format_args.<locals>.<listcomp>rv   )	rª   r˜   r   r   r   r   r   r’   r    )r!   ro   r²   Zget_metavarr°   Zformatsr&   r&   r'   r—   D  s     





zHelpFormatter._format_argsc             C   s    t t|ƒ| jd�}x"t|ƒD ]}|| tkr||= qW x,t|ƒD ] }t|| dƒr@|| j||< q@W |jdƒd k	r’djdd„ |d D ƒƒ}||d< | j	|ƒ| S )N)rL   r   r±   z, c             S   s   g | ]}t |ƒ‘qS r&   )r¬   )rU   Úcr&   r&   r'   rX   `  s    z.HelpFormatter._expand_help.<locals>.<listcomp>)
r~   Úvarsr;   Úlistr   Úhasattrr   r”   r    Ú_get_help_string)r!   ro   Zparamsr$   Zchoices_strr&   r&   r'   r¦   W  s    
zHelpFormatter._expand_helpc             c   s@   y
|j }W n tk
r   Y nX | jƒ  |ƒ E d H  | jƒ  d S )N)Ú_get_subactionsÚAttributeErrorrP   rQ   )r!   ro   Zget_subactionsr&   r&   r'   rm   d  s    
z'HelpFormatter._iter_indented_subactionsc             C   s   | j jd|ƒjƒ }tj||ƒS )Nrv   )rJ   rs   rt   Ú	_textwrapZwrap)r!   ra   rM   r&   r&   r'   r§   n  s    zHelpFormatter._split_linesc             C   s$   | j jd|ƒjƒ }tj||||d�S )Nrv   )Zinitial_indentZsubsequent_indent)rJ   rs   rt   rº   Zfill)r!   ra   rM   rx   r&   r&   r'   r¥   r  s    
zHelpFormatter._fill_textc             C   s   |j S )N)rk   )r!   ro   r&   r&   r'   r·   w  s    zHelpFormatter._get_help_stringc             C   s
   |j jƒ S )N)ÚdestÚupper)r!   ro   r&   r&   r'   r™   z  s    z/HelpFormatter._get_default_metavar_for_optionalc             C   s   |j S )N)r»   )r!   ro   r&   r&   r'   r–   }  s    z1HelpFormatter._get_default_metavar_for_positional)r2   r3   N)N)r   r,   r-   rN   rP   rQ   ÚobjectrD   r]   r^   r_   rb   rh   rq   rr   r\   r[   rc   r€   r`   rn   rl   rª   r—   r¦   rm   r§   r¥   r·   r™   r–   r&   r&   r&   r'   r   –   s:   	  

`a/
c               @   s   e Zd Zdd„ ZdS )r   c                s    dj ‡ fdd„|jdd�D ƒƒS )NrY   c             3   s   | ]}ˆ | V  qd S )Nr&   )rU   rz   )rx   r&   r'   ú	<genexpr>‰  s    z9RawDescriptionHelpFormatter._fill_text.<locals>.<genexpr>T)Úkeepends)r    Ú
splitlines)r!   ra   rM   rx   r&   )rx   r'   r¥   ˆ  s    z&RawDescriptionHelpFormatter._fill_textN)r   r,   r-   r¥   r&   r&   r&   r'   r   �  s   c               @   s   e Zd Zdd„ ZdS )r   c             C   s   |j ƒ S )N)rÀ   )r!   ra   rM   r&   r&   r'   r§   “  s    z!RawTextHelpFormatter._split_linesN)r   r,   r-   r§   r&   r&   r&   r'   r   Œ  s   c               @   s   e Zd Zdd„ ZdS )r   c             C   s>   |j }d|j kr:|jtk	r:ttg}|js2|j|kr:|d7 }|S )Nz
%(default)z (default: %(default)s))rk   rŸ   r   r   r   r   r˜   )r!   ro   rk   Zdefaulting_nargsr&   r&   r'   r·   ž  s    

z.ArgumentDefaultsHelpFormatter._get_help_stringN)r   r,   r-   r·   r&   r&   r&   r'   r   —  s   c               @   s   e Zd Zdd„ Zdd„ ZdS )r	   c             C   s   |j jS )N)r   r   )r!   ro   r&   r&   r'   r™   °  s    z:MetavarTypeHelpFormatter._get_default_metavar_for_optionalc             C   s   |j jS )N)r   r   )r!   ro   r&   r&   r'   r–   ³  s    z<MetavarTypeHelpFormatter._get_default_metavar_for_positionalN)r   r,   r-   r™   r–   r&   r&   r&   r'   r	   ¨  s   c             C   sN   | d krd S | j rdj| j ƒS | jd tfkr2| jS | jd tfkrF| jS d S d S )Nú/)r   r    r«   r   r»   )Úargumentr&   r&   r'   Ú_get_action_name¼  s    rÃ   c               @   s   e Zd Zdd„ Zdd„ ZdS )r   c             C   s   t |ƒ| _|| _d S )N)rÃ   Úargument_nameÚmessage)r!   rÂ   rÅ   r&   r&   r'   rN   Ð  s    
zArgumentError.__init__c             C   s(   | j d krd}nd}|t| j| j d� S )Nz%(message)sz'argument %(argument_name)s: %(message)s)rÅ   rÄ   )rÄ   r~   rÅ   )r!   r„   r&   r&   r'   Ú__str__Ô  s
    
zArgumentError.__str__N)r   r,   r-   rN   rÆ   r&   r&   r&   r'   r   É  s   c               @   s   e Zd ZdS )r   N)r   r,   r-   r&   r&   r&   r'   r   Ý  s   c               @   s(   e Zd Zd	dd„Zdd„ Zd
dd„ZdS )r   NFc             C   s@   || _ || _|| _|| _|| _|| _|| _|| _|	| _|
| _	d S )N)
r   r»   r˜   ÚconstrŸ   r   r±   r‘   rk   r«   )r!   r   r»   r˜   rÇ   rŸ   r   r±   r‘   rk   r«   r&   r&   r'   rN     s    zAction.__init__c          	      s(   ddddddddd	g	}‡ fd
d„|D ƒS )Nr   r»   r˜   rÇ   rŸ   r   r±   rk   r«   c                s   g | ]}|t ˆ |ƒf‘qS r&   )r.   )rU   r$   )r!   r&   r'   rX   ;  s    z&Action._get_kwargs.<locals>.<listcomp>r&   )r!   Únamesr&   )r!   r'   r   /  s    zAction._get_kwargsc             C   s   t tdƒƒ‚d S )Nz.__call__() not defined)ÚNotImplementedErrorr}   )r!   Úparserr0   Úvaluesr    r&   r&   r'   Ú__call__=  s    zAction.__call__)NNNNNFNN)N)r   r,   r-   rN   r   rÌ   r&   r&   r&   r'   r   æ  s   6       
c                   s(   e Zd Zd‡ fdd„	Zddd„Z‡  ZS )	Ú_StoreActionNFc                sT   |dkrt dƒ‚|d k	r,|tkr,t dt ƒ‚tt| ƒj|||||||||	|
d�
 d S )Nr   z„nargs for store actions must be > 0; if you have nothing to store, actions such as store true or store const may be more appropriatez nargs must be %r to supply const)
r   r»   r˜   rÇ   rŸ   r   r±   r‘   rk   r«   )r:   r   ÚsuperrÍ   rN   )r!   r   r»   r˜   rÇ   rŸ   r   r±   r‘   rk   r«   )Ú	__class__r&   r'   rN   C  s    
z_StoreAction.__init__c             C   s   t || j|ƒ d S )N)r/   r»   )r!   rÊ   r0   rË   r    r&   r&   r'   rÌ   `  s    z_StoreAction.__call__)NNNNNFNN)N)r   r,   r-   rN   rÌ   Ú__classcell__r&   r&   )rÏ   r'   rÍ   A  s          rÍ   c                   s(   e Zd Zd‡ fdd„	Zddd„Z‡  ZS )	Ú_StoreConstActionNFc          	      s"   t t| ƒj||d||||d� d S )Nr   )r   r»   r˜   rÇ   rŸ   r‘   rk   )rÎ   rÑ   rN   )r!   r   r»   rÇ   rŸ   r‘   rk   r«   )rÏ   r&   r'   rN   f  s    
z_StoreConstAction.__init__c             C   s   t || j| jƒ d S )N)r/   r»   rÇ   )r!   rÊ   r0   rË   r    r&   r&   r'   rÌ   w  s    z_StoreConstAction.__call__)NFNN)N)r   r,   r-   rN   rÌ   rÐ   r&   r&   )rÏ   r'   rÑ   d  s
      
rÑ   c                   s   e Zd Zd‡ fdd„	Z‡  ZS )Ú_StoreTrueActionFNc                s    t t| ƒj||d|||d� d S )NT)r   r»   rÇ   rŸ   r‘   rk   )rÎ   rÒ   rN   )r!   r   r»   rŸ   r‘   rk   )rÏ   r&   r'   rN   }  s    
z_StoreTrueAction.__init__)FFN)r   r,   r-   rN   rÐ   r&   r&   )rÏ   r'   rÒ   {  s     rÒ   c                   s   e Zd Zd‡ fdd„	Z‡  ZS )Ú_StoreFalseActionTFNc                s    t t| ƒj||d|||d� d S )NF)r   r»   rÇ   rŸ   r‘   rk   )rÎ   rÓ   rN   )r!   r   r»   rŸ   r‘   rk   )rÏ   r&   r'   rN   Ž  s    
z_StoreFalseAction.__init__)TFN)r   r,   r-   rN   rÐ   r&   r&   )rÏ   r'   rÓ   Œ  s     rÓ   c                   s(   e Zd Zd‡ fdd„	Zddd„Z‡  ZS )	Ú_AppendActionNFc                sT   |dkrt dƒ‚|d k	r,|tkr,t dt ƒ‚tt| ƒj|||||||||	|
d�
 d S )Nr   z‹nargs for append actions must be > 0; if arg strings are not supplying the value to append, the append const action may be more appropriatez nargs must be %r to supply const)
r   r»   r˜   rÇ   rŸ   r   r±   r‘   rk   r«   )r:   r   rÎ   rÔ   rN   )r!   r   r»   r˜   rÇ   rŸ   r   r±   r‘   rk   r«   )rÏ   r&   r'   rN   Ÿ  s    
z_AppendAction.__init__c             C   s0   t jt|| jg ƒƒ}|j|ƒ t|| j|ƒ d S )N)Ú_copyÚcopyr1   r»   r   r/   )r!   rÊ   r0   rË   r    r+   r&   r&   r'   rÌ   ¼  s    
z_AppendAction.__call__)NNNNNFNN)N)r   r,   r-   rN   rÌ   rÐ   r&   r&   )rÏ   r'   rÔ   �  s          rÔ   c                   s(   e Zd Zd‡ fdd„	Zddd„Z‡  ZS )	Ú_AppendConstActionNFc          
      s$   t t| ƒj||d|||||d� d S )Nr   )r   r»   r˜   rÇ   rŸ   r‘   rk   r«   )rÎ   r×   rN   )r!   r   r»   rÇ   rŸ   r‘   rk   r«   )rÏ   r&   r'   rN   Ä  s    
z_AppendConstAction.__init__c             C   s2   t jt|| jg ƒƒ}|j| jƒ t|| j|ƒ d S )N)rÕ   rÖ   r1   r»   r   rÇ   r/   )r!   rÊ   r0   rË   r    r+   r&   r&   r'   rÌ   Ö  s    z_AppendConstAction.__call__)NFNN)N)r   r,   r-   rN   rÌ   rÐ   r&   r&   )rÏ   r'   r×   Â  s
      r×   c                   s(   e Zd Zd‡ fdd„	Zddd„Z‡  ZS )	Ú_CountActionNFc                s    t t| ƒj||d|||d� d S )Nr   )r   r»   r˜   rŸ   r‘   rk   )rÎ   rØ   rN   )r!   r   r»   rŸ   r‘   rk   )rÏ   r&   r'   rN   Þ  s    
z_CountAction.__init__c             C   s$   t || jdƒd }t|| j|ƒ d S )Nr   rO   )r1   r»   r/   )r!   rÊ   r0   rË   r    Z	new_countr&   r&   r'   rÌ   ì  s    z_CountAction.__call__)NFN)N)r   r,   r-   rN   rÌ   rÐ   r&   r&   )rÏ   r'   rØ   Ü  s     	rØ   c                   s.   e Zd Zeedf‡ fdd„	Zddd„Z‡  ZS )Ú_HelpActionNc                s   t t| ƒj|||d|d� d S )Nr   )r   r»   rŸ   r˜   rk   )rÎ   rÙ   rN   )r!   r   r»   rŸ   rk   )rÏ   r&   r'   rN   ó  s    
z_HelpAction.__init__c             C   s   |j ƒ  |jƒ  d S )N)Ú
print_helpÚexit)r!   rÊ   r0   rË   r    r&   r&   r'   rÌ   ÿ  s    z_HelpAction.__call__)N)r   r,   r-   r   rN   rÌ   rÐ   r&   r&   )rÏ   r'   rÙ   ñ  s   rÙ   c                   s0   e Zd Zdeedf‡ fdd„	Zddd„Z‡  ZS )Ú_VersionActionNz&show program's version number and exitc                s$   t t| ƒj|||d|d� || _d S )Nr   )r   r»   rŸ   r˜   rk   )rÎ   rÜ   rN   Úversion)r!   r   rÝ   r»   rŸ   rk   )rÏ   r&   r'   rN     s    
z_VersionAction.__init__c             C   sD   | j }|d kr|j }|jƒ }|j|ƒ |j|jƒ tjƒ |jƒ  d S )N)rÝ   Ú_get_formatterrb   Ú_print_messager\   Ú_sysÚstdoutrÛ   )r!   rÊ   r0   rË   r    rÝ   rR   r&   r&   r'   rÌ     s    
z_VersionAction.__call__)N)r   r,   r-   r   rN   rÌ   rÐ   r&   r&   )rÏ   r'   rÜ     s
   	rÜ   c                   sN   e Zd ZG dd„ deƒZeddf‡ fdd„	Zdd„ Zdd	„ Zdd
d„Z	‡  Z
S )Ú_SubParsersActionc                   s   e Zd Z‡ fdd„Z‡  ZS )z&_SubParsersAction._ChoicesPseudoActionc                s@   | }}|r|ddj |ƒ 7 }ttj| ƒ}|jg |||d� d S )Nz (%s)z, )r   r»   rk   r«   )r    rÎ   râ   Ú_ChoicesPseudoActionrN   )r!   r$   Úaliasesrk   r«   r»   Zsup)rÏ   r&   r'   rN   "  s    
z/_SubParsersAction._ChoicesPseudoAction.__init__)r   r,   r-   rN   rÐ   r&   r&   )rÏ   r'   rã      s   rã   Nc                s>   || _ || _tjƒ | _g | _tt| ƒj||t	| j||d� d S )N)r   r»   r˜   r±   rk   r«   )
Ú_prog_prefixÚ_parser_classÚ_collectionsÚOrderedDictÚ_name_parser_mapÚ_choices_actionsrÎ   râ   rN   r   )r!   r   rL   Úparser_classr»   rk   r«   )rÏ   r&   r'   rN   *  s    

z_SubParsersAction.__init__c             K   sŠ   |j dƒd kr d| j|f |d< |jdf ƒ}d|krX|jdƒ}| j|||ƒ}| jj|ƒ | jf |Ž}|| j|< x|D ]}|| j|< qtW |S )NrL   z%s %srä   rk   )r”   rå   r•   rã   rê   r   ræ   ré   )r!   r$   Úkwargsrä   rk   Zchoice_actionrÊ   Úaliasr&   r&   r'   Ú
add_parser?  s    


z_SubParsersAction.add_parserc             C   s   | j S )N)rê   )r!   r&   r&   r'   r¸   V  s    z!_SubParsersAction._get_subactionsc             C   sÖ   |d }|dd … }| j tk	r,t|| j |ƒ y| j| }W n< tk
rv   |dj| jƒdœ}tdƒ| }t| |ƒ‚Y nX |j|d ƒ\}	}x$t	|	ƒj
ƒ D ]\}
}t||
|ƒ q–W |rÒt	|ƒjtg ƒ t|tƒj|ƒ d S )Nr   rO   z, )Úparser_namer±   z5unknown parser %(parser_name)r (choices: %(choices)s))r»   r   r/   ré   r9   r    r}   r   Úparse_known_argsr´   r+   Ú
setdefaultÚ_UNRECOGNIZED_ARGS_ATTRr.   r‚   )r!   rÊ   r0   rË   r    rï   r"   rW   ÚmsgZsubnamespaceÚkeyr%   r&   r&   r'   rÌ   Y  s"    
	z_SubParsersAction.__call__)N)r   r,   r-   r   rã   r   rN   rî   r¸   rÌ   rÐ   r&   r&   )rÏ   r'   râ     s   râ   c               @   s&   e Zd Zddd„Zdd„ Zdd	„ ZdS )r   ÚrrO   Nc             C   s   || _ || _|| _|| _d S )N)Ú_modeÚ_bufsizeÚ	_encodingÚ_errors)r!   ÚmodeÚbufsizeÚencodingÚerrorsr&   r&   r'   rN   �  s    zFileType.__init__c             C   s–   |dkr>d| j krtjS d| j kr(tjS tdƒ| j  }t|ƒ‚yt|| j | j| j| j	ƒS  t
k
r� } ztdƒ}t|||f ƒ‚W Y d d }~X nX d S )Nú-rõ   Úwzargument "-" with mode %rzcan't open '%s': %s)rö   rà   Ústdinrá   r}   r:   r¢   r÷   rø   rù   ÚOSErrorr   )r!   Ústringró   ÚerÅ   r&   r&   r'   rÌ   •  s    

zFileType.__call__c             C   sT   | j | jf}d| jfd| jfg}djdd„ |D ƒdd„ |D ƒ ƒ}dt| ƒj|f S )Nrü   rý   z, c             S   s   g | ]}|dkrt |ƒ‘qS )rO   rŒ   )r   )rU   r#   r&   r&   r'   rX   «  s    z%FileType.__repr__.<locals>.<listcomp>c             S   s$   g | ]\}}|d k	rd||f ‘qS )Nz%s=%rr&   )rU   Úkwr#   r&   r&   r'   rX   ¬  s    z%s(%s))rö   r÷   rø   rù   r    r   r   )r!   rW   rì   Zargs_strr&   r&   r'   r(   ¨  s
    zFileType.__repr__rŒ   )rõ   rŒ   NN)r   r,   r-   rN   rÌ   r(   r&   r&   r&   r'   r   ~  s   
c               @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )r
   c             K   s"   x|D ]}t | ||| ƒ qW d S )N)r/   )r!   rì   r$   r&   r&   r'   rN   »  s    
zNamespace.__init__c             C   s   t |tƒstS t| ƒt|ƒkS )N)r®   r
   ÚNotImplementedr´   )r!   Úotherr&   r&   r'   Ú__eq__¿  s    
zNamespace.__eq__c             C   s
   || j kS )N)r*   )r!   rô   r&   r&   r'   Ú__contains__Ä  s    zNamespace.__contains__N)r   r,   r-   rN   r  r  r&   r&   r&   r'   r
   ´  s   c                   s¨   e Zd Z‡ f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d„ Zdd„ Zdd„ Zdd„ Zd'dd„Zdd„ Zd d!„ Zd"d#„ Zd$d%„ Z‡  ZS )(Ú_ActionsContainerc                s  t t| ƒjƒ  || _|| _|| _|| _i | _| jdd t	ƒ | jddt	ƒ | jddt
ƒ | jddtƒ | jddtƒ | jddtƒ | jddtƒ | jddtƒ | jdd	tƒ | jdd
tƒ | jddtƒ | jƒ  g | _i | _g | _g | _i | _tjdƒ| _g | _d S )Nro   ZstoreZstore_constÚ
store_trueZstore_falser   Zappend_constÚcountrk   rÝ   Úparsersz^-\d+$|^-\d*\.\d+$)rÎ   r	  rN   ÚdescriptionÚargument_defaultÚprefix_charsÚconflict_handlerÚ_registriesÚregisterrÍ   rÑ   rÒ   rÓ   rÔ   r×   rØ   rÙ   rÜ   râ   Ú_get_handlerÚ_actionsÚ_option_string_actionsÚ_action_groupsÚ_mutually_exclusive_groupsÚ	_defaultsrG   rH   Ú_negative_number_matcherÚ_has_negative_number_optionals)r!   r  r  r  r  )rÏ   r&   r'   rN   Ê  s2    z_ActionsContainer.__init__c             C   s   | j j|i ƒ}|||< d S )N)r  rñ   )r!   Úregistry_namer%   r½   Úregistryr&   r&   r'   r  þ  s    z_ActionsContainer.registerNc             C   s   | j | j||ƒS )N)r  r”   )r!   r  r%   rŸ   r&   r&   r'   Ú_registry_get  s    z_ActionsContainer._registry_getc             K   s6   | j j|ƒ x$| jD ]}|j|kr||j |_qW d S )N)r  Úupdater  r»   rŸ   )r!   rì   ro   r&   r&   r'   Úset_defaults  s    
z_ActionsContainer.set_defaultsc             C   s8   x(| j D ]}|j|kr|jd k	r|jS qW | jj|d ƒS )N)r  r»   rŸ   r  r”   )r!   r»   ro   r&   r&   r'   Úget_default  s    
z_ActionsContainer.get_defaultc             O   s0  | j }| s(t|ƒdkrJ|d d |krJ|r<d|kr<tdƒ‚| j||Ž}n| j||Ž}d|kr”|d }|| jkr€| j| |d< n| jd k	r”| j|d< | j|ƒ}t|ƒs´td|f ƒ‚|f |Ž}| j	d|j
|j
ƒ}t|ƒsætd|f ƒ‚t| d	ƒ�r&y| jƒ j|d ƒ W n tk
�r$   td
ƒ‚Y nX | j|ƒS )NrO   r   r»   z+dest supplied twice for positional argumentrŸ   zunknown action "%s"r   z%r is not callablerÞ   z,length of metavar tuple does not match nargs)r  ri   r:   Ú_get_positional_kwargsÚ_get_optional_kwargsr  r  Ú_pop_action_classÚcallabler  r   r¶   rÞ   r—   Ú	TypeErrorÚ_add_action)r!   rW   rì   Úcharsr»   Zaction_classro   Ú	type_funcr&   r&   r'   rq     s2    	"




z_ActionsContainer.add_argumentc             O   s    t | f|ž|Ž}| jj|ƒ |S )N)Ú_ArgumentGroupr  r   )r!   rW   rì   r›   r&   r&   r'   Úadd_argument_groupJ  s    z$_ActionsContainer.add_argument_groupc             K   s   t | f|Ž}| jj|ƒ |S )N)Ú_MutuallyExclusiveGroupr  r   )r!   rì   r›   r&   r&   r'   Úadd_mutually_exclusive_groupO  s    z._ActionsContainer.add_mutually_exclusive_groupc             C   sh   | j |ƒ | jj|ƒ | |_x|jD ]}|| j|< q$W x,|jD ]"}| jj|ƒr>| js>| jjdƒ q>W |S )NT)	Ú_check_conflictr  r   Ú	containerr   r  r  Úmatchr  )r!   ro   r    r&   r&   r'   r&  T  s    
z_ActionsContainer._add_actionc             C   s   | j j|ƒ d S )N)r  Úremove)r!   ro   r&   r&   r'   Ú_remove_actioni  s    z _ActionsContainer._remove_actionc             C   sò   i }x8| j D ].}|j|kr0tdƒ}t||j ƒ‚|||j< qW i }xR|j D ]H}|j|krt| j|j|j|jd�||j< x|jD ]}||j ||< q|W qJW x4|jD ]*}| j	|j
d�}x|jD ]}|||< q¸W qžW x |jD ]}|j|| ƒj|ƒ qÔW d S )Nz.cannot merge actions - two groups are named %r)Útitler  r  )r‘   )r  r2  r}   r:   r*  r  r  r�   r  r,  r‘   r  r”   r&  )r!   r.  Ztitle_group_mapr›   ró   Z	group_mapro   Úmutex_groupr&   r&   r'   Ú_add_container_actionsl  s,    


z(_ActionsContainer._add_container_actionsc             K   s^   d|krt dƒ}t|ƒ‚|jdƒttgkr2d|d< |jdƒtkrPd|krPd|d< t||g d�S )Nr‘   z1'required' is an invalid argument for positionalsr˜   TrŸ   )r»   r   )r}   r%  r”   r   r   r~   )r!   r»   rì   ró   r&   r&   r'   r!  ”  s    z(_ActionsContainer._get_positional_kwargsc       	      O   sè   g }g }xv|D ]n}|d | j kr@|| j dœ}tdƒ}t|| ƒ‚|j|ƒ |d | j krt|ƒdkr|d | j kr|j|ƒ qW |jdd ƒ}|d krÚ|r¢|d }n|d }|j| j ƒ}|sÎtdƒ}t|| ƒ‚|jddƒ}t|||d	�S )
Nr   )Úoptionr  zNinvalid option string %(option)r: must start with a character %(prefix_chars)rrO   r»   z%dest= is required for options like %rrþ   r}   )r»   r   )	r  r}   r:   r   ri   r•   ÚlstripÚreplacer~   )	r!   rW   rì   r   Zlong_option_stringsr    ró   r»   Zdest_option_stringr&   r&   r'   r"  ¤  s0    



z&_ActionsContainer._get_optional_kwargsc             C   s   |j d|ƒ}| jd||ƒS )Nro   )r•   r  )r!   rì   rŸ   ro   r&   r&   r'   r#  È  s    z#_ActionsContainer._pop_action_classc             C   sD   d| j  }y
t| |ƒS  tk
r>   tdƒ}t|| j  ƒ‚Y nX d S )Nz_handle_conflict_%sz%invalid conflict_resolution value: %r)r  r.   r¹   r}   r:   )r!   Zhandler_func_nameró   r&   r&   r'   r  Ì  s    

z_ActionsContainer._get_handlerc             C   sP   g }x0|j D ]&}|| jkr| j| }|j||fƒ qW |rL| jƒ }|||ƒ d S )N)r   r  r   r  )r!   ro   Zconfl_optionalsr    Zconfl_optionalr  r&   r&   r'   r-  Õ  s    

z!_ActionsContainer._check_conflictc             C   s6   t ddt|ƒƒ}djdd„ |D ƒƒ}t||| ƒ‚d S )Nzconflicting option string: %szconflicting option strings: %sz, c             S   s   g | ]\}}|‘qS r&   r&   )rU   r    ro   r&   r&   r'   rX   ç  s   z<_ActionsContainer._handle_conflict_error.<locals>.<listcomp>)r   ri   r    r   )r!   ro   Úconflicting_actionsrÅ   Zconflict_stringr&   r&   r'   Ú_handle_conflict_errorã  s    


z(_ActionsContainer._handle_conflict_errorc             C   sB   x<|D ]4\}}|j j|ƒ | jj|d ƒ |j s|jj|ƒ qW d S )N)r   r0  r  r•   r.  r1  )r!   ro   r8  r    r&   r&   r'   Ú_handle_conflict_resolveì  s
    z*_ActionsContainer._handle_conflict_resolve)N)N)r   r,   r-   rN   r  r  r  r   rq   r*  r,  r&  r1  r4  r!  r"  r#  r  r-  r9  r:  rÐ   r&   r&   )rÏ   r'   r	  È  s$   4
	
/($
		r	  c                   s6   e Zd Zd‡ fdd„	Z‡ fdd„Z‡ fdd„Z‡  ZS )	r)  Nc                sˆ   |j }|d|jƒ |d|jƒ |d|jƒ tt| ƒj}|f d|i|—Ž || _g | _|j	| _	|j
| _
|j| _|j| _|j| _|j| _d S )Nr  r  r  r  )rñ   r  r  r  rÎ   r)  rN   r2  r�   r  r  r  r  r  r  )r!   r.  r2  r  rì   r  Z
super_init)rÏ   r&   r'   rN   ý  s    z_ArgumentGroup.__init__c                s    t t| ƒj|ƒ}| jj|ƒ |S )N)rÎ   r)  r&  r�   r   )r!   ro   )rÏ   r&   r'   r&    s    z_ArgumentGroup._add_actionc                s    t t| ƒj|ƒ | jj|ƒ d S )N)rÎ   r)  r1  r�   r0  )r!   ro   )rÏ   r&   r'   r1    s    z_ArgumentGroup._remove_action)NN)r   r,   r-   rN   r&  r1  rÐ   r&   r&   )rÏ   r'   r)  û  s   r)  c                   s.   e Zd Zd‡ fdd„	Zdd„ Zdd„ Z‡  ZS )	r+  Fc                s    t t| ƒj|ƒ || _|| _d S )N)rÎ   r+  rN   r‘   Ú
_container)r!   r.  r‘   )rÏ   r&   r'   rN     s    z _MutuallyExclusiveGroup.__init__c             C   s2   |j rtdƒ}t|ƒ‚| jj|ƒ}| jj|ƒ |S )Nz-mutually exclusive arguments must be optional)r‘   r}   r:   r;  r&  r�   r   )r!   ro   ró   r&   r&   r'   r&  $  s    z#_MutuallyExclusiveGroup._add_actionc             C   s   | j j|ƒ | jj|ƒ d S )N)r;  r1  r�   r0  )r!   ro   r&   r&   r'   r1  ,  s    z&_MutuallyExclusiveGroup._remove_action)F)r   r,   r-   rN   r&  r1  rÐ   r&   r&   )rÏ   r'   r+    s   r+  c                   s  e Zd Zddddg eddddddf‡ fdd„	Zdd„ Zd	d
„ Zdd„ Zdd„ Zdd„ Z	d<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!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zd+d,„ Zd-d.„ Zd/d0„ Zd>d1d2„Zd?d3d4„Zd@d5d6„ZdAd8d9„Zd:d;„ Z‡  ZS )Br   Nrþ   ÚerrorTc                s&  t t| ƒj}||||	|
d� |d kr6tjjtjd ƒ}|| _|| _	|| _
|| _|| _|| _|| _| j}|tdƒƒ| _|tdƒƒ| _d | _dd„ }| jdd |ƒ d|krªdn|d }| jrÜ| j|d	 |d
 d dttdƒd� xD|D ]<}| j|ƒ y
|j}W n tk
�r   Y qâX | jj|ƒ qâW d S )N)r  r  r  r  r   zpositional argumentszoptional argumentsc             S   s   | S )Nr&   )r  r&   r&   r'   Úidentityj  s    z)ArgumentParser.__init__.<locals>.identityr   rþ   Úhr2   rk   zshow this help message and exit)ro   rŸ   rk   )rÎ   r   rN   r7   ÚpathÚbasenamerà   ÚargvrL   rd   ÚepilogÚformatter_classÚfromfile_prefix_charsÚadd_helpÚallow_abbrevr*  r}   Ú_positionalsÚ
_optionalsÚ_subparsersr  rq   r   r4  r  r¹   r  )r!   rL   rd   r  rB  ÚparentsrC  r  rD  r  r  rE  rF  Z	superinitZ	add_groupr=  Zdefault_prefixrS   Zdefaults)rÏ   r&   r'   rN   D  sB    


zArgumentParser.__init__c                s"   ddddddg}‡ fdd„|D ƒS )	NrL   rd   r  rC  r  rE  c                s   g | ]}|t ˆ |ƒf‘qS r&   )r.   )rU   r$   )r!   r&   r'   rX   �  s    z.ArgumentParser._get_kwargs.<locals>.<listcomp>r&   )r!   rÈ   r&   )r!   r'   r   „  s    zArgumentParser._get_kwargsc       	      K   sä   | j d k	r| jtdƒƒ |jdt| ƒƒ d|ks8d|krht|jddƒƒ}t|jdd ƒƒ}| j||ƒ| _ n| j| _ |jdƒd kr¶| j	ƒ }| j
ƒ }| j}|j| j||dƒ |jƒ jƒ |d< | j|dƒ}|f d	g i|—Ž}| j j|ƒ |S )
Nz(cannot have multiple subparser argumentsrë   r2  r  ZsubcommandsrL   rY   r  r   )rI  r<  r}   rñ   r   r•   r*  rG  r”   rÞ   Ú_get_positional_actionsr  rh   rd   r\   rt   r#  r&  )	r!   rì   r2  r  rR   rƒ   rf   Zparsers_classro   r&   r&   r'   Úadd_subparsers’  s$    
zArgumentParser.add_subparsersc             C   s$   |j r| jj|ƒ n| jj|ƒ |S )N)r   rH  r&  rG  )r!   ro   r&   r&   r'   r&  ±  s    zArgumentParser._add_actionc             C   s   dd„ | j D ƒS )Nc             S   s   g | ]}|j r|‘qS r&   )r   )rU   ro   r&   r&   r'   rX   ¹  s   z8ArgumentParser._get_optional_actions.<locals>.<listcomp>)r  )r!   r&   r&   r'   Ú_get_optional_actions¸  s    z$ArgumentParser._get_optional_actionsc             C   s   dd„ | j D ƒS )Nc             S   s   g | ]}|j s|‘qS r&   )r   )rU   ro   r&   r&   r'   rX   ¾  s   z:ArgumentParser._get_positional_actions.<locals>.<listcomp>)r  )r!   r&   r&   r'   rK  ½  s    z&ArgumentParser._get_positional_actionsc             C   s4   | j ||ƒ\}}|r0tdƒ}| j|dj|ƒ ƒ |S )Nzunrecognized arguments: %srv   )rð   r}   r<  r    )r!   rW   r0   rA  ró   r&   r&   r'   Ú
parse_argsÅ  s
    zArgumentParser.parse_argsc             C   s  |d krt jdd … }nt|ƒ}|d kr.tƒ }x>| jD ]4}|jtk	r6t||jƒs6|jtk	r6t	||j|jƒ q6W x*| j
D ] }t||ƒsvt	||| j
| ƒ qvW y<| j||ƒ\}}t|tƒrÐ|jt|tƒƒ t|tƒ ||fS  tk
�r   t jƒ d }| jt|ƒƒ Y nX d S )NrO   )rà   rA  rµ   r
   r  r»   r   r¶   rŸ   r/   r  Ú_parse_known_argsrò   r‚   r.   Údelattrr   Úexc_infor<  r¬   )r!   rW   r0   ro   r»   Úerrr&   r&   r'   rð   Ì  s,    




zArgumentParser.parse_known_argsc                s"  ˆ	j d k	rˆ	jˆƒ‰i ‰ x`ˆ	jD ]V}|j}xJt|jƒD ]<\}}ˆ j|g ƒ}|j|d |… ƒ |j||d d … ƒ q6W q W i ‰g }tˆƒ}	xnt|	ƒD ]b\}}
|
dkrÈ|jdƒ xF|	D ]}
|jdƒ q´W q”ˆ	j	|
ƒ}|d kràd}n|ˆ|< d}|j|ƒ q”W dj
|ƒ‰tƒ ‰tƒ ‰d‡ ‡‡‡‡	fdd„	‰‡‡‡‡‡	‡fd	d
„}ˆ	jƒ ‰‡‡‡‡	‡fdd„}g ‰d‰
ˆ�rptˆƒ}nd}x|ˆ
|k�rðt‡
fdd„ˆD ƒƒ}ˆ
|k�rÀ|ˆ
ƒ}|ˆ
k�r¼|‰
�qvn|‰
ˆ
ˆk�räˆˆ
|… }ˆj|ƒ |‰
|ˆ
ƒ‰
�qvW |ˆ
ƒ}ˆjˆ|d … ƒ g }x†ˆ	jD ]|}|ˆk�r|j�r>|jt|ƒƒ nT|jd k	�rt|jtƒ�rtˆ|jƒ�r|jtˆ|jƒk�rtˆ|jˆ	j||jƒƒ �qW |�r¶ˆ	jtdƒdj
|ƒ ƒ xbˆ	jD ]X}|j�r¾xH|jD ]}|ˆk�rÒP �qÒW dd„ |jD ƒ}tdƒ}ˆ	j|dj
|ƒ ƒ �q¾W ˆˆfS )NrO   z--rþ   ÚAÚOrY   c                s€   ˆj | ƒ ˆj| |ƒ}|| jk	rfˆj | ƒ x:ˆ j| g ƒD ]*}|ˆkr8tdƒ}t|ƒ}t| || ƒ‚q8W |tk	r|| ˆˆ||ƒ d S )Nznot allowed with argument %s)r�   Ú_get_valuesrŸ   r”   r}   rÃ   r   r   )ro   Zargument_stringsr    Zargument_valuesZconflict_actionró   Zaction_name)Úaction_conflictsr0   Úseen_actionsÚseen_non_default_actionsr!   r&   r'   Útake_action  s    


z5ArgumentParser._parse_known_args.<locals>.take_actionc                s„  ˆ|  }|\}}}ˆj }g }�x>|d kr>ˆjˆ |  ƒ | d S |d k	�r||dƒ}ˆj}|dkrÔ|d |krÔ|j|g |fƒ |d }	|	|d  }|dd … pžd }
ˆj}||kr¼|| }|
}ntdƒ}t||| ƒ‚n@|dkrþ| d }|g}|j|||fƒ P ntdƒ}t||| ƒ‚q | d }ˆ|d … }|||ƒ}|| }ˆ ||… }|j|||fƒ P q W x |D ]\}}}ˆ|||ƒ �qdW |S )NrO   rS  r   zignored explicit argument %r)Ú_match_argumentr   r  r  r}   r   )Ústart_indexÚoption_tuplero   r    Úexplicit_argZmatch_argumentZaction_tuplesÚ	arg_countr'  ÚcharZnew_explicit_argZoptionals_mapró   ÚstoprW   rœ   Zselected_patterns)r"   Úarg_strings_patternÚextrasÚoption_string_indicesr!   rY  r&   r'   Úconsume_optional3  sN    



z:ArgumentParser._parse_known_args.<locals>.consume_optionalc                sr   ˆj }ˆ| d … }|ˆ|ƒ}x8tˆ|ƒD ]*\}}ˆ | | | … }| |7 } ˆ||ƒ q(W ˆt|ƒd … ˆd d …< | S )N)Ú_match_arguments_partialÚzipri   )r[  Zmatch_partialZselected_patternZ
arg_countsro   r^  rW   )r"   ra  rƒ   r!   rY  r&   r'   Úconsume_positionals€  s    
z=ArgumentParser._parse_known_args.<locals>.consume_positionalsr   c                s   g | ]}|ˆ kr|‘qS r&   r&   )rU   rŽ   )r[  r&   r'   rX   ž  s   z4ArgumentParser._parse_known_args.<locals>.<listcomp>z(the following arguments are required: %sz, c             S   s   g | ]}|j tk	rt|ƒ‘qS r&   )rk   r   rÃ   )rU   ro   r&   r&   r'   rX   Ü  s   z#one of the arguments %s is requiredrv   )NrŒ   )rD  Ú_read_args_from_filesr  r�   r“   rñ   r‚   Úiterr   Ú_parse_optionalr    r�   rK  r?   r>   r  r‘   rÃ   rŸ   r®   r¬   r¶   r»   r.   r/   Ú
_get_valuer<  r}   )r!   r"   r0   r3  rš   rž   Zmutex_actionZ	conflictsZarg_string_pattern_partsZarg_strings_iterÚ
arg_stringr\  Úpatternrd  rg  Zmax_option_string_indexZnext_option_string_indexZpositionals_end_indexZstringsZ
stop_indexZrequired_actionsro   r›   rÈ   ró   r&   )rV  r"   ra  rb  r0   rc  rƒ   rW  rX  r!   r[  rY  r'   rO  ï  s˜    





J










z ArgumentParser._parse_known_argsc             C   sÒ   g }xÈ|D ]À}| s"|d | j kr.|j|ƒ q
ylt|dd … ƒ�R}g }x2|jƒ jƒ D ]"}x| j|ƒD ]}|j|ƒ qdW qTW | j|ƒ}|j|ƒ W d Q R X W q
 tk
rÈ   t	j
ƒ d }| jt|ƒƒ Y q
X q
W |S )Nr   rO   )rD  r   r¢   ÚreadrÀ   Úconvert_arg_line_to_argsrh  r‚   r  rà   rQ  r<  r¬   )r!   r"   Znew_arg_stringsrl  Z	args_fileÚarg_liner#   rR  r&   r&   r'   rh  å  s     

z$ArgumentParser._read_args_from_filesc             C   s   |gS )Nr&   )r!   rp  r&   r&   r'   ro  ÿ  s    z'ArgumentParser.convert_arg_line_to_argsc             C   st   | j |ƒ}tj||ƒ}|d krfd tdƒttdƒttdƒi}tdd|jƒ|j }|j|j|ƒ}t	||ƒ‚t
|jdƒƒS )Nzexpected one argumentzexpected at most one argumentzexpected at least one argumentzexpected %s argumentzexpected %s argumentsrO   )Ú_get_nargs_patternrG   r/  r}   r   r   r   r˜   r”   r   ri   r›   )r!   ro   ra  Únargs_patternr/  Znargs_errorsrŸ   ró   r&   r&   r'   rZ    s    

zArgumentParser._match_argumentc                st   g }xjt t|ƒddƒD ]V}|d |… }dj‡ fdd„|D ƒƒ}tj||ƒ}|d k	r|jdd„ |jƒ D ƒƒ P qW |S )Nr   rO   rY   c                s   g | ]}ˆ j |ƒ‘qS r&   )rq  )rU   ro   )r!   r&   r'   rX     s   z;ArgumentParser._match_arguments_partial.<locals>.<listcomp>c             S   s   g | ]}t |ƒ‘qS r&   )ri   )rU   r  r&   r&   r'   rX   !  s    rŒ   )r’   ri   r    rG   r/  r‚   rf   )r!   re   ra  r°   rž   Zactions_slicerm  r/  r&   )r!   r'   re    s    
z'ArgumentParser._match_arguments_partialc       
      C   s  |sd S |d | j krd S || jkr8| j| }||d fS t|ƒdkrHd S d|kr~|jddƒ\}}|| jkr~| j| }|||fS | jræ| j|ƒ}t|ƒdkrÐdjdd„ |D ƒƒ}||dœ}tdƒ}| j|| ƒ nt|ƒdkræ|\}	|	S | j	j
|ƒ�r | j�s d S d	|k�rd S d |d fS )
Nr   rO   ú=z, c             S   s   g | ]\}}}|‘qS r&   r&   )rU   ro   r    r]  r&   r&   r'   rX   G  s   z2ArgumentParser._parse_optional.<locals>.<listcomp>)r5  Zmatchesz4ambiguous option: %(option)s could match %(matches)srv   )r  r  ri   ÚsplitrF  Ú_get_option_tuplesr    r}   r<  r  r/  r  )
r!   rl  ro   r    r]  Zoption_tuplesZoptionsrW   ró   r\  r&   r&   r'   rj  '  s>    










zArgumentParser._parse_optionalc       
      C   s0  g }| j }|d |kr~|d |kr~d|kr<|jddƒ\}}n|}d }xæ| jD ],}|j|ƒrL| j| }|||f}|j|ƒ qLW n®|d |ko”|d |k�r|}d }|d d… }|dd … }	xr| jD ]T}||krì| j| }|||	f}|j|ƒ qÀ|j|ƒrÀ| j| }|||f}|j|ƒ qÀW n| jtdƒ| ƒ |S )Nr   rO   rs  r2   zunexpected option string: %s)r  rt  r  Ú
startswithr   r<  r}   )
r!   r    r°   r'  Zoption_prefixr]  ro   r©   Zshort_option_prefixZshort_explicit_argr&   r&   r'   ru  b  s8    







z!ArgumentParser._get_option_tuplesc             C   sŽ   |j }|d krd}nX|tkr"d}nJ|tkr0d}n<|tkr>d}n.|tkrLd}n |tkrZd}nddjd	| ƒ }|jrŠ|jdd
ƒ}|jdd
ƒ}|S )Nz(-*A-*)z(-*A?-*)z	(-*[A-]*)z
(-*A[A-]*)z([-AO]*)z(-*A[-AO]*)z(-*%s-*)z-*rS  rY   rþ   )	r˜   r   r   r   r   r   r    r   r7  )r!   ro   r˜   rr  r&   r&   r'   rq  Ž  s$    z!ArgumentParser._get_nargs_patternc                sx  ˆ j ttgkr2y|jdƒ W n tk
r0   Y nX | rzˆ j tkrzˆ jrPˆ j}nˆ j}t	|t
ƒrxˆjˆ |ƒ}ˆjˆ |ƒ nú| r¶ˆ j tkr¶ˆ j r¶ˆ jd k	r¤ˆ j}n|}ˆjˆ |ƒ n¾t|ƒdkrðˆ j d tgkrð|\}ˆjˆ |ƒ}ˆjˆ |ƒ n„ˆ j tk�r‡ ‡fdd„|D ƒ}nbˆ j tk�rD‡ ‡fdd„|D ƒ}ˆjˆ |d ƒ n0‡ ‡fdd„|D ƒ}x|D ]}ˆjˆ |ƒ �q^W |S )Nz--rO   c                s   g | ]}ˆj ˆ |ƒ‘qS r&   )rk  )rU   Úv)ro   r!   r&   r'   rX   Þ  s    z.ArgumentParser._get_values.<locals>.<listcomp>c                s   g | ]}ˆj ˆ |ƒ‘qS r&   )rk  )rU   rw  )ro   r!   r&   r'   rX   â  s    r   c                s   g | ]}ˆj ˆ |ƒ‘qS r&   )rk  )rU   rw  )ro   r!   r&   r'   rX   ç  s    )r˜   r   r   r0  r:   r   r   rÇ   rŸ   r®   r¬   rk  Ú_check_valuer   ri   )r!   ro   r"   r%   rl  rw  r&   )ro   r!   r'   rU  º  s>    


zArgumentParser._get_valuesc             C   sÎ   | j d|j|jƒ}t|ƒs0tdƒ}t||| ƒ‚y||ƒ}W nŒ tk
r~   t|jdt|jƒƒ}tt	j
ƒ d ƒ}t||ƒ‚Y nL ttfk
rÈ   t|jdt|jƒƒ}||dœ}tdƒ}t||| ƒ‚Y nX |S )Nr   z%r is not callabler   rO   )r   r%   z!invalid %(type)s value: %(value)r)r  r   r$  r}   r   r   r.   r   r¬   rà   rQ  r%  r:   )r!   ro   rl  r(  ró   r°   r$   rW   r&   r&   r'   rk  î  s     
zArgumentParser._get_valuec             C   sF   |j d k	rB||j krB|djtt|j ƒƒdœ}tdƒ}t||| ƒ‚d S )Nz, )r%   r±   z3invalid choice: %(value)r (choose from %(choices)s))r±   r    Úmapr   r}   r   )r!   ro   r%   rW   ró   r&   r&   r'   rx  	  s
    zArgumentParser._check_valuec             C   s$   | j ƒ }|j| j| j| jƒ |jƒ S )N)rÞ   rh   rd   r  r  r\   )r!   rR   r&   r&   r'   Úformat_usage	  s    zArgumentParser.format_usagec             C   sx   | j ƒ }|j| j| j| jƒ |j| jƒ x:| jD ]0}|j|j	ƒ |j|jƒ |j
|jƒ |jƒ  q0W |j| jƒ |jƒ S )N)rÞ   rh   rd   r  r  rb   r  r  r^   r2  rr   r�   r_   rB  r\   )r!   rR   Zaction_groupr&   r&   r'   r\   	  s    zArgumentParser.format_helpc             C   s   | j | jd�S )N)rL   )rC  rL   )r!   r&   r&   r'   rÞ   0	  s    zArgumentParser._get_formatterc             C   s"   |d krt j}| j| jƒ |ƒ d S )N)rà   rá   rß   rz  )r!   Úfiler&   r&   r'   Úprint_usage6	  s    zArgumentParser.print_usagec             C   s"   |d krt j}| j| jƒ |ƒ d S )N)rà   rá   rß   r\   )r!   r{  r&   r&   r'   rÚ   ;	  s    zArgumentParser.print_helpc             C   s    |r|d krt j}|j|ƒ d S )N)rà   ÚstderrÚwrite)r!   rÅ   r{  r&   r&   r'   rß   @	  s    zArgumentParser._print_messager   c             C   s    |r| j |tjƒ tj|ƒ d S )N)rß   rà   r}  rÛ   )r!   ZstatusrÅ   r&   r&   r'   rÛ   I	  s    zArgumentParser.exitc             C   s0   | j tjƒ | j|dœ}| jdtdƒ| ƒ d S )N)rL   rÅ   r2   z%(prog)s: error: %(message)s
)r|  rà   r}  rL   rÛ   r}   )r!   rÅ   rW   r&   r&   r'   r<  N	  s    	zArgumentParser.error)NN)NN)N)N)N)r   N) r   r,   r-   r   rN   r   rL  r&  rM  rK  rN  rð   rO  rh  ro  rZ  re  rj  ru  rq  rU  rk  rx  rz  r\   rÞ   r|  rÚ   rß   rÛ   r<  rÐ   r&   r&   )rÏ   r'   r   1  sN   4

# w;,,4


	
)5Ú__version__Ú__all__Úcollectionsrç   rÖ   rÕ   Úosr7   ÚrerG   Úsysrà   Útextwraprº   r   r}   r   r   r   r   r   r   r   rò   r½   r   r1   r   r   r   r   r	   rÃ   Ú	Exceptionr   r   r   rÍ   rÑ   rÒ   rÓ   rÔ   r×   rØ   rÙ   rÜ   râ   r   r
   r	  r)  r+  r   r&   r&   r&   r'   Ú<module>@   s~   
   n	[#%`6  5"