o
    IAf^                    @   s  	 d Z g d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 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@dA dAe-Z.G dBdC dCe.Z/G dDdE dEee-Z0dS )Fz1.1)ArgumentParserArgumentErrorArgumentTypeErrorBooleanOptionalActionFileTypeHelpFormatterArgumentDefaultsHelpFormatterRawDescriptionHelpFormatterRawTextHelpFormatterMetavarTypeHelpFormatter	NamespaceActionONE_OR_MOREOPTIONALPARSER	REMAINDERSUPPRESSZERO_OR_MORE    N)gettextngettextz==SUPPRESS==?*+zA......_unrecognized_argsc                   @   &   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 ]\}}| r-|d||f  q|||< q|r=|dt|  d|d|f S )N%s=%rz**%s%s(%s), )type__name__	_get_argsappendrepr_get_kwargsisidentifierjoin)self	type_namearg_strings	star_argsargnamevalue r/   /usr/lib/python3.10/argparse.py__repr__t   s   

z_AttributeHolder.__repr__c                 C   s   t | j S N)list__dict__itemsr(   r/   r/   r0   r%         z_AttributeHolder._get_kwargsc                 C   s   g S r2   r/   r6   r/   r/   r0   r"         z_AttributeHolder._get_argsN)r!   
__module____qualname__r1   r%   r"   r/   r/   r/   r0   r   k   s
    r   c                 C   s6   | d u rg S t | tu r| d d  S dd l}|| S Nr   )r    r3   copy)r5   r<   r/   r/   r0   _copy_items   s   
