
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
U
    ¡ê,aw ã                   @   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
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ƒZ,G dAd
„ d
eƒZ-G dBdC„ dCeƒZ.G dDdE„ dEe.ƒZ/G dFdG„ dGe/ƒZ0G dHd„ dee.ƒZ1dS )Iz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_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 }|  ¡ D ]}| t|ƒ¡ q|  ¡ D ],\}}| ¡ rZ| d||f ¡ q6|||< q6|rz| dt|ƒ ¡ d|d |¡f S )Nú%s=%rz**%sú%s(%s)ú, )ÚtypeÚ__name__Ú	_get_argsÚappendÚreprÚ_get_kwargsÚisidentifierÚjoin)ÚselfZ	type_nameÚarg_stringsZ	star_argsÚargÚnameÚvalue© r*   ú-/opt/alt/python38/lib64/python3.8/argparse.pyÚ__repr__t   s    

z_AttributeHolder.__repr__c                 C   s   t | j ¡ ƒS ©N)ÚsortedÚ__dict__Úitems©r%   r*   r*   r+   r"   ƒ   s    z_AttributeHolder._get_kwargsc                 C   s   g S r-   r*   r1   r*   r*   r+   r   †   s    z_AttributeHolder._get_argsN)r   Ú
__module__Ú__qualname__r,   r"   r   r*   r*   r*   r+   r   k   s   	r   c                 C   s6   | d krg S t | ƒtkr$| d d … S dd l}| | ¡S )Nr   )r   ÚlistÚcopy)r0   r5   r*   r*   r+   Ú_copy_itemsŠ   s    r6   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t  ¡ j}|d8 }|| _|| _t|t|d |d ƒƒ| _|| _d| _	d| _
d| _|  | d ¡| _| j| _t dtj¡| _t d¡| _d S )Nr7   é   r   z\s+z\n\n\n+)Ú_shutilÚget_terminal_sizeÚcolumnsÚ_progÚ_indent_incrementÚminÚmaxÚ_max_help_positionÚ_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é   ©rC   r>   rD   r1   r*   r*   r+   Ú_indent¿   s    zHelpFormatter._indentc                 C   s"   |  j | j8  _ |  jd8  _d S rQ   rS   r1   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 r-   )Ú	formatterÚparentÚheadingr0   )r%   rV   rW   rX   r*   r*   r+   rP   Ê   s    zHelpFormatter._Section.__init__c                 C   sŽ   | j d k	r| j ¡  | jj}|dd„ | jD ƒƒ}| j d k	rD| 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:
Ú
)	rW   rV   rT   Ú_join_partsr0   rU   rX   r   rC   )r%   r$   Z	item_helpZcurrent_indentrX   r*   r*   r+   Úformat_helpÐ   s    