r=   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 u rdd l }| j}|d8 }|| _|| _t|t|d |d | _|| _d| _	d| _
d| _| | d | _| j| _tdtj| _td| _d S )Nr   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(   progindent_incrementmax_help_positionwidthrA   r/   r/   r0   __init__   s"   
zHelpFormatter.__init__c                 C   s"   |  j | j7  _ |  jd7  _d S N   rJ   rE   rK   r6   r/   r/   r0   _indent   s   zHelpFormatter._indentc                 C   s"   |  j | j8  _ |  jd8  _d S rZ   r\   r6   r/   r/   r0   _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 r2   )	formatterparentheadingr5   )r(   r_   r`   ra   r/   r/   r0   rY         
zHelpFormatter._Section.__init__c                 C   s   | j d ur
| j  | jj}|dd | jD }| j d ur"| j  |s&dS | jtur=| jd ur=| jj}d|d| jf }nd}|d||dgS )Nc                 S   s   g | ]\}}|| qS r/   r/   ).0funcargsr/   r/   r0   
<listcomp>       z6HelpFormatter._Section.format_help.<locals>.<listcomp> z%*s%s:

)	r`   r_   r]   _join_partsr5   r^   ra   r   rJ   )r(   r'   	item_helpcurrent_indentra   r/   r/   r0   format_help   s   



z"HelpFormatter._Section.format_helpr2   )r!   r9   r:   rY   rm   r/   r/   r/   r0   rM      s    
rM   c                 C   s   | j j||f d S r2   )rO   r5   r#   )r(   rd   re   r/   r/   r0   	_add_item   s   zHelpFormatter._add_itemc                 C   s0   |    | | | j|}| |jg  || _d S r2   )r]   rM   rO   rn   rm   )r(   ra   sectionr/   r/   r0   start_section   s   
zHelpFormatter.start_sectionc                 C   s   | j j| _ |   d S r2   )rO   r`   r^   r6   r/   r/   r0   end_section   s   
zHelpFormatter.end_sectionc                 C   s,   |t ur|d ur| | j|g d S d S d S r2   )r   rn   _format_text)r(   textr/   r/   r0   add_text   s   zHelpFormatter.add_textc                 C   s*   |t ur||||f}| | j| d S d S r2   )r   rn   _format_usage)r(   usageactionsgroupsprefixre   r/   r/   r0   	add_usage   s   zHelpFormatter.add_usagec                 C   sv   |j tur9| j}||g}| |D ]	}||| qttt|}|| j }t| j	|| _	| 
| j|g d S d S r2   )helpr   _format_action_invocation_iter_indented_subactionsr#   rG   maplenrJ   rL   rn   _format_action)r(   actionget_invocationinvocations	subactioninvocation_lengthaction_lengthr/   r/   r0   add_argument  s   


zHelpFormatter.add_argumentc                 C   s   |D ]}|  | qd S r2   )r   )r(   rw   r   r/   r/   r0   add_arguments  s   zHelpFormatter.add_argumentsc                 C   s.   | j  }|r| jd|}|dd }|S )N

ri   )rN   rm   rT   substrip)r(   r{   r/   r/   r0   rm     s
   
zHelpFormatter.format_helpc                 C   s   d dd |D S )Nrh   c                 S   s   g | ]
}|r|t ur|qS r/   )r   )rc   partr/   r/   r0   rf   "  s    z-HelpFormatter._join_parts.<locals>.<listcomp>)r'   )r(   part_stringsr/   r/   r0   rj   !  s   
zHelpFormatter._join_partsc                    s  |d u rt d}|d ur|t| jd }n|d u r$|s$dt| jd }n|d u rdt| jd }g }g }|D ]}|jrA|| q6|| q6| j}	|	|| |}
ddd ||
fD }| j| j  t	|t	|  krd}|	||}|	||}t
||}t
||}d fdd		}t	|t	| d
  krdt	|t	| d  }|r||g| ||}|||| n<|r||g| ||}n0|g}n,dt	| }|| }|||}t	|dkrg }|||| |||| |g| }d|}d||f S )Nzusage: rU   z%(prog)s c                 S   s   g | ]}|r|qS r/   r/   )rc   sr/   r/   r0   rf   B      z/HelpFormatter._format_usage.<locals>.<listcomp>z%\(.*?\)+(?=\s|$)|\[.*?\]+(?=\s|$)|\S+c                    s   g }g }|d urt |d }nt |d }| D ]-}|d t |  kr7|r7||d|  g }t |d }|| |t |d 7 }q|rQ||d|  |d ura|d t |d  |d< |S )Nr[   r   r   )r   r#   r'   )partsindentry   lineslineline_lenr   
text_widthr/   r0   	get_linesV  s"   
z.HelpFormatter._format_usage.<locals>.get_linesg      ?r[   ri   z%s%s

r2   )_dictrD   option_stringsr#   _format_actions_usager'   rI   rJ   r   rP   findallextend)r(   rv   rw   rx   ry   rU   	optionalspositionalsr   formataction_usagepart_regexp	opt_usage	pos_usage	opt_parts	pos_partsr   r   r   r   r/   r   r0   ru   &  sX   




zHelpFormatter._format_usagec              	   C   s  t  }i }|D ]}|jstd| z
||jd }W n	 ty&   Y qw |t|j }||| |jkr|jD ]}|| q:|jsh||v rR||  d7  < nd||< ||v rc||  d7  < n'd||< n"||v ru||  d7  < nd||< ||v r||  d7  < nd||< t|d	 |D ]}	d
||	< qqg }
t|D ]\}	}|j	t
u r|
d  ||	d
kr||	 q||	d	 d
kr||	d	  q|js| |}| ||}||v r|d dkr|d dkr|d	d }|
| q|jd }|jdkr| }n| |}| ||}d||f }|js#||vr#d| }|
| qt|ddD ]}	||	 g|
|	|	< q/ddd |
D }d}d}td| d|}td| d|}td||f d|}tdd|}| }|S )Nzempty group r   z [[]z (()r[   |%s %s[%s]T)reverser   c                 S   s   g | ]}|d ur|qS r2   r/   )rc   itemr/   r/   r0   rf     rg   z7HelpFormatter._format_actions_usage.<locals>.<listcomp>z[\[(]z[\])]z(%s) z\1 (%s)z%s *%srh   z\(([^|]*)\))set_group_actions
ValueErrorindexr   addrequiredrange	enumerater{   r   r#   getpopr   #_get_default_metavar_for_positional_format_argsnargsformat_usage!_get_default_metavar_for_optionalsortedr'   rP   r   r   )r(   rw   rx   group_actionsinsertsgroupstartendr   ir   defaultr   option_stringargs_stringrs   opencloser/   r/   r0   r     s   








z#HelpFormatter._format_actions_usagec                 C   sF   d|v r|t | jd }t| j| j d}d| j }| |||d S )Nz%(prog)r      r   r   )r   rD   rG   rI   rJ   
_fill_text)r(   rs   r   r   r/   r/   r0   rr     s
   
zHelpFormatter._format_textc                 C   sD  t | jd | j}t| j| d}|| j d }| |}|js+| jd|f}d| }n t||kr?| jd||f}d| }d}n| jd|f}d| }|}|g}|jr|j	 r| 
|}	|	r| |	|}
|d|d|
d f  |
dd  D ]}|d|d|f  qun
|ds|d | |D ]
}|| | q| |S )	Nr>   r   rh   z%*s%s
z	%*s%-*s  r   r[   ri   )rF   rL   rH   rG   rI   rJ   r|   r{   r   r   _expand_help_split_linesr#   endswithr}   r   rj   )r(   r   help_position
help_widthaction_widthaction_headertupindent_firstr   	help_text
help_linesr   r   r/   r/   r0   r     s<   






zHelpFormatter._format_actionc                 C   s   |j s| |}| ||d\}|S g }|jdkr!||j  n| |}| ||}|j D ]}|d||f  q/d|S )Nr[   r   r   r   )	r   r   _metavar_formatterr   r   r   r   r#   r'   )r(   r   r   metavarr   r   r   r/   r/   r0   r|   '  s   




z'HelpFormatter._format_action_invocationc                    sP   |j d ur	|j  n|jd urdd |jD }dd|  n|  fdd}|S )Nc                 S      g | ]}t |qS r/   str)rc   choicer/   r/   r0   rf   C  r   z4HelpFormatter._metavar_formatter.<locals>.<listcomp>z{%s},c                    s   t  tr S  f|  S r2   )
isinstancetuple)
tuple_sizeresultr/   r0   r   H  s   

z0HelpFormatter._metavar_formatter.<locals>.format)r   choicesr'   )r(   r   default_metavarchoice_strsr   r/   r   r0   r   ?  s   

z HelpFormatter._metavar_formatterc                 C   s  |  ||}|jd u rd|d }|S |jtkr d|d }|S |jtkr;|d}t|dkr5d| }|S d| }|S |jtkrHd|d }|S |jtkrQd}|S |jtkr^d	|d }|S |jtkrgd
}|S zdd t	|jD }W n t
y   tdd w d|||j }|S )N%sr[   r   r>   z[%s [%s ...]]z[%s ...]z%s [%s ...]r   z%s ...rh   c                 S   s   g | ]}d qS )r   r/   )rc   r   r/   r/   r0   rf   e  s    z.HelpFormatter._format_args.<locals>.<listcomp>zinvalid nargs valuer   )r   r   r   r   r   r   r   r   r   r   	TypeErrorr   r'   )r(   r   r   get_metavarr   r   formatsr/   r/   r0   r   O  sB   





	

zHelpFormatter._format_argsc                 C   s   t t|| jd}t|D ]}|| tu r||= qt|D ]}t|| dr-|| j||< q|dd urEddd |d D }||d< | 	|| S )Nr   r!   r   r   c                 S   r   r/   r   rc   cr/   r/   r0   rf   t  r   z.HelpFormatter._expand_help.<locals>.<listcomp>)
r   varsrD   r3   r   hasattrr!   r   r'   _get_help_string)r(   r   paramsr-   choices_strr/   r/   r0   r   k  s   zHelpFormatter._expand_helpc                 c   sB    z|j }W n
 ty   Y d S w |   | E d H  |   d S r2   )_get_subactionsAttributeErrorr]   r^   )r(   r   get_subactionsr/   r/   r0   r}   x  s   
z'HelpFormatter._iter_indented_subactionsc                 C   s&   | j d| }dd l}|||S )Nr   r   )rS   r   r   textwrapwrap)r(   rs   rX   r   r/   r/   r0   r     s   zHelpFormatter._split_linesc                 C   s,   | j d| }dd l}|j||||dS )Nr   r   )initial_indentsubsequent_indent)rS   r   r   r   fill)r(   rs   rX   r   r   r/   r/   r0   r     s   zHelpFormatter._fill_textc                 C      |j S r2   )r{   r(   r   r/   r/   r0   r        zHelpFormatter._get_help_stringc                 C   s
   |j  S r2   )destupperr   r/   r/   r0   r        
z/HelpFormatter._get_default_metavar_for_optionalc                 C   r   r2   )r  r   r/   r/   r0   r     r   z1HelpFormatter._get_default_metavar_for_positional)r>   r?   Nr2   )r!   r9   r:   rY   r]   r^   objectrM   rn   rp   rq   rt   rz   r   r   rm   rj   ru   r   rr   r   r|   r   r   r   r}   r   r   r   r   r   r/   r/   r/   r0   r      s@    

`j0
r   c                   @      e Zd Z	 dd ZdS )r   c                    s    d  fdd|jddD S )Nrh   c                 3   s    | ]} | V  qd S r2   r/   )rc   r   r   r/   r0   	<genexpr>  s    z9RawDescriptionHelpFormatter._fill_text.<locals>.<genexpr>T)keepends)r'   
splitlines)r(   rs   rX   r   r/   r  r0   r     s    z&RawDescriptionHelpFormatter._fill_textN)r!   r9   r:   r   r/   r/   r/   r0   r         r   c                   @   r  )r	   c                 C   s   |  S r2   )r	  )r(   rs   rX   r/   r/   r0   r        z!RawTextHelpFormatter._split_linesN)r!   r9   r:   r   r/   r/   r/   r0   r	     r
  r	   c                   @   r  )r   c                 C   s>   |j }d|j vr|jturttg}|js|j|v r|d7 }|S )Nz