z"HelpFormatter._Section.format_help)N)r   r2   r3   rP   r`   r*   r*   r*   r+   rF   È   s   
rF   c                 C   s   | j j ||f¡ d S r-   )rH   r0   r    )r%   rZ   r[   r*   r*   r+   Ú	_add_itemç   s    zHelpFormatter._add_itemc                 C   s0   |   ¡  |  | | j|¡}|  |jg ¡ || _d S r-   )rT   rF   rH   ra   r`   )r%   rX   Zsectionr*   r*   r+   Ústart_sectioní   s    zHelpFormatter.start_sectionc                 C   s   | j j| _ |  ¡  d S r-   )rH   rW   rU   r1   r*   r*   r+   Úend_sectionó   s    
zHelpFormatter.end_sectionc                 C   s$   |t k	r |d k	r |  | j|g¡ d S r-   )r   ra   Ú_format_text)r%   Útextr*   r*   r+   Úadd_text÷   s    zHelpFormatter.add_textc                 C   s&   |t k	r"||||f}|  | j|¡ d S r-   )r   ra   Ú_format_usage)r%   ÚusageÚactionsÚgroupsÚprefixr[   r*   r*   r+   Ú	add_usageû   s    zHelpFormatter.add_usagec                 C   sv   |j tk	rr| j}||ƒg}|  |¡D ]}| ||ƒ¡ q$tdd„ |D ƒƒ}|| j }t| j|ƒ| _|  | j	|g¡ d S )Nc                 S   s   g | ]}t |ƒ‘qS r*   ©Úlen©rY   Úsr*   r*   r+   r\   
  s     z.HelpFormatter.add_argument.<locals>.<listcomp>)
Úhelpr   Ú_format_action_invocationÚ_iter_indented_subactionsr    r@   rC   rE   ra   Ú_format_action)r%   ÚactionZget_invocationZinvocationsÚ	subactionZinvocation_lengthZaction_lengthr*   r*   r+   Úadd_argument   s    


ÿzHelpFormatter.add_argumentc                 C   s   |D ]}|   |¡ qd S r-   )rw   )r%   ri   ru   r*   r*   r+   Úadd_arguments  s    zHelpFormatter.add_argumentsc                 C   s.   | j  ¡ }|r*| j d|¡}| d¡d }|S )Nú

r^   )rG   r`   rM   ÚsubÚstrip)r%   rq   r*   r*   r+   r`     s
    
zHelpFormatter.format_helpc                 C   s   d  dd„ |D ƒ¡S )Nr]   c                 S   s   g | ]}|r|t k	r|‘qS r*   )r   )rY   Úpartr*   r*   r+   r\   !  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rL|sLdt| jd� }�n¶|d k�rdt| jd� }g }g }|D ] }|jrˆ| |¡ qr| |¡ qr| j}	|	|| |ƒ}
d dd„ ||
fD ƒ¡}| j| j ‰ t	|ƒt	|ƒ ˆ k�rd}|	||ƒ}|	||ƒ}t
 ||¡}t
 ||¡}d‡ fdd	„	}t	|ƒt	|ƒ d
ˆ  k�rždt	|ƒt	|ƒ d  }|�r|||g| ||ƒ}| |||ƒ¡ n |�r–||g| ||ƒ}n|g}nZdt	|ƒ }|| }|||ƒ}t	|ƒdk�rîg }| |||ƒ¡ | |||ƒ¡ |g| }d |¡}d||f S )Nzusage: ©rN   z%(prog)sú c                 S   s   g | ]}|r|‘qS r*   r*   ro   r*   r*   r+   r\   A  s      z/HelpFormatter._format_usage.<locals>.<listcomp>z%\(.*?\)+(?=\s|$)|\[.*?\]+(?=\s|$)|\S+c                    sÆ   g }g }|d k	rt |ƒd }nt |ƒd }| D ]Z}|d t |ƒ ˆ krn|rn| |d |¡ ¡ g }t |ƒd }| |¡ |t |ƒd 7 }q.|r¢| |d |¡ ¡ |d k	rÂ|d t |ƒd … |d< |S )NrR   r~   r   )rn   r    r$   )ÚpartsÚindentrk   ÚlinesÚlineZline_lenr|   ©Ú
text_widthr*   r+   Ú	get_linesU  s"    
z.HelpFormatter._format_usage.<locals>.get_linesg      è?rR   r^   z%s%s

)N)Ú_Údictr=   Úoption_stringsr    Ú_format_actions_usager$   rB   rC   rn   rI   ÚfindallÚextend)r%   rh   ri   rj   rk   rN   Ú	optionalsÚpositionalsru   ÚformatZaction_usageZpart_regexpZ	opt_usageZ	pos_usageZ	opt_partsZ	pos_partsr…   r€   r�   r   r*   rƒ   r+   rg   %  sX    
ÿ




zHelpFormatter._format_usagec              	   C   sò  t ƒ }i }|D �]}z| |jd ¡}W n tk
r@   Y qY qX |t|jƒ }|||… |jkr|jD ]}| |¡ qh|jsÄ||kr˜||  d7  < nd||< ||krº||  d7  < nd||< nF||krÞ||  d7  < nd||< ||k�r||  d7  < nd||< t|d |ƒD ]}	d	||	< �qqg }
t|ƒD �]"\}	}|j	t
k�r–|
 d ¡ | |	¡d	k�rr| |	¡ n"| |	d ¡d	k�rX| |	d ¡ nÂ|j�sò|  |¡}|  ||¡}||k�ræ|d dk�ræ|d
 dk�ræ|dd
… }|
 |¡ nf|jd }|jdk�rd| }n"|  |¡}|  ||¡}d||f }|j�sN||k�rNd| }|
 |¡ �q6t|dd�D ]}	||	 g|
|	|	…< �qhd dd„ |
D ƒ¡}d}d}t d| d|¡}t d| d|¡}t d||f d|¡}t dd|¡}| ¡ }|S )Nr   z [ú[ú]z (ú(ú)rR   ú|éÿÿÿÿú%sú%s %sú[%s]T)Úreverser~   c                 S   s   g | ]}|d k	r|‘qS r-   r*   )rY   Úitemr*   r*   r+   r\   Þ  s      z7HelpFormatter._format_actions_usage.<locals>.<listcomp>z[\[(]z[\])]z(%s) z\1ú (%s)z%s *%sr]   z\(([^|]*)\))ÚsetÚindexÚ_group_actionsÚ
ValueErrorrn   ÚaddÚrequiredÚrangeÚ	enumeraterq   r   r    ÚgetÚpoprˆ   Ú#_get_default_metavar_for_positionalÚ_format_argsÚnargsÚ!_get_default_metavar_for_optionalr.   r$   rI   rz   r{   )r%   ri   rj   Úgroup_actionsZinsertsÚgroupÚstartÚendru   Úir   Údefaultr|   Úoption_stringÚargs_stringre   ÚopenÚcloser*   r*   r+   r‰   …  sz    










z#HelpFormatter._format_actions_usagec                 C   sF   d|kr|t | jd� }t| j| j dƒ}d| j }|  |||¡d S )Nz%(prog)r}   é   r~   ry   )r‡   r=   r@   rB   rC   Ú
_fill_text)r%   re   r„   r€   r*   r*   r+   rd   ì  s
    
zHelpFormatter._format_textc                 C   s:  t | jd | jƒ}t| j| dƒ}|| j d }|  |¡}|jsV| jd|f}d| }n@t|ƒ|kr~| jd||f}d| }d}n| jd|f}d| }|}|g}|jrø|  	|¡}	|  
|	|¡}
| d|d|
d f ¡ |
dd … D ]}| d|d|f ¡ qÜn| d¡�s| d¡ |  |¡D ]}| |  |¡¡ �q|  |¡S )	Nr7   r³   r]   z%*s%s
z	%*s%-*s  r   rR   r^   )r?   rE   rA   r@   rB   rC   rr   rq   rn   Ú_expand_helpÚ_split_linesr    Úendswithrs   rt   r_   )r%   ru   Zhelp_positionZ
help_widthZaction_widthZaction_headerÚtupZindent_firstr   Z	help_textZ
help_linesr‚   rv   r*   r*   r+   rt   ó  s8    
ÿ



zHelpFormatter._format_actionc                 C   s„   |j s&|  |¡}|  ||¡dƒ\}|S g }|jdkrB| |j ¡ n4|  |¡}|  ||¡}|j D ]}| d||f ¡ q^d |¡S d S )NrR   r   r–   r   )	rˆ   r¥   Ú_metavar_formatterr§   r‹   r¨   r¦   r    r$   )r%   ru   r®   Úmetavarr   r°   r¯   r*   r*   r+   rr   "  s    



z'HelpFormatter._format_action_invocationc                    sP   |j d k	r|j ‰ n.|jd k	r<dd„ |jD ƒ}dd |¡ ‰ n|‰ ‡ fdd„}|S )Nc                 S   s   g | ]}t |ƒ‘qS r*   ©Ústr)rY   Zchoicer*   r*   r+   r\   >  s     z4HelpFormatter._metavar_formatter.<locals>.<listcomp>z{%s}ú,c                    s   t ˆ tƒrˆ S ˆ f|  S d S r-   )Ú
isinstanceÚtuple)Z
tuple_size©Úresultr*   r+   rŽ   C  s    
z0HelpFormatter._metavar_formatter.<locals>.format)rº   Úchoicesr$   )r%   ru   Údefault_metavarZchoice_strsrŽ   r*   rÀ   r+   r¹   :  s    

z HelpFormatter._metavar_formatterc                 C   sô   |   ||¡}|jd kr$d|dƒ }nÌ|jtkr<d|dƒ }n´|jtkrTd|dƒ }nœ|jtkrld|dƒ }n„|jtkr|d}nt|jtkr”d|dƒ }n\|jtkr¤d	}nLzd
d„ t|jƒD ƒ}W n t	k
rÚ   t
dƒd ‚Y nX d |¡||jƒ }|S )Nr•   rR   r—   z[%s [%s ...]]r7   z%s [%s ...]r   z%s ...r]   c                 S   s   g | ]}d ‘qS )r•   r*   )rY   r†   r*   r*   r+   r\   \  s     z.HelpFormatter._format_args.<locals>.<listcomp>zinvalid nargs valuer~   )r¹   r§   r   r   r   r   r   r   r¡   Ú	TypeErrorrž   r$   )r%   ru   rÃ   Zget_metavarrÁ   Zformatsr*   r*   r+   r¦   J  s*    






zHelpFormatter._format_argsc                 C   s˜   t t|ƒ| jd�}t|ƒD ]}|| tkr||= qt|ƒD ] }t|| dƒr:|| j||< q:| d¡d k	rŠd dd„ |d D ƒ¡}||d< |  	|¡| S )Nr}   r   rÂ   r   c                 S   s   g | ]}t |ƒ‘qS r*   r»   )rY   Úcr*   r*   r+   r\   k  s     z.HelpFormatter._expand_help.<locals>.<listcomp>)
r‡   Úvarsr=   r4   r   Úhasattrr   r£   r$   Ú_get_help_string)r%   ru   Zparamsr(   Zchoices_strr*   r*   r+   rµ   b  s    zHelpFormatter._expand_helpc                 c   s@   z
|j }W n tk
r   Y nX |  ¡  |ƒ E d H  |  ¡  d S r-   )Ú_get_subactionsÚAttributeErrorrT   rU   )r%   ru   Zget_subactionsr*   r*   r+   rs   o  s    
z'HelpFormatter._iter_indented_subactionsc                 C   s&   | j  d|¡ ¡ }dd l}| ||¡S )Nr~   r   )rL   rz   r{   ÚtextwrapZwrap)r%   re   rO   rË   r*   r*   r+   r¶   y  s    zHelpFormatter._split_linesc                 C   s,   | j  d|¡ ¡ }dd l}|j||||d�S )Nr~   r   )Zinitial_indentZsubsequent_indent)rL   rz   r{   rË   Zfill)r%   re   rO   r€   rË   r*   r*   r+   r´   €  s    þzHelpFormatter._fill_textc                 C   s   |j S r-   )rq   ©r%   ru   r*   r*   r+   rÈ   ‡  s    zHelpFormatter._get_help_stringc                 C   s
   |j  ¡ S r-   )ÚdestÚupperrÌ   r*   r*   r+   r¨   Š  s    z/HelpFormatter._get_default_metavar_for_optionalc                 C   s   |j S r-   )rÍ   rÌ   r*   r*   r+   r¥   �  s    z1HelpFormatter._get_default_metavar_for_positional)r7   r8   N)N)r   r2   r3   rP   rT   rU   ÚobjectrF   ra   rb   rc   rf   rl   rw   rx   r`   r_   rg   r‰   rd   rt   rr   r¹   r¦   rµ   rs   r¶   r´   rÈ   r¨   r¥   r*   r*   r*   r+   r   š   s<   	   ü