%(default) (default: %(default)s))r{   r   r   r   r   r   r   )r(   r   r{   defaulting_nargsr/   r/   r0   r     s   

z.ArgumentDefaultsHelpFormatter._get_help_stringN)r!   r9   r:   r   r/   r/   r/   r0   r     r
  r   c                   @      e Zd Z	 dd Zdd ZdS )r
   c                 C      |j jS r2   r    r!   r   r/   r/   r0   r     r  z:MetavarTypeHelpFormatter._get_default_metavar_for_optionalc                 C   r  r2   r  r   r/   r/   r0   r     r  z<MetavarTypeHelpFormatter._get_default_metavar_for_positionalN)r!   r9   r:   r   r   r/   r/   r/   r0   r
     s    r
   c                 C   sd   | d u rd S | j rd| j S | jd tfvr| jS | jd tfvr#| jS | jr0dd| j d S d S )N/{r   })r   r'   r   r   r  r   )argumentr/   r/   r0   _get_action_name  s   r  c                   @   r  )r   c                 C   s   t || _|| _d S r2   )r  argument_namemessage)r(   r  r  r/   r/   r0   rY     s   

zArgumentError.__init__c                 C   s(   | j d u 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/   r0   __str__  s   
zArgumentError.__str__N)r!   r9   r:   rY   r  r/   r/   r/   r0   r     s    r   c                   @   s   e Zd Z	 dS )r   N)r!   r9   r:   r/   r/   r/   r0   r     s    r   c                   @   sB   e Zd Z	 								dddZdd Zdd Zdd	d
ZdS )r   NFc                 C   s@   || _ || _|| _|| _|| _|| _|| _|| _|	| _|
| _	d S r2   
r   r  r   constr   r    r   r   r{   r   r(   r   r  r   r  r   r    r   r   r{   r   r/   r/   r0   rY   4  s   
zAction.__init__c                       g d} fdd|D S )Nr  c                       g | ]	}|t  |fqS r/   getattrrc   r-   r6   r/   r0   rf   W      z&Action._get_kwargs.<locals>.<listcomp>r/   r(   namesr/   r6   r0   r%   J  s   zAction._get_kwargsc                 C   s
   | j d S r;   r   r6   r/   r/   r0   r   Y  r  zAction.format_usagec                 C   s   t td)Nz.__call__() not defined)NotImplementedErrorr   r(   parser	namespacevaluesr   r/   r/   r0   __call__\     zAction.__call__NNNNNFNNr2   )r!   r9   r:   rY   r%   r   r*  r/   r/   r/   r0   r     s    5
r   c                       s<   e Zd Z						d	 fdd	Zd
ddZdd Z  ZS )r   NFc	                    s~   g }	|D ]}
|	 |
 |
drd|
dd   }
|	 |
 q|d ur.|d ur.|tur.|d7 }t j|	|d||||||d	 d S )N----no-r>   r  r   )	r   r  r   r   r    r   r   r{   r   )r#   