`g/
c                   @   s   e Zd Zdd„ ZdS )r   c                    s    d  ‡ fdd„|jdd�D ƒ¡S )Nr]   c                 3   s   | ]}ˆ | V  qd S r-   r*   )rY   r‚   ©r€   r*   r+   Ú	<genexpr>™  s     z9RawDescriptionHelpFormatter._fill_text.<locals>.<genexpr>T)Úkeepends)r$   Ú
splitlines)r%   re   rO   r€   r*   rÐ   r+   r´   ˜  s    z&RawDescriptionHelpFormatter._fill_textN)r   r2   r3   r´   r*   r*   r*   r+   r   ‘  s   c                   @   s   e Zd Zdd„ ZdS )r   c                 C   s   |  ¡ S r-   )rÓ   )r%   re   rO   r*   r*   r+   r¶   £  s    z!RawTextHelpFormatter._split_linesN)r   r2   r3   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))rq   r®   r   r   r   rˆ   r§   )r%   ru   rq   Zdefaulting_nargsr*   r*   r+   rÈ   ®  s    

z.ArgumentDefaultsHelpFormatter._get_help_stringN)r   r2   r3   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 r-   ©r   r   rÌ   r*   r*   r+   r¨   À  s    z:MetavarTypeHelpFormatter._get_default_metavar_for_optionalc                 C   s   |j jS r-   rÔ   rÌ   r*   r*   r+   r¥   Ã  s    z<MetavarTypeHelpFormatter._get_default_metavar_for_positionalN)r   r2   r3   r¨   r¥   r*   r*   r*   r+   r	   ¸  s   c                 C   sN   | d krd S | j rd | 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 r-   )r×   Úargument_nameÚmessage)r%   rÖ   rÙ   r*   r*   r+   rP   à  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   r2   r3   rP   rÚ   r*   r*   r*   r+   r   Ù  s   c                   @   s   e Zd ZdS )r   N)r   r2   r3   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 r-   ©
rˆ   rÍ   r§   Úconstr®   r   rÂ   r    rq   rº   ©r%   rˆ   rÍ   r§   rÜ   r®   r   rÂ   r    rq   rº   r*   r*   r+   rP   )  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Â   rq   rº   c                    s   g | ]}|t ˆ |ƒf‘qS r*   ©Úgetattr©rY   r(   r1   r*   r+   r\   K  s     z&Action._get_kwargs.<locals>.<listcomp>r*   ©r%   Únamesr*   r1   r+   r"   ?  s    ÷zAction._get_kwargsc                 C   s   t tdƒƒ‚d S )Nz.__call__() not defined)ÚNotImplementedErrorr†   ©r%   ÚparserÚ	namespaceÚvaluesr¯   r*   r*   r+   Ú__call__M  s    zAction.__call__)NNNNNFNN)N)r   r2   r3   rP   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 appropriateú nargs must be %r to supply constrÛ   )rž   r   Úsuperré   rP   rÝ   ©Ú	__class__r*   r+   rP   S  s     
öz_StoreAction.__init__c                 C   s   t || j|ƒ d S r-   )ÚsetattrrÍ   rä   r*   r*   r+   rè   p  s    z_StoreAction.__call__)NNNNNFNN)N©r   r2   r3   rP   rè   Ú__classcell__r*   r*   rì   r+   ré   Q  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    rq   )rë   rñ   rP   ©r%   rˆ   rÍ   rÜ   r®   r    rq   rº   rì   r*   r+   rP   v  s    
ùz_StoreConstAction.__init__c                 C   s   t || j| jƒ d S r-   )rî   rÍ   rÜ   rä   r*   r*   r+   rè   ‡  s    z_StoreConstAction.__call__)NFNN)Nrï   r*   r*   rì   r+   rñ   t  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    rq   )rë   ró   rP   ©r%   rˆ   rÍ   r®   r    rq   rì   r*   r+   rP   �  s    
úz_StoreTrueAction.__init__)FFN©r   r2   r3   rP   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 )NFrô   )rë   r÷   rP   rõ   rì   r*   r+   rP   ž  s    
úz_StoreFalseAction.__init__)TFNrö   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 appropriaterê   rÛ   )rž   r   rë   rø   rP   rÝ   rì   r*   r+   rP   ¯  s     
öz_AppendAction.__init__c                 C   s2   t || jd ƒ}t|ƒ}| |¡ t|| j|ƒ d S r-   )rß   rÍ   r6   r    rî   ©r%   rå   ræ   rç   r¯   r0   r*   r*   r+   rè   Ì  s    
z_AppendAction.__call__)NNNNNFNN)Nrï   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    rq   rº   )rë   rú   rP   rò   rì   r*   r+   rP   Õ  s    
øz_AppendConstAction.__init__c                 C   s4   t || jd ƒ}t|ƒ}| | j¡ t|| j|ƒ d S r-   )rß   rÍ   r6   r    rÜ   rî   rù   r*   r*   r+   rè   ç  s    z_AppendConstAction.__call__)NFNN)Nrï   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    rq   )rë   rû   rP   rõ   rì   r*   r+   rP   ð  s    
úz_CountAction.__init__c                 C   s0   t || jd ƒ}|d krd}t|| j|d ƒ d S ©Nr   rR   )rß   rÍ   rî   )r%   rå   ræ   rç   r¯   Úcountr*   r*   r+   rè   þ  s    z_CountAction.__call__)NFN)Nrï   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§   rq   )rë   rþ   rP   )r%   rˆ   rÍ   r®   rq   rì   r*   r+   rP     s    
ûz_HelpAction.__init__c                 C   s   |  ¡  | ¡  d S r-   )Ú
print_helpÚexiträ   r*   r*   r+   rè     s    z_HelpAction.__call__)N©r   r2   r3   r   rP   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 rÿ   )rë   r  rP   Úversion)r%   rˆ   r  rÍ   r®   rq   rì   r*   r+   rP     s    
ûz_VersionAction.__init__c                 C   sD   | j }|d kr|j }| ¡ }| |¡ | | ¡ tj¡ | ¡  d S r-   )r  Ú_get_formatterrf   Ú_print_messager`   Ú_sysÚstdoutr  )r%   rå   ræ   rç   r¯   r  rV   r*   r*   r+   rè   (  s    
z_VersionAction.__call__)Nr  r*   r*   rì   r+   r    s   ûr  c                       sP   e Zd ZG dd„ deƒZed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  |¡ 7 }ttj| ƒ}|jg |||d� d S )Nrš   r   )rˆ   rÍ   rq   rº   )r$   rë   r	  Ú_ChoicesPseudoActionrP   )r%   r(   Úaliasesrq   rº   rÍ   Zsuprì   r*   r+   rP   6  s    
ÿz/_SubParsersAction._ChoicesPseudoAction.__init__rö   r*   r*   rì   r+   r
  4  s   r
  FNc              	      s<   || _ || _i | _g | _tt| ƒj||t| j|||d� d S )N)rˆ   rÍ   r§   rÂ   r    rq   rº   )Ú_prog_prefixÚ_parser_classÚ_name_parser_mapÚ_choices_actionsrë   r	  rP   r   )r%   rˆ   rN   Úparser_classrÍ   r    rq   rº   rì   r*   r+   rP   >  s    	
ùz_SubParsersAction.__init__c                 K   s†   |  d¡d kr d| j|f |d< | dd¡}d|krX| d¡}|  |||¡}| j |¡ | jf |Ž}|| j|< |D ]}|| j|< qr|S )NrN   r–   r  r*   rq   )r£   r  r¤   r
  r  r    r  r  )r%   r(   Úkwargsr  rq   Zchoice_actionrå   Úaliasr*   r*   r+   Ú
add_parserU  s    

z_SubParsersAction.add_parserc                 C   s   | j S r-   )r  r1   r*   r*   r+   rÉ   l  s    z!_SubParsersAction._get_subactionsc                 C   sÒ   |d }|dd … }| j tk	r,t|| j |ƒ z| j| }W n< tk
rv   |d | j¡dœ}tdƒ| }t| |ƒ‚Y nX | |d ¡\}	}t	|	ƒ 
¡ D ]\}
}t||
|ƒ q”|rÎt	|ƒ tg ¡ t|tƒ |¡ d S )Nr   rR   r   )Úparser_namerÂ   z5unknown parser %(parser_name)r (choices: %(choices)s))rÍ   r   rî   r  ÚKeyErrorr$   r†   r   Úparse_known_argsrÆ   r0   Ú
setdefaultÚ_UNRECOGNIZED_ARGS_ATTRrß   r‹   )r%   rå   ræ   rç   r¯   r  r&   r[   ÚmsgZsubnamespaceÚkeyr)   r*   r*   r+   rè   o  s$    

ÿ	z_SubParsersAction.__call__)N)r   r2   r3   r   r
  r   rP   r  rÉ   rè   rð   r*   r*   rì   r+   r	  2  s   ùr	  c                   @   s   e Zd Zddd„ZdS )Ú_ExtendActionNc                 C   s2   t || jd ƒ}t|ƒ}| |¡ t|| j|ƒ d S r-   )rß   rÍ   r6   r‹   rî   rù   r*   r*   r+   rè   �  s    
z_ExtendAction.__call__)N)r   r2   r3   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   Úrr”   Nc                 C   s   || _ || _|| _|| _d S r-   )Ú_modeÚ_bufsizeÚ	_encodingÚ_errors)r%   ÚmodeÚbufsizeÚencodingÚerrorsr*   r*   r+   rP   «  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|ƒ‚zt|| j | j| j| j	ƒW S  t
k
r˜ } z"||dœ}tdƒ}t|| ƒ‚W 5 d }~X Y nX d S )Nú-r  Úwzargument "-" with mode %r)ÚfilenameÚerrorz$can't open '%(filename)s': %(error)s)r  r  Ústdinr  r†   rž   r±   r  r  r   ÚOSErrorr   )r%   Ústringr  Úer[   rÙ   r*   r*   r+   rè   ±  s    

ÿ
zFileType.__call__c                 C   sT   | j | jf}d| jfd| jfg}d dd„ |D ƒdd„ |D ƒ ¡}dt| ƒj|f S )Nr#  r$  r   c                 S   s   g | ]}|d krt |ƒ‘qS )r”   )r!   )rY   r'   r*   r*   r+   r\   È  s      z%FileType.__repr__.<locals>.<listcomp>c                 S   s$   g | ]\}}|d k	rd||f ‘qS )Nr   r*   )rY   Úkwr'   r*   r*   r+   r\   É  s    ÿr   )r  r  r  r   r$   r   r   )r%   r[   r  Zargs_strr*   r*   r+   r,   Å  s    ÿzFileType.__repr__)r  r”   NN)r   r2   r3   rP   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   |D ]}t | ||| ƒ qd S r-   )rî   )r%   r  r(   r*   r*   r+   rP   Ø  s    zNamespace.__init__c                 C   s   t |tƒstS t| ƒt|ƒkS r-   )r¾   r
   ÚNotImplementedrÆ   )r%   Úotherr*   r*   r+   Ú__eq__Ü  s    
zNamespace.__eq__c                 C   s
   || j kS r-   )r/   )r%   r  r*   r*   r+   Ú__contains__á  s    zNamespace.__contains__N)r   r2   r3   rP   r0  r1  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| ƒ ¡  || _|| _|| _|| _i | _|  dd t	¡ |  ddt	¡ |  ddt
¡ |  ddt¡ |  ddt¡ |  ddt¡ |  ddt¡ |  ddt¡ |  dd	t¡ |  dd
t¡ |  ddt¡ |  ddt¡ |  ¡  g | _i | _g | _g | _i | _t d¡| _g | _d S )Nru   ZstoreZstore_constÚ
store_trueZstore_falser    Zappend_constrý   rq   r  Úparsersr‹   z^-\d+$|^-\d*\.\d+$)rë   r2  rP   ÚdescriptionÚargument_defaultÚprefix_charsÚconflict_handlerÚ_registriesÚregisterré   rñ   ró   r÷   rø   rú   rû   rþ   r  r	  r  Ú_get_handlerÚ_actionsÚ_option_string_actionsÚ_action_groupsÚ_mutually_exclusive_groupsÚ	_defaultsrI   rJ   Ú_negative_number_matcherÚ_has_negative_number_optionals)r%   r5  r7  r6  r8  rì   r*   r+   rP   ç  s4    z_ActionsContainer.__init__c                 C   s   | j  |i ¡}|||< d S r-   )r9  r  )r%   Úregistry_namer)   rÏ   Úregistryr*   r*   r+   r:    s    z_ActionsContainer.registerNc                 C   s   | j |  ||¡S r-   )r9  r£   )r%   rC  r)   r®   r*   r*   r+   Ú_registry_get   s    z_ActionsContainer._registry_getc                 K   s2   | j  |¡ | jD ]}|j|kr||j |_qd S r-   )r@  Úupdater<  rÍ   r®   )r%   r  ru   r*   r*   r+   Úset_defaults&  s    