startswithr   superrY   )r(   r   r  r   r    r   r   r{   r   _option_stringsr   	__class__r/   r0   rY   `  s(   




zBooleanOptionalAction.__init__c                 C   s(   || j v rt|| j|d  d S d S )Nr.  )r   setattrr  r/  r&  r/   r/   r0   r*    s   
zBooleanOptionalAction.__call__c                 C   s   d | jS )Nz | )r'   r   r6   r/   r/   r0   r     r+  z"BooleanOptionalAction.format_usage)NNNFNNr2   )r!   r9   r:   rY   r*  r   __classcell__r/   r/   r2  r0   r   _  s    
 r   c                       8   e Zd Z								d fdd	ZdddZ  ZS )	_StoreActionNFc                    T   |dkrt d|d ur|tkrt dt tt| j|||||||||	|
d
 d S )Nr   znargs 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   r0  r7  rY   r  r2  r/   r0   rY         

z_StoreAction.__init__c                 C   s   t || j| d S r2   )r4  r  r&  r/   r/   r0   r*       z_StoreAction.__call__r,  r2   r!   r9   r:   rY   r*  r5  r/   r/   r2  r0   r7        r7  c                       0   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   r{   )r0  r?  rY   r(   r   r  r  r   r   r{   r   r2  r/   r0   rY     s   

z_StoreConstAction.__init__c                 C   s   t || j| j d S r2   )r4  r  r  r&  r/   r/   r0   r*    s   z_StoreConstAction.__call__NFNNr2   r<  r/   r/   r2  r0   r?    s    r?  c                       s$   e Zd Z			d fdd	Z  ZS )_StoreTrueActionFNc                        t t| j||d|||d d S )NTr   r  r  r   r   r{   )r0  rB  rY   r(   r   r  r   r   r{   r2  r/   r0   rY        

z_StoreTrueAction.__init__)FFNr!   r9   r:   rY   r5  r/   r/   r2  r0   rB    
    rB  c                       s$   e Zd Z			d fdd	Z  ZS )_StoreFalseActionTFNc                    rC  )NFrD  )r0  rI  rY   rE  r2  r/   r0   rY     rF  z_StoreFalseAction.__init__)TFNrG  r/   r/   r2  r0   rI    rH  rI  c                       r6  )	_AppendActionNFc                    r8  )Nr   znargs for append actions must be != 0; if arg strings are not supplying the value to append, the append const action may be more appropriater9  r  )r   r   r0  rJ  rY   r  r2  r/   r0   rY     r:  z_AppendAction.__init__c                 C   2   t || jd }t|}|| t|| j| d S r2   )r  r  r=   r#   r4  r(   r'  r(  r)  r   r5   r/   r/   r0   r*       
z_AppendAction.__call__r,  r2   r<  r/   r/   r2  r0   rJ    r=  rJ  c                       r>  )	_AppendConstActionNFc              
      s$   t t| j||d|||||d d S )Nr   )r   r  r   r  r   r   r{   r   )r0  rN  rY   r@  r2  r/   r0   rY     s   

z_AppendConstAction.__init__c                 C   s4   t || jd }t|}|| j t|| j| d S r2   )r  r  r=   r#   r  r4  rL  r/   r/   r0   r*    s   z_AppendConstAction.__call__rA  r2   r<  r/   r/   r2  r0   rN  
  s    rN  c                       s.   e Zd Z			d fdd	ZdddZ  ZS )	_CountActionNFc                    rC  )Nr   )r   r  r   r   r   r{   )r0  rO  rY   rE  r2  r/   r0   rY   '  rF  z_CountAction.__init__c                 C   s0   t || jd }|d u rd}t|| j|d  d S Nr   r[   )r  r  r4  )r(   r'  r(  r)  r   countr/   r/   r0   r*  5  s   z_CountAction.__call__)NFNr2   r<  r/   r/   r2  r0   rO  %  s    rO  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   r{   )r0  rR  rY   )r(   r   r  r   r{   r2  r/   r0   rY   >  s   

z_HelpAction.__init__c                 C   s   |   |  d S r2   )
print_helpexitr&  r/   r/   r0   r*  J  s   z_HelpAction.__call__r2   r!   r9   r:   r   rY   r*  r5  r/   r/   r2  r0   rR  <  s    rR  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 rS  )r0  rW  rY   version)r(   r   rX  r  r   r{   r2  r/   r0   rY   Q  s   

z_VersionAction.__init__c                 C   sD   | j }|d u r
|j }| }|| || tj |  d S r2   )rX  _get_formatterrt   _print_messagerm   _sysstdoutrU  )r(   r'  r(  r)  r   rX  r_   r/   r/   r0   r*  _  s   
z_VersionAction.__call__r2   rV  r/   r/   r2  r0   rW  O  s    rW  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  r{   r   )r'   r0  r]  _ChoicesPseudoActionrY   )r(   r-   aliasesr{   r   r  supr2  r/   r0   rY   m  s   

z/_SubParsersAction._ChoicesPseudoAction.__init__rG  r/   r/   r2  r0   r^  k  s    r^  FNc              	      s<   || _ || _i | _g | _tt| j||t| j|||d d S )N)r   r  r   r   r   r{   r   )_prog_prefix_parser_class_name_parser_map_choices_actionsr0  r]  rY   r   )r(   r   rU   parser_classr  r   r{   r   r2  r/   r0   rY   u  s   	

z_SubParsersAction.__init__c                 K   s   | dd u rd| j|f |d< |dd}d|v r,|d}| |||}| j| | jdi |}|| j|< |D ]}|| j|< q;|S )NrU   r   r_  r/   r{   )r   ra  r   r^  rd  r#   rb  rc  )r(   r-   kwargsr_  r{   choice_actionr'  aliasr/   r/   r0   
add_parser  s   

z_SubParsersAction.add_parserc                 C   s   | j S r2   )rd  r6   r/   r/   r0   r     r   z!_SubParsersAction._get_subactionsc                 C   s   |d }|dd  }| j turt|| j | z| j| }W n ty8   |d| jd}td| }t| |w ||d \}	}t	|	
 D ]
\}
}t||
| qG|rft	|tg  t|t| d S d S )Nr   r[   r   )parser_namer   z5unknown parser %(parser_name)r (choices: %(choices)s))r  r   r4  rc  KeyErrorr'   r   r   parse_known_argsr   r5   
setdefault_UNRECOGNIZED_ARGS_ATTRr  r   )r(   r'  r(  r)  r   rj  r*   re   msgsubnamespacekeyr.   r/   r/   r0   r*    s(   


z_SubParsersAction.__call__r2   )r!   r9   r:   r   r^  r   rY   ri  r   r*  r5  r/   r/   r2  r0   r]  i  s    r]  c                   @   s   e Zd ZdddZdS )_ExtendActionNc                 C   rK  r2   )r  r  r=   r   r4  rL  r/   r/   r0   r*    rM  z_ExtendAction.__call__r2   )r!   r9   r:   r*  r/   r/   r/   r0   rr    s    rr  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 r2   )_mode_bufsize	_encoding_errors)r(   modebufsizeencodingerrorsr/   r/   r0   rY     rb   zFileType.__init__c              
      s   |dkr7d j v rd j v rtjjS tjS t fdddD r,d j v r)tjjS tjS td j  }t|zt| j  j	 j
 jW S  ty_ } z||d}td	}t|| d }~ww )
N-rs  bc                 3   s    | ]}| j v V  qd S r2   )rt  r   r6   r/   r0   r    s    z$FileType.__call__.<locals>.<genexpr>waxzargument "-" with mode %r)filenameerrorz$can't open '%(filename)s': %(error)s)rt  r[  stdinbufferanyr\  r   r   r   ru  rv  rw  OSErrorr   )r(   stringro  ere   r  r/   r6   r0   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 )Nrz  r{  r   c                 S   s   g | ]
}|d krt |qS )r   )r$   )rc   r,   r/   r/   r0   rf     s    z%FileType.__repr__.<locals>.<listcomp>c                 S   s$   g | ]\}}|d urd||f qS )Nr   r/   )rc   kwr,   r/   r/   r0   rf      s    
r   )rt  ru  rv  rw  r'   r    r!   )r(   re   rf  args_strr/   r/   r0   r1     s   zFileType.__repr__)rs  r   NN)r!   r9   r:   rY   r*  r1   r/   r/   r/   r0   r     s
    
r   c                   @   r   )r   c                 K   s   |D ]
}t | |||  qd S r2   )r4  )r(   rf  r-   r/   r/   r0   rY     s   zNamespace.__init__c                 C   s   t |tstS t| t|kS r2   )r   r   NotImplementedr   )r(   otherr/   r/   r0   __eq__  s   
zNamespace.__eq__c                 C   s
   || j v S r2   )r4   )r(   rq  r/   r/   r0   __contains__  r  zNamespace.__contains__N)r!   r9   r:   rY   r  r  r/   r/   r/   r0   r     s
    r   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 )Nr   storestore_const
store_truestore_falser#   append_constrQ  r{   rX  parsersr   z^-\d+$|^-\d*\.\d+$)r0  r  rY   descriptionargument_defaultprefix_charsconflict_handler_registriesregisterr7  r?  rB  rI  rJ  rN  rO  rR  rW  r]  rr  _get_handler_actions_option_string_actions_action_groups_mutually_exclusive_groups	_defaultsrP   rQ   _negative_number_matcher_has_negative_number_optionals)r(   r  r  r  r  r2  r/   r0   rY     s4   
z_ActionsContainer.__init__c                 C   s   | j |i }|||< d S r2   )r  rm  )r(   registry_namer.   r  registryr/   r/   r0   r  S  s   z_ActionsContainer.registerNc                 C   s   | j | ||S r2   )r  r   )r(   r  r.   r   r/   r/   r0   _registry_getW  r;  z_ActionsContainer._registry_getc                 K   s2   | j | | jD ]}|j|v r||j |_q	d S r2   )r  updater  r  r   )r(   rf  r   r/   r/   r0   set_defaults]  s   

z_ActionsContainer.set_defaultsc                 C   s8   | j D ]}|j|kr|jd ur|j  S q| j|d S r2   )r  r  r   r  r   )r(   r  r   r/   r/   r0   get_defaultf  s
   

z_ActionsContainer.get_defaultc                 O   sH  	 | j }|rt|dkr'|d d |vr'|rd|v rtd| j|i |}n| j|i |}d|vrN|d }|| jv rD| j| |d< n
| jd urN| j|d< | |}t|s^td|f |di |}| 	d|j
|j
}t|sytd|f |tu rtd	|f t| d
rz
|  |d  W n ty   tdw | |S )Nr[   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 passedrY  z,length of metavar tuple does not match nargsr/   )r  r   r   _get_positional_kwargs_get_optional_kwargsr  r  _pop_action_classcallabler  r    r   r   rY  r   r   _add_action)r(   re   rf  charsr  action_classr   	type_funcr/   r/   r0   r   p  s>    





z_ActionsContainer.add_argumentc                 O   s&   t | g|R i |}| j| |S r2   )_ArgumentGroupr  r#   )r(   re   rf  r   r/   r/   r0   add_argument_group  s   z$_ActionsContainer.add_argument_groupc                 K   s    t | fi |}| j| |S r2   )_MutuallyExclusiveGroupr  r#   )r(   rf  r   r/   r/   r0   add_mutually_exclusive_group     z._ActionsContainer.add_mutually_exclusive_groupc                 C   s`   |  | | j| | |_|jD ]}|| j|< q|jD ]}| j|r-| js-| jd q|S )NT)	_check_conflictr  r#   	containerr   r  r  matchr  )r(   r   r   r/   r/   r0   r    s   


z_ActionsContainer._add_actionc                 C   s   | j | d S r2   )r  remover   r/   r/   r0   _remove_action  s   z _ActionsContainer._remove_actionc                 C   s   i }| j D ]}|j|v rtd}t||j |||j< qi }|j D ]"}|j|vr7| j|j|j|jd||j< |jD ]	}||j ||< q:q"|jD ]}| j	|j
d}|jD ]}|||< qTqH|jD ]}||| | q_d S )Nz.cannot merge actions - two groups are named %r)titler  r  )r   )r  r  r   r   r  r  r  r   r  r  r   r  r   r  )r(   r  title_group_mapr   ro  	group_mapr   mutex_groupr/   r/   r0   _add_container_actions  s6   








z(_ActionsContainer._add_container_actionsc                 K   s^   d|v rt d}t||dttfvrd|d< |dtkr(d|vr(d|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  rf  ro  r/   r/   r0   r    s   z(_ActionsContainer._get_positional_kwargsc           	      O   s   g }g }|D ]0}|d | j vr|| j d}td}t|| || t|dkr6|d | j v r6|| q|dd }|d u rd|rH|d }n|d }|| j }|s^td}t|| |dd}t|||d	S )
Nr   )optionr  zNinvalid option string %(option)r: must start with a character %(prefix_chars)rr[   r  z%dest= is required for options like %rr|  r   r  )	r  r   r   r#   r   r   lstripreplacer   )	r(   re   rf  r   long_option_stringsr   ro  r  dest_option_stringr/   r/   r0   r    s0   


z&_ActionsContainer._get_optional_kwargsc                 C   s   | d|}| d||S )Nr   )r   r  )r(   rf  r   r   r/   r/   r0   r    s   z#_ActionsContainer._pop_action_classc                 C   s<   d| j  }zt| |W S  ty   td}t|| j  w )Nz_handle_conflict_%sz%invalid conflict_resolution value: %r)r  r  r   r   r   )r(   handler_func_namero  r/   r/   r0   r  #  s   
z_ActionsContainer._get_handlerc                 C   sP   g }|j D ]}|| jv r| j| }|||f q|r&|  }||| d S d S r2   )r   r  r#   r  )r(   r   confl_optionalsr   confl_optionalr  r/   r/   r0   r  ,  s   