z_ActionsContainer.set_defaultsc                 C   s8   | j D ]"}|j|kr|jd k	r|j  S q| j |d ¡S r-   )r<  rÍ   r®   r@  r£   )r%   rÍ   ru   r*   r*   r+   Úget_default/  s    
z_ActionsContainer.get_defaultc                 O   sD  | j }|r&t|ƒdkrH|d d |krH|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< |  |¡}t|ƒs²td|f ƒ‚|f |Ž}|  	d|j
|j
¡}t|ƒsätd|f ƒ‚|tkrútd	|f ƒ‚t| d
ƒ�r:z|  ¡  |d ¡ W n tk
�r8   tdƒ‚Y nX |  |¡S )NrR   r   rÍ   z+dest supplied twice for positional argumentr®   zunknown action "%s"r   ú%r is not callablez<%r is a FileType class object, instance of it must be passedr  z,length of metavar tuple does not match nargs)r7  rn   rž   Ú_get_positional_kwargsÚ_get_optional_kwargsr@  r6  Ú_pop_action_classÚcallablerE  r   r   rÇ   r  r¦   rÄ   Ú_add_action)r%   r[   r  ÚcharsrÍ   Zaction_classru   Ú	type_funcr*   r*   r+   rw   9  s:    	 




ÿz_ActionsContainer.add_argumentc                 O   s    t | f|ž|Ž}| j |¡ |S r-   )Ú_ArgumentGroupr>  r    )r%   r[   r  rª   r*   r*   r+   Úadd_argument_groupl  s    z$_ActionsContainer.add_argument_groupc                 K   s   t | f|Ž}| j |¡ |S r-   )Ú_MutuallyExclusiveGroupr?  r    )r%   r  rª   r*   r*   r+   Úadd_mutually_exclusive_groupq  s    z._ActionsContainer.add_mutually_exclusive_groupc                 C   s`   |   |¡ | j |¡ | |_|jD ]}|| j|< q"|jD ]"}| j |¡r8| js8| j d¡ q8|S )NT)	Ú_check_conflictr<  r    Ú	containerrˆ   r=  rA  ÚmatchrB  )r%   ru   r¯   r*   r*   r+   rN  v  s    


z_ActionsContainer._add_actionc                 C   s   | j  |¡ d S r-   )r<  ÚremoverÌ   r*   r*   r+   Ú_remove_action‹  s    z _ActionsContainer._remove_actionc                 C   sÚ   i }| j D ].}|j|kr.tdƒ}t||j ƒ‚|||j< q
i }|j D ]D}|j|krn| j|j|j|jd�||j< |jD ]}||j ||< qtqD|jD ]&}| j	|j
d�}|jD ]}|||< q¨q�|jD ]}| || ¡ |¡ q¾d S )Nz.cannot merge actions - two groups are named %r)Útitler5  r8  )r    )r>  rZ  r†   rž   rR  r5  r8  r�   r?  rT  r    r<  r£   rN  )r%   rV  Ztitle_group_maprª   r  Z	group_mapru   Úmutex_groupr*   r*   r+   Ú_add_container_actionsŽ  s0    



ý

ÿ

z(_ActionsContainer._add_container_actionsc                 K   s^   d|krt dƒ}t|ƒ‚| d¡ttfkr2d|d< | 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+   rJ  ¶  s    z(_ActionsContainer._get_positional_kwargsc           	      O   sä   g }g }|D ]n}|d | j kr>|| j dœ}tdƒ}t|| ƒ‚| |¡ |d | j krt|ƒdkr|d | j kr| |¡ q| dd ¡}|d krÖ|rž|d }n|d }| | j ¡}|sÊtdƒ}t|| ƒ‚| dd¡}t|||d	�S )
Nr   )Úoptionr7  zNinvalid option string %(option)r: must start with a character %(prefix_chars)rrR   rÍ   z%dest= is required for options like %rr%  r†   r]  )	r7  r†   rž   r    rn   r¤   ÚlstripÚreplacer‡   )	r%   r[   r  rˆ   Zlong_option_stringsr¯   r  rÍ   Zdest_option_stringr*   r*   r+   rK  Æ  s2    ÿ

z&_ActionsContainer._get_optional_kwargsc                 C   s   |  d|¡}|  d||¡S )Nru   )r¤   rE  )r%   r  r®   ru   r*   r*   r+   rL  ê  s    z#_ActionsContainer._pop_action_classc                 C   sF   d| j  }zt| |ƒW S  tk
r@   tdƒ}t|| j  ƒ‚Y nX d S )Nz_handle_conflict_%sz%invalid conflict_resolution value: %r)r8  rß   rÊ   r†   rž   )r%   Zhandler_func_namer  r*   r*   r+   r;  î  s    
z_ActionsContainer._get_handlerc                 C   sL   g }|j D ]&}|| jkr
| j| }| ||f¡ q
|rH|  ¡ }|||ƒ d S r-   )rˆ   r=  r    r;  )r%   ru   Zconfl_optionalsr¯   Zconfl_optionalr8  r*   r*   r+   rU  ÷  s    


z!_ActionsContainer._check_conflictc                 C   s6   t ddt|ƒƒ}d dd„ |D ƒ¡}t||| ƒ‚d S )Nzconflicting option string: %szconflicting option strings: %sr   c                 S   s   g | ]\}}|‘qS r*   r*   )rY   r¯   ru   r*   r*   r+   r\   	  s   ÿz<_ActionsContainer._handle_conflict_error.<locals>.<listcomp>)r   rn   r$   r   )r%   ru   Úconflicting_actionsrÙ   Zconflict_stringr*   r*   r+   Ú_handle_conflict_error  s    þ
þz(_ActionsContainer._handle_conflict_errorc                 C   s>   |D ]4\}}|j  |¡ | j |d ¡ |j s|j |¡ qd S r-   )rˆ   rX  r=  r¤   rV  rY  )r%   ru   ra  r¯   r*   r*   r+   Ú_handle_conflict_resolve  s
    z*_ActionsContainer._handle_conflict_resolve)N)N)r   r2   r3   rP   r:  rE  rG  rH  rw   rR  rT  rN  rY  r\  rJ  rK  rL  r;  rU  rb  rc  rð   r*   r*   rì   r+   r2  å  s$   5
	
3($
		r2  c                       s6   e Zd Zd‡ fdd„	Z‡ fdd„Z‡ fdd„Z‡  ZS )	rQ  Nc                    sˆ   |j }|d|jƒ |d|jƒ |d|jƒ tt| ƒj}|f d|i|—Ž || _g | _|j	| _	|j
| _
|j| _|j| _|j| _|j| _d S )Nr8  r7  r6  r5  )r  r8  r7  r6  rë   rQ  rP   rZ  r�   r9  r<  r=  r@  rB  r?  )r%   rV  rZ  r5  r  rF  Z
super_initrì   r*   r+   rP     s    ÿz_ArgumentGroup.__init__c                    s    t t| ƒ |¡}| j |¡ |S r-   )rë   rQ  rN  r�   r    rÌ   rì   r*   r+   rN  5  s    z_ArgumentGroup._add_actionc                    s    t t| ƒ |¡ | j |¡ d S r-   )rë   rQ  rY  r�   rX  rÌ   rì   r*   r+   rY  :  s    z_ArgumentGroup._remove_action)NN©r   r2   r3   rP   rN  rY  rð   r*   r*   rì   r+   rQ    s   rQ  c                       s.   e Zd Zd‡ fdd„	Zdd„ Zdd„ Z‡  ZS )	rS  Fc                    s    t t| ƒ |¡ || _|| _d S r-   )rë   rS  rP   r    Ú
_container)r%   rV  r    rì   r*   r+   rP   A  s    z _MutuallyExclusiveGroup.__init__c                 C   s2   |j rtdƒ}t|ƒ‚| j |¡}| j |¡ |S )Nz-mutually exclusive arguments must be optional)r    r†   rž   re  rN  r�   r    )r%   ru   r  r*   r*   r+   rN  F  s    z#_MutuallyExclusiveGroup._add_actionc                 C   s   | j  |¡ | j |¡ d S r-   )re  rY  r�   rX  rÌ   r*   r*   r+   rY  N  s    z&_MutuallyExclusiveGroup._remove_action)Frd  r*   r*   rì   r+   rS  ?  s   rS  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
dAd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dBd%d&„ZdCd'd(„Zd)d*„ Zd+d,„ Zd-d.„ Zd/d0„ Zd1d2„ Zd3d4„ ZdDd5d6„ZdEd7d8„ZdFd9d:„ZdGd<d=„Zd>d?„ Z ‡  Z!S )Hr   Nr%  r(  Tc              	      s"  t t| ƒj}||||	|
d� |d kr6tj tjd ¡}|| _|| _	|| _
|| _|| _|| _|| _| j}|tdƒƒ| _|tdƒƒ| _d | _dd„ }|  dd |¡ d|krªdn|d }| jrÜ| j|d	 |d
 d dttdƒd� |D ]<}|  |¡ z
|j}W n tk
�r   Y qàX | j |¡ qàd S )N)r5  r7  r6  r8  r   zpositional argumentszoptional argumentsc                 S   s   | S r-   r*   )r+  r*   r*   r+   ÚidentityŒ  s    z)ArgumentParser.__init__.<locals>.identityr   r%  Úhr7   rq   zshow this help message and exit)ru   r®   rq   )rë   r   rP   Ú_osÚpathÚbasenamer  ÚargvrN   rh   ÚepilogÚformatter_classÚfromfile_prefix_charsÚadd_helpÚallow_abbrevrR  r†   Ú_positionalsÚ
_optionalsÚ_subparsersr:  rw   r   r\  r@  rÊ   rF  )r%   rN   rh   r5  rl  Úparentsrm  r7  rn  r6  r8  ro  rp  Z	superinitZ	add_grouprf  Zdefault_prefixrW   Údefaultsrì   r*   r+   rP   f  sJ    ý 
 ý

zArgumentParser.__init__c                    s"   ddddddg}‡ fdd„|D ƒS )	NrN   rh   r5  rm  r8  ro  c                    s   g | ]}|t ˆ |ƒf‘qS r*   rÞ   rà   r1   r*   r+   r\   ¯  s     z.ArgumentParser._get_kwargs.<locals>.<listcomp>r*   rá   r*   r1   r+   r"   ¦  s    úzArgumentParser._get_kwargsc           	      K   sä   | j d k	r|  tdƒ¡ | dt| ƒ¡ d|ks8d|krht| dd¡ƒ}t| dd ¡ƒ}|  ||¡| _ n| j| _ | d¡d kr¶|  	¡ }|  
¡ }| j}| | j||d¡ | ¡  ¡ |d< |  |d¡}|f d	g i|—Ž}| j  |¡ |S )
Nz(cannot have multiple subparser argumentsr  rZ  r5  ZsubcommandsrN   r]   r4  rˆ   )rs  r(  r†   r  r   r¤   rR  rq  r£   r  Ú_get_positional_actionsr?  rl   rh   r`   r{   rL  rN  )	r%   r  rZ  r5  rV   r�   rj   Zparsers_classru   r*   r*   r+   Úadd_subparsers´  s$    
zArgumentParser.add_subparsersc                 C   s$   |j r| j |¡ n| j |¡ |S r-   )rˆ   rr  rN  rq  rÌ   r*   r*   r+   rN  Ó  s    zArgumentParser._add_actionc                 C   s   dd„ | j D ƒS )Nc                 S   s   g | ]}|j r|‘qS r*   ©rˆ   ©rY   ru   r*   r*   r+   r\   Û  s   þz8ArgumentParser._get_optional_actions.<locals>.<listcomp>©r<  r1   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*   rx  ry  r*   r*   r+   r\   à  s   þz:ArgumentParser._get_positional_actions.<locals>.<listcomp>rz  r1   r*   r*   r+   rv  ß  s    ÿz&ArgumentParser._get_positional_actionsc                 C   s4   |   ||¡\}}|r0tdƒ}|  |d |¡ ¡ |S ©Nzunrecognized arguments: %sr~   )r  r†   r(  r$   ©r%   r[   ræ   rk  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ƒ }| jD ]4}|jtk	r4t||jƒs4|jtk	r4t	||j|jƒ q4| j
D ] }t||ƒspt	||| j
| ƒ qpz>|  ||¡\}}t|tƒrÈ| t|tƒ¡ t|tƒ ||fW S  tk
�r    t  ¡ d }|  t|ƒ¡ Y nX d S rQ   )r  rk  r4   r
   r<  rÍ   r   rÇ   r®   rî   r@  Ú_parse_known_argsr  r‹   rß   Údelattrr   Úexc_infor(  r¼   )r%   r[   ræ   ru   rÍ   Úerrr*   r*   r+   r  î  s,    







zArgumentParser.parse_known_argsc                    s  ˆ	j d k	rˆ	 ˆ¡‰i ‰ ˆ	jD ]R}|j}t|jƒD ]<\}}ˆ  |g ¡}| |d |… ¡ | ||d d … ¡ q2qi ‰g }tˆƒ}	t|	ƒD ]^\}}
|
dkrº| d¡ |	D ]}
| d¡ q¨qŠˆ	 	|
¡}|d krÒd}n|ˆ|< d}| |¡ qŠd 
|¡‰tƒ ‰tƒ ‰d‡ ‡‡‡‡	fdd„	‰‡‡‡‡‡	‡fd	d
„}ˆ	 ¡ ‰‡‡‡‡	‡fdd„}g ‰d‰
ˆ�r`tˆƒ}nd}ˆ
|k�rÞt‡
fdd„ˆD ƒƒ}ˆ
|k�r®|ˆ
ƒ}|ˆ
k�rª|‰
�qdn|‰
ˆ
ˆk�rÒˆˆ
|… }ˆ |¡ |‰
|ˆ
ƒ‰
�qd|ˆ
ƒ}ˆ ˆ|d … ¡ g }ˆ	jD ]|}|ˆk�r|j�r(| t|ƒ¡ nT|jd k	�rt|jtƒ�rtˆ|jƒ�r|jtˆ|jƒk�rtˆ|jˆ	 ||j¡ƒ �q|�ržˆ	 tdƒd 
|¡ ¡ ˆ	jD ]X}|j�r¤|jD ]}|ˆk�r¶ �q¤�q¶dd„ |jD ƒ}tdƒ}ˆ	 |d 
|¡ ¡ �q¤ˆˆfS )NrR   ú--r%  ÚAÚOr]   c                    s|   ˆ  | ¡ ˆ | |¡}|| jk	rbˆ  | ¡ ˆ  | g ¡D ]*}|ˆkr6tdƒ}t|ƒ}t| || ƒ‚q6|tk	rx| ˆˆ||ƒ d S )Nznot allowed with argument %s)rŸ   Ú_get_valuesr®   r£   r†   r×   r   r   )ru   Zargument_stringsr¯   Zargument_valuesZconflict_actionr  Zaction_name)Úaction_conflictsræ   Úseen_actionsÚseen_non_default_actionsr%   r*   r+   Útake_action@  s    


z5ArgumentParser._parse_known_args.<locals>.take_actionc                    s~  ˆ|  }|\}}}ˆj }g }|d kr:ˆ ˆ |  ¡ | d S |d k	�r||dƒ}ˆj}|dkrÐ|d |krÐ| |g |f¡ |d }	|	|d  }|dd … pšd }
ˆj}||kr¸|| }|
}ntdƒ}t||| ƒ‚nB|dkrü| d }|g}| |||f¡ �q\ntdƒ}t||| ƒ‚q| d }ˆ|d … }|||ƒ}|| }ˆ ||… }| |||f¡ �q\q|D ]\}}}ˆ|||ƒ �q`|S )NrR   r„  r   zignored explicit argument %r)Ú_match_argumentr    r7  r=  r†   r   )Ústart_indexÚoption_tupleru   r¯   Úexplicit_argZmatch_argumentZaction_tuplesÚ	arg_countrO  ÚcharZnew_explicit_argZoptionals_mapr  Ústopr[   r«   Zselected_patterns)r&   Úarg_strings_patternÚextrasÚoption_string_indicesr%   rŠ  r*   r+   Úconsume_optionalU  sL    