z!_ActionsContainer._check_conflictc                 C   s2   t ddt|}ddd |D }t||| )Nzconflicting option string: %szconflicting option strings: %sr   c                 S   s   g | ]\}}|qS r/   r/   )rc   r   r   r/   r/   r0   rf   >  s    z<_ActionsContainer._handle_conflict_error.<locals>.<listcomp>)r   r   r'   r   )r(   r   conflicting_actionsr  conflict_stringr/   r/   r0   _handle_conflict_error:  s   
z(_ActionsContainer._handle_conflict_errorc                 C   s>   |D ]\}}|j | | j|d  |j s|j| qd S r2   )r   r  r  r   r  r  )r(   r   r  r   r/   r/   r0   _handle_conflict_resolveC  s   z*_ActionsContainer._handle_conflict_resolver2   )r!   r9   r:   rY   r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r5  r/   r/   r2  r0   r    s&    5
	
3(
"		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}|dd|i| || _g | _|j	| _	|j
| _
|j| _|j| _|j| _|j| _d S )Nr  r  r  r  r/   )rm  r  r  r  r0  r  rY   r  r   r  r  r  r  r  r  )r(   r  r  r  rf  r  
super_initr2  r/   r0   rY   T  s   z_ArgumentGroup.__init__c                    s    t t| |}| j| |S r2   )r0  r  r  r   r#   r   r2  r/   r0   r  j  r  z_ArgumentGroup._add_actionc                    s    t t| | | j| d S r2   )r0  r  r  r   r  r   r2  r/   r0   r  o  s   z_ArgumentGroup._remove_actionNNr!   r9   r:   rY   r  r  r5  r/   r/   r2  r0   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| | || _|| _d S r2   )r0  r  rY   r   
_container)r(   r  r   r2  r/   r0   rY   v  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   r  r  r   r#   )r(   r   ro  r/   r/   r0   r  {  s   z#_MutuallyExclusiveGroup._add_actionc                 C   s   | j | | j| d S r2   )r  r  r   r  r   r/   r/   r0   r    s   z&_MutuallyExclusiveGroup._remove_action)Fr  r/   r/   r2  r0   r  t  s    r  c                       s*  e Zd Z	 ddddg ed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%d&Zd@d'd(Zd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 Zd3d4 ZdAd5d6ZdAd7d8ZdAd9d:ZdBd<d=Zd>d? Z   Z!S )Cr   Nr|  r  Tc              	      s$  t t| j}||||	|
d |d u rtjtjd }|| _|| _	|| _
|| _|| _|| _|| _|| _| j}|td| _|td| _d | _dd }| dd | d|v rXdn|d }| jrq| j|d	 |d
 d dttdd |D ]}| | z|j}W n	 ty   Y qsw | j| qsd S )N)r  r  r  r  r   zpositional argumentsoptionsc                 S   s   | S r2   r/   )r  r/   r/   r0   identity  r8   z)ArgumentParser.__init__.<locals>.identityr    r|  hr>   r{   zshow this help message and exit)r   r   r{   )r0  r   rY   _ospathbasenamer[  argvrU   rv   epilogformatter_classfromfile_prefix_charsadd_helpallow_abbrevexit_on_errorr  r   _positionals
_optionals_subparsersr  r   r   r  r  r   r  )r(   rU   rv   r  r  parentsr  r  r  r  r  r  r  r  	superinit	add_groupr  default_prefixr`   defaultsr2  r/   r0   rY     sL   

zArgumentParser.__init__c                    r  )N)rU   rv   r  r  r  r  c                    r  r/   r  r   r6   r/   r0   rf     r!  z.ArgumentParser._get_kwargs.<locals>.<listcomp>r/   r"  r/   r6   r0   r%     s   zArgumentParser._get_kwargsc           	      K   s   | j d ur| td |dt|  d|v sd|v r4t|dd}t|dd }| ||| _ n| j| _ |dd u r[| 	 }| 
 }| j}|| j||d |  |d< | |d}|d
d	g i|}| j | |S )Nz(cannot have multiple subparser argumentsre  r  r  subcommandsrU   rh   r  r   r/   )r  r  r   rm  r    r   r  r  r   rY  _get_positional_actionsr  rz   rv   rm   r   r  r  )	r(   rf  r  r  r_   r   rx   parsers_classr   r/   r/   r0   add_subparsers  s$   
zArgumentParser.add_subparsersc                 C   s&   |j r| j| |S | j| |S r2   )r   r  r  r  r   r/   r/   r0   r    s
   zArgumentParser._add_actionc                 C      dd | j D S )Nc                 S   s   g | ]}|j r|qS r/   r$  rc   r   r/   r/   r0   rf         
z8ArgumentParser._get_optional_actions.<locals>.<listcomp>r  r6   r/   r/   r0   _get_optional_actions     z$ArgumentParser._get_optional_actionsc                 C   r  )Nc                 S   s   g | ]}|j s|qS r/   r$  r  r/   r/   r0   rf     r  z:ArgumentParser._get_positional_actions.<locals>.<listcomp>r  r6   r/   r/   r0   r    r  z&ArgumentParser._get_positional_actionsc                 C   4   |  ||\}}|rtd}| |d|  |S Nzunrecognized arguments: %sr   )rl  r   r  r'   r(   re   r(  r  ro  r/   r/   r0   
parse_args!  
   zArgumentParser.parse_argsc                 C   s  |d u rt jdd  }nt|}|d u rt }| jD ]}|jtur4t||js4|jtur4t	||j|j q| j
D ]}t||sHt	||| j
|  q8| jrmz
| ||\}}W n tyl   t  d }| t| Y n	w | ||\}}t|tr|t|t t|t ||fS rZ   )r[  r  r3   r   r  r  r   r   r   r4  r  r  _parse_known_argsr   exc_infor  r   rn  r   r  delattr)r(   re   r(  r   r  errr/   r/   r0   rl  (  s6   






zArgumentParser.parse_known_argsc                    s  	j d ur
	i  	jD ])}|j}t|jD ]\}} |g }||d |  |||d d   qqi g }t}	t|	D ]/\}}
|
dkr]|d |	D ]}
|d qTqE		|
}|d u rid}n||< d}|| qEd
|t t d 	fdd		fd	d
}	 	fdd}g d
rt}nd}
|krt
fddD }
|kr|
}|
kr|
q|

vr
| }| |
|


|ks|
}|d   g }	jD ]=}|vr9|jr|t| q|jd ur9t|jtr9t|jr9|jt|ju r9t|j	||j q|rI	tdd
|  	jD ]+}|jrv|jD ]
}|v r^ nqUdd |jD }td}	|d
|  qLfS )Nr[   r-  r|  AOrh   c                    s    |  | |}|| jur1 |   | g D ]}|v r0td}t|}t| || q|tur>| || d S d S )Nznot allowed with argument %s)r   _get_valuesr   r   r   r  r   r   )r   argument_stringsr   argument_valuesconflict_actionro  action_name)action_conflictsr(  seen_actionsseen_non_default_actionsr(   r/   r0   take_action~  s   


z5ArgumentParser._parse_known_args.<locals>.take_actionc                    sr  |  }|\}}}j }g }	 |d u r |   | d S |d ur||d}j}|dkrg|d |vrg||g |f |d }	|	|d  }|dd  pMd }
j}||v r\|| }|
}nLtd}t||| |dkr{| d }|g}||||f n.td}t||| | d }|d  }|||}|| } || }||||f nq|D ]\}}}||| q|S )NTr[   r  r   zignored explicit argument %r)_match_argumentr#   r  r  r   r   )start_indexoption_tupler   r   explicit_argmatch_argumentaction_tuples	arg_countr  charnew_explicit_argoptionals_mapro  stopre   r   selected_patterns)r*   arg_strings_patternextrasoption_string_indicesr(   r  r/   r0   consume_optional  sP   


:z:ArgumentParser._parse_known_args.<locals>.consume_optionalc                    sn   j }| d  }||}t|D ]\}} | | |  }| |7 } || qt|d  d d < | S r2   )_match_arguments_partialzipr   )r  match_partialselected_pattern
arg_countsr   r
  re   )r*   r  r   r(   r  r/   r0   consume_positionals  s   
z=ArgumentParser._parse_known_args.<locals>.consume_positionalsr   r   c                    s   g | ]}| kr|qS r/   r/   )rc   r   )r  r/   r0   rf     s
    z4ArgumentParser._parse_known_args.<locals>.<listcomp>z(the following arguments are required: %sr   c                 S   s   g | ]}|j turt|qS r/   )r{   r   r  r  r/   r/   r0   rf   <  s
    
z#one of the arguments %s is requiredr   r2   )r  _read_args_from_filesr  r   r   rm  r   iterr#   _parse_optionalr'   r   r  rG   rF   r  r   r  r   r   r   r   r  r  r4  
_get_valuer  r   )r(   r*   r(  r  r   r   mutex_action	conflictsarg_string_pattern_partsarg_strings_iter
arg_stringr  patternr  r  max_option_string_indexnext_option_string_indexpositionals_end_indexstrings
stop_indexrequired_actionsr   r   r#  ro  r/   )r   r*   r  r  r(  r  r   r  r  r(   r  r  r0   r  O  s   





J









z ArgumentParser._parse_known_argsc              	   C   s   g }|D ]c}|r|d | j vr|| qz<t|dd  *}g }|  D ]}| |D ]}|| q.q'| |}|| W d    n1 sKw   Y  W q tyg   t	
 d }| t| Y qw |S rP  )r  r#   r   readr	  convert_arg_line_to_argsr  r   r  r[  r  r  r   )r(   r*   new_arg_stringsr"  	args_filearg_liner,   r  r/   r/   r0   r  E  s(   
z$ArgumentParser._read_args_from_filesc                 C   s   |gS r2   r/   )r(   r.  r/   r/   r0   r+  _  r   z'ArgumentParser.convert_arg_line_to_argsc                 C   sz   |  |}t||}|d u r6d tdttdttdi}||j}|d u r1t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 argumentsr[   )_get_nargs_patternrP   r  r   r   r   r   r   r   r   r   r   )r(   r   r  nargs_patternr  nargs_errorsro  r/   r/   r0   r  b  s"   

zArgumentParser._match_argumentc                    st   g }t t|ddD ]-}|d | }d fdd|D }t||}|d ur7|dd | D   |S q
|S )Nr   r   rh   c                    s   g | ]}  |qS r/   )r/  r  r6   r/   r0   rf   ~  s    z;ArgumentParser._match_arguments_partial.<locals>.<listcomp>c                 S   r   r/   )r   )rc   r  r/   r/   r0   rf     r   )r   r   r'   rP   r  r   rx   )r(   rw   r  r   r   actions_slicer#  r  r/   r6   r0   r  x  s   z'ArgumentParser._match_arguments_partialc           
      C   s  |sd S |d | j vrd S || jv r| j| }||d fS t|dkr$d S d|v r?|dd\}}|| jv r?| j| }|||fS | |}t|dkreddd |D }||d}td}| ||  nt|dkrp|\}	|	S | j	|r{| j
s{d S d	|v rd S d |d fS )
Nr   r[   =r   c                 S   s   g | ]\}}}|qS r/   r/   )rc   r   r   r  r/   r/   r0   rf     s    z2ArgumentParser._parse_optional.<locals>.<listcomp>)r  matchesz4ambiguous option: %(option)s could match %(matches)sr   )r  r  r   split_get_option_tuplesr'   r   r  r  r  r  )
r(   r"  r   r   r  option_tuplesr  re   ro  r  r/   r/   r0   r    s>   









zArgumentParser._parse_optionalc           
      C   s0  g }| j }|d |v rA|d |v rA| jr?d|v r!|dd\}}n|}d }| jD ]}||r>| j| }|||f}|| q(|S |d |v r|d |vr|}d }|d d }|dd  }	| jD ]*}||krv| j| }|||	f}|| q`||r| j| }|||f}|| q`|S | td|  |S )Nr   r[   r3  r>   zunexpected option string: %s)r  r  r5  r  r/  r#   r  r   )
r(   r   r   r  option_prefixr  r   r   short_option_prefixshort_explicit_argr/   r/   r0   r6    sB   











z!ArgumentParser._get_option_tuplesc                 C   s   |j }|d u r
d}n3|tkrd}n,|tkrd}n%|tkrd}n|tkr&d}n|tkr-d}n|tkr4d}n	dd	d
|  }|jrL|	d	d}|	dd}|S )Nz(-*A-*)z(-*A?-*)z	(-*[A-]*)z
(-*A[A-]*)z([-AO]*)z(-*A[-AO]*)z(-*-*)z(-*%s-*)z-*r  rh   r|  )
r   r   r   r   r   r   r   r'   r   r  )r(   r   r   r0  r/   r/   r0   r/    s(   z!ArgumentParser._get_nargs_patternc                 C   r  r  )parse_known_intermixed_argsr   r  r'   r  r/   r/   r0   parse_intermixed_args 	  r  z$ArgumentParser.parse_intermixed_argsc              	      s  |    dd  D }|rtd|d j  fdd| jD r$tdz| j}z`| jd u r7|  dd  | _ D ]}|j|_t|_|j|_	t|_q9| 
||\}} D ]%}t||jryt||jg kryddlm} |d	|j|f  t||j qTW  D ]
}|j|_|j	|_q}n D ]
}|j|_|j	|_qw |  }z6|D ]	}|j|_d
|_q| jD ]	}	|	j|	_d
|	_q| 
||\}}
W |D ]}|j|_q| jD ]}	|	j|	_qn|D ]}|j|_q| jD ]}	|	j|	_qw W || _||
fS || _w )Nc                 S   s   g | ]}|j ttfv r|qS r/   )r   r   r   r  r/   r/   r0   rf   5	  s    z>ArgumentParser.parse_known_intermixed_args.<locals>.<listcomp>z3parse_intermixed_args: positional arg with nargs=%sr   c                    s&   g | ]}|j D ]	}| v r|jqqS r/   )r   r  )rc   r   r   r   r/   r0   rf   ;	  s    
z;parse_intermixed_args: positional in mutuallyExclusiveGroup   )warnzDo not expect %s in %sF)r  r   r   r  rv   r   
save_nargsr   r   save_defaultrl  r   r  r  warningsr?  r  r  r   save_required)r(   re   r(  a
save_usager   remaining_argsr?  r   r   r  r/   r=  r0   r;  '	  sx   
	










z*ArgumentParser.parse_known_intermixed_argsc                    s   j ttfvrz|d W n	 ty   Y nw |s< j tkr< jr& j}n j}t	|t
r: |} | |S |sY j tkrY jsY jd urO j}n|} | |S t|dkrw j d tfv rw|\} |} | |S  j tkr fdd|D }|S  j tkr fdd|D } |d  |S  j tkrt}|S  fdd|D }|D ]} | q|S )Nr-  r[   c                       g | ]}  |qS r/   r  rc   vr   r(   r/   r0   rf   	  rg   z.ArgumentParser._get_values.<locals>.<listcomp>c                    rG  r/   rH  rI  rK  r/   r0   rf   	  rg   r   c                    rG  r/   rH  rI  rK  r/   r0   rf   	  rg   )r   r   r   r  r   r   r   r  r   r   r   r  _check_valuer   r   r   )r(   r   r*   r.   r"  rJ  r/   rK  r0   r  t	  sR   
&



	zArgumentParser._get_valuesc              	   C   s   |  d|j|j}t|std}t||| z||}W |S  ty=   t|jdt|j}tt	
 d }t|| ttfy_   t|jdt|j}||d}td}t||| w )Nr    r  r!   r[   )r    r.   z!invalid %(type)s value: %(value)r)r  r    r  r   r   r   r  r$   r   r[  r  r   r   )r(   r   r"  r  ro  r   r-   re   r/   r/   r0   r  	  s"   


zArgumentParser._get_valuec                 C   sJ   |j d ur!||j vr#|dtt|j d}td}t||| d S d S )Nr   )r.   r   z3invalid choice: %(value)r (choose from %(choices)s))r   r'   r~   r$   r   r   )r(   r   r.   re   ro  r/   r/   r0   rL  	  s   zArgumentParser._check_valuec                 C   s$   |   }|| j| j| j | S r2   )rY  rz   rv   r  r  rm   )r(   r_   r/   r/   r0   r   	  s
   zArgumentParser.format_usagec                 C   st   |   }|| j| j| j || j | jD ]}||j	 ||j |