z:ArgumentParser._parse_known_args.<locals>.consume_optionalc                    sn   ˆj }ˆ| d … }|ˆ|ƒ}tˆ|ƒD ]*\}}ˆ | | | … }| |7 } ˆ||ƒ q&ˆt|ƒd … ˆd d …< | S r-   )Ú_match_arguments_partialÚziprn   )rŒ  Zmatch_partialZselected_patternZ
arg_countsru   r�  r[   )r&   r’  r�   r%   rŠ  r*   r+   Úconsume_positionals¢  s    
z=ArgumentParser._parse_known_args.<locals>.consume_positionalsr   r”   c                    s   g | ]}|ˆ kr|‘qS r*   r*   )rY   rœ   )rŒ  r*   r+   r\   ¿  s   þz4ArgumentParser._parse_known_args.<locals>.<listcomp>z(the following arguments are required: %sr   c                 S   s   g | ]}|j tk	rt|ƒ‘qS r*   )rq   r   r×   ry  r*   r*   r+   r\   þ  s   
þz#one of the arguments %s is requiredr~   )N)rn  Ú_read_args_from_filesr?  r�   r¢   r  r‹   Úiterr    Ú_parse_optionalr$   r›   rv  r@   r?   r<  r    r×   r®   r¾   r¼   rÇ   rÍ   rß   rî   Ú
_get_valuer(  r†   )r%   r&   ræ   r[  r©   r­   Zmutex_actionZ	conflictsZarg_string_pattern_partsZarg_strings_iterÚ
arg_stringr�  Úpatternr•  r˜  Zmax_option_string_indexZnext_option_string_indexZpositionals_end_indexZstringsZ
stop_indexZrequired_actionsru   rª   râ   r  r*   )r‡  r&   r’  r“  ræ   r”  r�   rˆ  r‰  r%   rŒ  rŠ  r+   r    s¤    





J

þ






ÿ
þýÿ
ÿ



ÿz ArgumentParser._parse_known_argsc              
   C   sÄ   g }|D ]¶}|r|d | j kr*| |¡ qzdt|dd … ƒ�J}g }| ¡  ¡ D ]}|  |¡D ]}| |¡ q\qN|  |¡}| |¡ W 5 Q R X W q tk
r¼   t	 
¡ d }|  t|ƒ¡ Y qX q|S rü   )rn  r    r±   ÚreadrÓ   Úconvert_arg_line_to_argsr™  r‹   r*  r  r�  r(  r¼   )r%   r&   Znew_arg_stringsr�  Z	args_fileÚarg_liner'   r‚  r*   r*   r+   r™    s     
z$ArgumentParser._read_args_from_filesc                 C   s   |gS r-   r*   )r%   r¡  r*   r*   r+   r   !  s    z'ArgumentParser.convert_arg_line_to_argsc                 C   sz   |   |¡}t ||¡}|d krld tdƒttdƒttdƒi}| |j¡}|d krbtdd|jƒ|j }t	||ƒ‚t
| d¡ƒS )Nzexpected one argumentzexpected at most one argumentzexpected at least one argumentzexpected %s argumentzexpected %s argumentsrR   )Ú_get_nargs_patternrI   rW  r†   r   r   r£   r§   r   r   rn   rª   )r%   ru   r’  Únargs_patternrW  Znargs_errorsr  r*   r*   r+   r‹  $  s(    
   ýþþ
zArgumentParser._match_argumentc                    sr   g }t t|ƒddƒD ]X}|d |… }d ‡ fdd„|D ƒ¡}t ||¡}|d k	r| dd„ | ¡ D ƒ¡  qnq|S )Nr   r”   r]   c                    s   g | ]}ˆ   |¡‘qS r*   )r¢  ry  r1   r*   r+   r\   @  s   ÿz;ArgumentParser._match_arguments_partial.<locals>.<listcomp>c                 S   s   g | ]}t |ƒ‘qS r*   rm   )rY   r+  r*   r*   r+   r\   D  s     )r¡   rn   r$   rI   rW  r‹   rj   )r%   ri   r’  rÁ   r­   Zactions_slicerž  rW  r*   r1   r+   r–  :  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~| dd¡\}}|| jkr~| j| }|||fS |  |¡}t|ƒdkrÊd dd„ |D ƒ¡}||dœ}tdƒ}|  || ¡ nt|ƒdkrà|\}	|	S | j 	|¡rö| j
söd S d	|k�rd S d |d fS )
Nr   rR   ú=r   c                 S   s   g | ]\}}}|‘qS r*   r*   )rY   ru   r¯   rŽ  r*   r*   r+   r\   i  s   ÿz2ArgumentParser._parse_optional.<locals>.<listcomp>)r^  Zmatchesz4ambiguous option: %(option)s could match %(matches)sr~   )r7  r=  rn   ÚsplitÚ_get_option_tuplesr$   r†   r(  rA  rW  rB  )
r%   r�  ru   r¯   rŽ  Zoption_tuplesZoptionsr[   r  r�  r*   r*   r+   r›  J  s>    







ÿ

zArgumentParser._parse_optionalc           
      C   s0  g }| j }|d |kr€|d |kr€| jr~d|krB| dd¡\}}n|}d }| jD ],}| |¡rP| j| }|||f}| |¡ qPn¬|d |k�r|d |k�r|}d }|d d… }|dd … }	| jD ]T}||krî| j| }|||	f}| |¡ qÂ| |¡rÂ| j| }|||f}| |¡ qÂn|  tdƒ| ¡ |S )Nr   rR   r¤  r7   zunexpected option string: %s)r7  rp  r¥  r=  Ú
startswithr    r(  r†   )
r%   r¯   rÁ   rO  Zoption_prefixrŽ  ru   r¸   Zshort_option_prefixZshort_explicit_argr*   r*   r+   r¦  „  s:    