|j |  q|| j | S r2   )rY  rz   rv   r  r  rt   r  r  rp   r  r   r   rq   r  rm   )r(   r_   action_groupr/   r/   r0   rm   	  s   

zArgumentParser.format_helpc                 C   s   | j | jdS )Nr   )r  rU   r6   r/   r/   r0   rY  	  r7   zArgumentParser._get_formatterc                 C   "   |d u rt j}| |  | d S r2   )r[  r\  rZ  r   r(   filer/   r/   r0   print_usage	     zArgumentParser.print_usagec                 C   rN  r2   )r[  r\  rZ  rm   rO  r/   r/   r0   rT  	  rR  zArgumentParser.print_helpc                 C   s$   |r|d u r	t j}|| d S d S r2   )r[  stderrwrite)r(   r  rP  r/   r/   r0   rZ  	  s
   zArgumentParser._print_messager   c                 C   s    |r	|  |tj t| d S r2   )rZ  r[  rS  rU  )r(   statusr  r/   r/   r0   rU  
  s   zArgumentParser.exitc                 C   s2   	 |  tj | j|d}| dtd|  d S )N)rU   r  r>   z%(prog)s: error: %(message)s
)rQ  r[  rS  rU   rU  r   )r(   r  re   r/   r/   r0   r  
  s   zArgumentParser.errorr  r2   )r   N)"r!   r9   r:   r   rY   r%   r  r  r  r  r  rl  r  r  r+  r  r  r  r6  r/  r<  r;  r  r  rL  r   rm   rY  rQ  rT  rZ  rU  r  r5  r/   r/   r2  r0   r     sZ    B

' w:-
1
M8



	r   )1__version____all__osr  rerP   sysr[  r   r   r   r   r   r   r   r   r   rn  r  r   r=   r   r   r	   r   r
   r  	Exceptionr   r   r   r   r7  r?  rB  rI  rJ  rN  rO  rR  rW  r]  rr  r   r   r  r  r  r   r/   r/   r/   r0   <module>   sb   =    	^)#&]7  8"