z!ArgumentParser._get_option_tuplesc                 C   sœ   |j }|d krd}nf|tkr"d}nX|tkr0d}nJ|tkr>d}n<|tkrLd}n.|tkrZd}n |tkrhd}ndd	 d
| ¡ }|jr˜| 	d	d¡}| 	dd¡}|S )Nz(-*A-*)z(-*A?-*)z	(-*[A-]*)z
(-*A[A-]*)z([-AO]*)z(-*A[-AO]*)z(-*-*)z(-*%s-*)z-*r„  r]   r%  )
r§   r   r   r   r   r   r   r$   rˆ   r`  )r%   ru   r§   r£  r*   r*   r+   r¢  ±  s(    z!ArgumentParser._get_nargs_patternc                 C   s4   |   ||¡\}}|r0tdƒ}|  |d |¡ ¡ |S r|  )Úparse_known_intermixed_argsr†   r(  r$   r}  r*   r*   r+   Úparse_intermixed_argsâ  s
    z$ArgumentParser.parse_intermixed_argsc              	      sª  |   ¡ ‰ dd„ ˆ D ƒ}|r,td|d j ƒ‚‡ fdd„| jD ƒrHtdƒ‚�zN| j}z¦| jd krp|  ¡ dd … | _ˆ D ] }|j|_t	|_|j|_t	|_qt|  
||¡\}}ˆ D ]J}t||jƒrªt||jƒg krªddlm} |d	|j|f ƒ t||jƒ qªW 5 ˆ D ]}|j|_|j|_qþX |  ¡ }zJ|D ]}|j|_d
|_�q$| jD ]}	|	j|	_d
|	_�q@|  
||¡\}}
W 5 |D ]}|j|_�qn| jD ]}	|	j|	_�q„X W 5 || _X ||
fS )Nc                 S   s   g | ]}|j ttfkr|‘qS r*   )r§   r   r   ry  r*   r*   r+   r\   ÷  s    ÿz>ArgumentParser.parse_known_intermixed_args.<locals>.<listcomp>z3parse_intermixed_args: positional arg with nargs=%sr   c                    s&   g | ]}|j D ]}|ˆ kr|j‘qqS r*   )r�   rÍ   )rY   rª   ru   ©r�   r*   r+   r\   ý  s
      ÿz;parse_intermixed_args: positional in mutuallyExclusiveGroupé   )ÚwarnzDo not expect %s in %sF)rv  rÄ   r§   r?  rh   Z
save_nargsZsave_defaultr®   Úformat_usager   r  rÇ   rÍ   rß   Úwarningsr¬  r€  r{  Zsave_requiredr    )r%   r[   ræ   ÚaZ
save_usageru   Zremaining_argsr¬  rŒ   rª   r“  r*   rª  r+   r¨  é  s`    ÿ
ÿÿ


ÿ
z*ArgumentParser.parse_known_intermixed_argsc                    s‚  ˆ j ttfkr2z| d¡ W n tk
r0   Y nX |szˆ j tkrzˆ jrNˆ j}nˆ j}t	|t
ƒrvˆ ˆ |¡}ˆ ˆ |¡ �n|s²ˆ j tkr²ˆ js²ˆ jd k	r ˆ j}n|}ˆ ˆ |¡ nÌt|ƒdkrìˆ j d tfkrì|\}ˆ ˆ |¡}ˆ ˆ |¡ n’ˆ j tk�r‡ ‡fdd„|D ƒ}npˆ j tk�r@‡ ‡fdd„|D ƒ}ˆ ˆ |d ¡ n>ˆ j tk�rRt}n,‡ ‡fdd„|D ƒ}|D ]}ˆ ˆ |¡ �qj|S )Nrƒ  rR   c                    s   g | ]}ˆ  ˆ |¡‘qS r*   ©rœ  ©rY   Úv©ru   r%   r*   r+   r\   Z	  s     z.ArgumentParser._get_values.<locals>.<listcomp>c                    s   g | ]}ˆ  ˆ |¡‘qS r*   r°  r±  r³  r*   r+   r\   ^	  s     r   c                    s   g | ]}ˆ  ˆ |¡‘qS r*   r°  r±  r³  r*   r+   r\   g	  s     )r§   r   r   rX  rž   r   rˆ   rÜ   r®   r¾   r¼   rœ  Ú_check_valuer   rn   r   )r%   ru   r&   r)   r�  r²  r*   r³  r+   r†  6	  sD    
ÿ
zArgumentParser._get_valuesc              	   C   sÎ   |   d|j|j¡}t|ƒs0tdƒ}t||| ƒ‚z||ƒ}W nŒ tk
r~   t|jdt|jƒƒ}tt	 
¡ d ƒ}t||ƒ‚Y nL ttfk
rÈ   t|jdt|jƒƒ}||dœ}tdƒ}t||| ƒ‚Y nX |S )Nr   rI  r   rR   )r   r)   z!invalid %(type)s value: %(value)r)rE  r   rM  r†   r   r   rß   r!   r¼   r  r�  rÄ   rž   )r%   ru   r�  rP  r  rÁ   r(   r[   r*   r*   r+   rœ  n	  s     
zArgumentParser._get_valuec                 C   sF   |j d k	rB||j krB|d tt|j ƒ¡dœ}tdƒ}t||| ƒ‚d S )Nr   )r)   rÂ   z3invalid choice: %(value)r (choose from %(choices)s))rÂ   r$   Úmapr!   r†   r   )r%   ru   r)   r[   r  r*   r*   r+   r´  ˆ	  s    ÿzArgumentParser._check_valuec                 C   s$   |   ¡ }| | j| j| j¡ | ¡ S r-   )r  rl   rh   r<  r?  r`   )r%   rV   r*   r*   r+   r­  “	  s
    ÿzArgumentParser.format_usagec                 C   st   |   ¡ }| | j| j| j¡ | | j¡ | jD ]0}| |j	¡ | |j¡ | 
|j¡ | ¡  q.| | j¡ | ¡ S r-   )r  rl   rh   r<  r?  rf   r5  r>  rb   rZ  rx   r�   rc   rl  r`   )r%   rV   Zaction_groupr*   r*   r+   r`   ™	  s    ÿ

zArgumentParser.format_helpc                 C   s   | j | jd�S )Nr}   )rm  rN   r1   r*   r*   r+   r  °	  s    zArgumentParser._get_formatterc                 C   s"   |d krt j}|  |  ¡ |¡ d S r-   )r  r  r  r­  ©r%   Úfiler*   r*   r+   Úprint_usage¶	  s    zArgumentParser.print_usagec                 C   s"   |d krt j}|  |  ¡ |¡ d S r-   )r  r  r  r`   r¶  r*   r*   r+   r   »	  s    zArgumentParser.print_helpc                 C   s    |r|d krt j}| |¡ d S r-   )r  ÚstderrÚwrite)r%   rÙ   r·  r*   r*   r+   r  À	  s    zArgumentParser._print_messager   c                 C   s    |r|   |tj¡ t |¡ d S r-   )r  r  r¹  r  )r%   ZstatusrÙ   r*   r*   r+   r  É	  s    zArgumentParser.exitc                 C   s0   |   tj¡ | j|dœ}|  dtdƒ| ¡ d S )N)rN   rÙ   r7   z%(prog)s: error: %(message)s
)r¸  r  r¹  rN   r  r†   )r%   rÙ   r[   r*   r*   r+   r(  Î	  s    	zArgumentParser.error)NN)NN)NN)NN)N)N)N)r   N)"r   r2   r3   r   rP   r"   rw  rN  r{  rv  r~  r  r  r™  r   r‹  r–  r›  r¦  r¢  r©  r¨  r†  rœ  r´  r­  r`   r  r¸  r   r  r  r(  rð   r*   r*   rì   r+   r   S  sT   ô@

# w:-1

M8


	
)2Ú__version__Ú__all__Úosrh  ÚrerI   Zshutilr:   Úsysr  r   r†   r   r   r   r   r   r   r   r  rÏ   r   r6   r   r   r   r   r	   r×   Ú	Exceptionr   r   r   ré   rñ   ró   r÷   rø   rú   rû   rþ   r  r	  r  r   r
   r2  rQ  rS  r   r*   r*   r*   r+   Ú<module>A   s~   ï   z	[#&]7  :"