o
    g}                    @   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......Z_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)selfZ	type_namearg_stringsZ	star_argsargnamevalue r,   >/Users/admin/.pyenv/versions/3.10.0/lib/python3.10/argparse.py__repr__t   s   

z_AttributeHolder.__repr__c                 C   s   t | j S N)list__dict__itemsr'   r,   r,   r-   r$         z_AttributeHolder._get_kwargsc                 C   s   g S r/   r,   r3   r,   r,   r-   r!         z_AttributeHolder._get_argsN)r    
__module____qualname__r.   r$   r!   r,   r,   r,   r-   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   r0   copy)r2   r9   r,   r,   r-   _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'   progZindent_incrementZmax_help_positionwidthr>   r,   r,   r-   __init__   s"   
zHelpFormatter.__init__c                 C   s"   |  j | j7  _ |  jd7  _d S N   rG   rB   rH   r3   r,   r,   r-   _indent   s   zHelpFormatter._indentc                 C   s"   |  j | j8  _ |  jd8  _d S rU   rW   r3   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headingr2   )r'   rZ   r[   r\   r,   r,   r-   rT         
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,   r-   
<listcomp>       z6HelpFormatter._Section.format_help.<locals>.<listcomp> z%*s%s:

)	r[   rZ   rX   _join_partsr2   rY   r\   r   rG   )r'   r&   Z	item_helpZcurrent_indentr\   r,   r,   r-   format_help   s   



z"HelpFormatter._Section.format_helpr/   )r    r6   r7   rT   rf   r,   r,   r,   r-   rJ      s    
rJ   c                 C   s   | j j||f d S r/   )rL   r2   r"   )r'   r_   r`   r,   r,   r-   	_add_item   s   zHelpFormatter._add_itemc                 C   s0   |    | | | j|}| |jg  || _d S r/   )rX   rJ   rL   rg   rf   )r'   r\   Zsectionr,   r,   r-   start_section   s   
zHelpFormatter.start_sectionc                 C   s   | j j| _ |   d S r/   )rL   r[   rY   r3   r,   r,   r-   end_section   s   
zHelpFormatter.end_sectionc                 C   s,   |t ur|d ur| | j|g d S d S d S r/   )r   rg   _format_text)r'   textr,   r,   r-   add_text   s   zHelpFormatter.add_textc                 C   s*   |t ur||||f}| | j| d S d S r/   )r   rg   _format_usage)r'   usageactionsgroupsprefixr`   r,   r,   r-   	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 r/   )helpr   _format_action_invocation_iter_indented_subactionsr"   rD   maplenrG   rI   rg   _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/   )r{   )r'   ro   ry   r,   r,   r-   add_arguments  s   zHelpFormatter.add_argumentsc                 C   s.   | j  }|r| jd|}|dd }|S )N

rd   )rK   rf   rQ   substrip)r'   rs   r,   r,   r-   rf     s
   
zHelpFormatter.format_helpc                 C   s   d dd |D S )Nrc   c                 S   s   g | ]
}|r|t ur|qS r,   )r   )r^   partr,   r,   r-   ra   "  s    
z-HelpFormatter._join_parts.<locals>.<listcomp>)r&   )r'   Zpart_stringsr,   r,   r-   re   !  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: rR   z%(prog)s c                 S   s   g | ]}|r|qS r,   r,   )r^   sr,   r,   r-   ra   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 )NrV   r   r   )rw   r"   r&   )partsindentrq   lineslineZline_lenr   
text_widthr,   r-   	get_linesV  s"   
z.HelpFormatter._format_usage.<locals>.get_linesg      ?rV   rd   z%s%s

r/   )_dictrA   option_stringsr"   _format_actions_usager&   rF   rG   rw   rM   findallextend)r'   rn   ro   rp   rq   rR   	optionalspositionalsry   formatZaction_usageZpart_regexpZ	opt_usageZ	pos_usageZ	opt_partsZ	pos_partsr   r   r   r   r,   r   r-   rm   &  sX   




zHelpFormatter._format_usagec              	   C   s  t  }i }|D ]}z
||jd }W n	 ty   Y qw |t|j }||| |jkr|jD ]}|| q0|js^||v rH||  d7  < nd||< ||v rY||  d7  < n'd||< n"||v rk||  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 )Nr   z [[]z (()rV   |%s %s[%s]T)reverser   c                 S   s   g | ]}|d ur|qS r/   r,   )r^   itemr,   r,   r-   ra     rb   z7HelpFormatter._format_actions_usage.<locals>.<listcomp>z[\[(]z[\])]z(%s) z\1 (%s)z%s *%src   z\(([^|]*)\))setindex_group_actions
ValueErrorrw   addrequiredrange	enumeraters   r   r"   getpopr   #_get_default_metavar_for_positional_format_argsnargsformat_usage!_get_default_metavar_for_optionalsortedr&   rM   r~   r   )r'   ro   rp   group_actionsZinsertsgroupstartendry   ir   defaultr   option_stringargs_stringrk   opencloser,   r,   r-   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   rA   rD   rF   rG   
_fill_text)r'   rk   r   r   r,   r,   r-   rj     s
   
zHelpFormatter._format_textc                 C   s4  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{| 	|}	| 
|	|}
|d|d|
d f  |
dd  D ]}|d|d|f  qn|ds|d | |D ]
}|| | q| |S )	Nr;   r   rc   z%*s%s
z	%*s%-*s  r   rV   rd   )rC   rI   rE   rD   rF   rG   rt   rs   rw   _expand_help_split_linesr"   endswithru   rx   re   )r'   ry   Zhelp_positionZ
help_widthZaction_widthZaction_headertupZindent_firstr   Z	help_textZ
help_linesr   rz   r,   r,   r-   rx     s8   






zHelpFormatter._format_actionc                 C   s   |j s| |}| ||d\}|S g }|jdkr!||j  n| |}| ||}|j D ]}|d||f  q/d|S )NrV   r   r   r   )	r   r   _metavar_formatterr   r   r   r   r"   r&   )r'   ry   r   metavarr   r   r   r,   r,   r-   rt   #  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)r^   choicer,   r,   r-   ra   ?  r   z4HelpFormatter._metavar_formatter.<locals>.<listcomp>z{%s},c                    s   t  tr S  f|  S r/   )
isinstancetuple)Z
tuple_sizeresultr,   r-   r   D  s   

z0HelpFormatter._metavar_formatter.<locals>.format)r   choicesr&   )r'   ry   default_metavarZchoice_strsr   r,   r   r-   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%srV   r   r;   z[%s [%s ...]]z[%s ...]z%s [%s ...]r   z%s ...rc   c                 S   s   g | ]}d qS )r   r,   )r^   r   r,   r,   r-   ra   a  s    z.HelpFormatter._format_args.<locals>.<listcomp>zinvalid nargs valuer   )r   r   r   r   rw   r   r   r   r   r   	TypeErrorr   r&   )r'   ry   r   Zget_metavarr   r   formatsr,   r,   r-   r   K  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   )r^   cr,   r,   r-   ra   p  r   z.HelpFormatter._expand_help.<locals>.<listcomp>)
r   varsrA   r0   r   hasattrr    r   r&   _get_help_string)r'   ry   paramsr*   Zchoices_strr,   r,   r-   r   g  s   zHelpFormatter._expand_helpc                 c   sB    z|j }W n
 ty   Y d S w |   | E d H  |   d S r/   )_get_subactionsAttributeErrorrX   rY   )r'   ry   Zget_subactionsr,   r,   r-   ru   t  s   
z'HelpFormatter._iter_indented_subactionsc                 C   s&   | j d| }dd l}|||S )Nr   r   )rP   r~   r   textwrapZwrap)r'   rk   rS   r   r,   r,   r-   r   ~  s   zHelpFormatter._split_linesc                 C   s,   | j d| }dd l}|j||||dS )Nr   r   )Zinitial_indentZsubsequent_indent)rP   r~   r   r   Zfill)r'   rk   rS   r   r   r,   r,   r-   r     s   zHelpFormatter._fill_textc                 C      |j S r/   )rs   r'   ry   r,   r,   r-   r        zHelpFormatter._get_help_stringc                 C   s
   |j  S r/   )destupperr   r,   r,   r-   r        
z/HelpFormatter._get_default_metavar_for_optionalc                 C   r   r/   )r   r   r,   r,   r-   r     r   z1HelpFormatter._get_default_metavar_for_positional)r;   r<   Nr/   )r    r6   r7   rT   rX   rY   objectrJ   rg   rh   ri   rl   rr   r{   r|   rf   re   rm   r   rj   rx   rt   r   r   r   ru   r   r   r   r   r   r,   r,   r,   r-   r      s@    

`g/
r   c                   @      e Zd Z	 dd ZdS )r   c                    s    d  fdd|jddD S )Nrc   c                 3   s    | ]} | V  qd S r/   r,   )r^   r   r   r,   r-   	<genexpr>  s    z9RawDescriptionHelpFormatter._fill_text.<locals>.<genexpr>T)keepends)r&   
splitlines)r'   rk   rS   r   r,   r   r-   r     s    z&RawDescriptionHelpFormatter._fill_textN)r    r6   r7   r   r,   r,   r,   r-   r         r   c                   @   r   )r	   c                 C   s   |  S r/   )r   )r'   rk   rS   r,   r,   r-   r        z!RawTextHelpFormatter._split_linesN)r    r6   r7   r   r,   r,   r,   r-   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))rs   r   r   r   r   r   r   )r'   ry   rs   Zdefaulting_nargsr,   r,   r-   r     s   

z.ArgumentDefaultsHelpFormatter._get_help_stringN)r    r6   r7   r   r,   r,   r,   r-   r     r   r   c                   @      e Zd Z	 dd Zdd ZdS )r
   c                 C      |j jS r/   r   r    r   r,   r,   r-   r     r   z:MetavarTypeHelpFormatter._get_default_metavar_for_optionalc                 C   r   r/   r   r   r,   r,   r-   r     r   z<MetavarTypeHelpFormatter._get_default_metavar_for_positionalN)r    r6   r7   r   r   r,   r,   r,   r-   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,   r-   _get_action_name  s   r   c                   @   r   )r   c                 C   s   t || _|| _d S r/   )r   argument_namemessage)r'   r   r   r,   r,   r-   rT     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,   r-   __str__  s   
zArgumentError.__str__N)r    r6   r7   rT   r   r,   r,   r,   r-   r     s    r   c                   @   s   e Zd Z	 dS )r   N)r    r6   r7   r,   r,   r,   r-   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 r/   
r   r   r   constr   r   r   r   rs   r   r'   r   r   r   r   r   r   r   r   rs   r   r,   r,   r-   rT   0  s   
zAction.__init__c                       g d} fdd|D S )N)	r   r   r   r   r   r   r   rs   r   c                       g | ]	}|t  |fqS r,   getattrr^   r*   r3   r,   r-   ra   R      z&Action._get_kwargs.<locals>.<listcomp>r,   r'   namesr,   r3   r-   r$   F  s   zAction._get_kwargsc                 C   s
   | j d S r8   r   r3   r,   r,   r-   r   T  r   zAction.format_usagec                 C   s   t td)Nz.__call__() not defined)NotImplementedErrorr   r'   parser	namespacevaluesr   r,   r,   r-   __call__W     zAction.__call__NNNNNFNNr/   )r    r6   r7   rT   r$   r   r  r,   r,   r,   r-   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	                    sv   g }	|D ]}
|	 |
 |
drd|
dd   }
|	 |
 q|d ur*|d ur*|d7 }t j|	|d||||||d	 d S )N----no-r;   r   r   )	r   r   r   r   r   r   r   rs   r   )r"   
startswithsuperrT   )r'   r   r   r   r   r   r   rs   r   Z_option_stringsr   	__class__r,   r-   rT   [  s(   




zBooleanOptionalAction.__init__c                 C   s(   || j v rt|| j|d  d S d S )Nr  )r   setattrr   r  r   r,   r,   r-   r  {  s   
zBooleanOptionalAction.__call__c                 C   s   d | jS )Nz | )r&   r   r3   r,   r,   r-   r     r  z"BooleanOptionalAction.format_usage)NNNFNNr/   )r    r6   r7   rT   r  r   __classcell__r,   r,   r
  r-   r   Z  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   r	  r  rT   r   r
  r,   r-   rT         

z_StoreAction.__init__c                 C   s   t || j| d S r/   )r  r   r   r,   r,   r-   r       z_StoreAction.__call__r  r/   r    r6   r7   rT   r  r  r,   r,   r
  r-   r        r  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   rs   )r	  r  rT   r'   r   r   r   r   r   rs   r   r
  r,   r-   rT     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__NFNNr/   r  r,   r,   r
  r-   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   rs   )r	  r  rT   r'   r   r   r   r   rs   r
  r,   r-   rT        

z_StoreTrueAction.__init__)FFNr    r6   r7   rT   r  r,   r,   r
  r-   r    
    r  c                       s$   e Zd Z			d fdd	Z  ZS )_StoreFalseActionTFNc                    r  )NFr  )r	  r!  rT   r  r
  r,   r-   rT     r  z_StoreFalseAction.__init__)TFNr  r,   r,   r
  r-   r!    r   r!  c                       r  )	_AppendActionNFc                    r  )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 appropriater  r   )r   r   r	  r"  rT   r   r
  r,   r-   rT     r  z_AppendAction.__init__c                 C   2   t || jd }t|}|| t|| j| d S r/   )r   r   r:   r"   r  r'   r   r  r  r   r2   r,   r,   r-   r       
z_AppendAction.__call__r  r/   r  r,   r,   r
  r-   r"    r  r"  c                       r  )	_AppendConstActionNFc              
      s$   t t| j||d|||||d d S )Nr   )r   r   r   r   r   r   rs   r   )r	  r&  rT   r  r
  r,   r-   rT     s   

z_AppendConstAction.__init__c                 C   s4   t || jd }t|}|| j t|| j| d S r/   )r   r   r:   r"   r   r  r$  r,   r,   r-   r    s   z_AppendConstAction.__call__r  r/   r  r,   r,   r
  r-   r&    s    r&  c                       s.   e Zd Z			d fdd	ZdddZ  ZS )	_CountActionNFc                    r  )Nr   )r   r   r   r   r   rs   )r	  r'  rT   r  r
  r,   r-   rT   "  r  z_CountAction.__init__c                 C   s0   t || jd }|d u rd}t|| j|d  d S Nr   rV   )r   r   r  )r'   r   r  r  r   countr,   r,   r-   r  0  s   z_CountAction.__call__)NFNr/   r  r,   r,   r
  r-   r'     s    r'  c                       s.   e Zd Zeedf fdd	ZdddZ  ZS )_HelpActionNc                    s   t t| j|||d|d d S Nr   )r   r   r   r   rs   )r	  r*  rT   )r'   r   r   r   rs   r
  r,   r-   rT   9  s   

z_HelpAction.__init__c                 C   s   |   |  d S r/   )
print_helpexitr   r,   r,   r-   r  E  s   z_HelpAction.__call__r/   r    r6   r7   r   rT   r  r  r,   r,   r
  r-   r*  7  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/  rT   version)r'   r   r0  r   r   rs   r
  r,   r-   rT   L  s   

z_VersionAction.__init__c                 C   sD   | j }|d u r
|j }| }|| || tj |  d S r/   )r0  _get_formatterrl   _print_messagerf   _sysstdoutr-  )r'   r   r  r  r   r0  rZ   r,   r,   r-   r  Z  s   
z_VersionAction.__call__r/   r.  r,   r,   r
  r-   r/  J  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   rs   r   )r&   r	  r5  _ChoicesPseudoActionrT   )r'   r*   aliasesrs   r   r   Zsupr
  r,   r-   rT   h  s   

z/_SubParsersAction._ChoicesPseudoAction.__init__r  r,   r,   r
  r-   r6  f  s    r6  FNc              	      s<   || _ || _i | _g | _tt| j||t| j|||d d S )N)r   r   r   r   r   rs   r   )_prog_prefix_parser_class_name_parser_map_choices_actionsr	  r5  rT   r   )r'   r   rR   parser_classr   r   rs   r   r
  r,   r-   rT   p  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 )NrR   r   r7  r,   rs   )r   r8  r   r6  r;  r"   r9  r:  )r'   r*   kwargsr7  rs   Zchoice_actionr   aliasr,   r,   r-   
add_parser  s   

z_SubParsersAction.add_parserc                 C   s   | j S r/   )r;  r3   r,   r,   r-   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   rV   r   )parser_namer   z5unknown parser %(parser_name)r (choices: %(choices)s))r   r   r  r:  KeyErrorr&   r   r   parse_known_argsr   r2   
setdefault_UNRECOGNIZED_ARGS_ATTRr   r   )r'   r   r  r  r   r@  r(   r`   msgZsubnamespacekeyr+   r,   r,   r-   r    s(   


z_SubParsersAction.__call__r/   )r    r6   r7   r   r6  r   rT   r?  r   r  r  r,   r,   r
  r-   r5  d  s    r5  c                   @   s   e Zd ZdddZdS )_ExtendActionNc                 C   r#  r/   )r   r   r:   r   r  r$  r,   r,   r-   r    r%  z_ExtendAction.__call__r/   )r    r6   r7   r  r,   r,   r,   r-   rG    s    rG  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-   rT     r]   zFileType.__init__c              
   C   s   |dkrd| j v rtjS d| j v rtjS td| j  }t|zt|| j | j| j| j	W S  t
yG } z||d}td}t|| d }~ww )N-rH  wzargument "-" with mode %r)filenameerrorz$can't open '%(filename)s': %(error)s)rI  r3  stdinr4  r   r   r   rJ  rK  rL  OSErrorr   )r'   stringrE  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 )NrO  rP  r   c                 S   s   g | ]
}|d krt |qS )r   )r#   )r^   r)   r,   r,   r-   ra     s    z%FileType.__repr__.<locals>.<listcomp>c                 S   s$   g | ]\}}|d urd||f qS )Nr   r,   )r^   kwr)   r,   r,   r-   ra     s    r   )rI  rJ  rK  rL  r&   r   r    )r'   r`   r=  Zargs_strr,   r,   r-   r.     s   zFileType.__repr__)rH  r   NN)r    r6   r7   rT   r  r.   r,   r,   r,   r-   r     s
    
r   c                   @   r   )r   c                 K   s   |D ]
}t | |||  qd S r/   )r  )r'   r=  r*   r,   r,   r-   rT   
  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 v S r/   )r1   )r'   rF  r,   r,   r-   __contains__  r   zNamespace.__contains__N)r    r6   r7   rT   r\  r]  r,   r,   r,   r-   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 )Nry   Zstorestore_const
store_trueZstore_falser"   Zappend_constr)  rs   r0  parsersr   z^-\d+$|^-\d*\.\d+$)r	  r^  rT   descriptionargument_defaultprefix_charsconflict_handler_registriesregisterr  r  r  r!  r"  r&  r'  r*  r/  r5  rG  _get_handler_actions_option_string_actions_action_groups_mutually_exclusive_groups	_defaultsrM   rN   _negative_number_matcher_has_negative_number_optionals)r'   rb  rd  rc  re  r
  r,   r-   rT     s4   
z_ActionsContainer.__init__c                 C   s   | j |i }|||< d S r/   )rf  rC  )r'   registry_namer+   r   registryr,   r,   r-   rg  N  s   z_ActionsContainer.registerNc                 C   s   | j | ||S r/   )rf  r   )r'   rp  r+   r   r,   r,   r-   _registry_getR  r  z_ActionsContainer._registry_getc                 K   s2   | j | | jD ]}|j|v r||j |_q	d S r/   )rm  updateri  r   r   )r'   r=  ry   r,   r,   r-   set_defaultsX  s   

z_ActionsContainer.set_defaultsc                 C   s8   | j D ]}|j|kr|jd ur|j  S q| j|d S r/   )ri  r   r   rm  r   )r'   r   ry   r,   r,   r-   get_defaulta  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 )NrV   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 passedr1  z,length of metavar tuple does not match nargsr,   )rd  rw   r   _get_positional_kwargs_get_optional_kwargsrm  rc  _pop_action_classcallablerr  r   r   r   r1  r   r   _add_action)r'   r`   r=  charsr   Zaction_classry   	type_funcr,   r,   r-   r{   k  s>    





z_ActionsContainer.add_argumentc                 O   s&   t | g|R i |}| j| |S r/   )_ArgumentGrouprk  r"   )r'   r`   r=  r   r,   r,   r-   add_argument_group  s   z$_ActionsContainer.add_argument_groupc                 K   s    t | fi |}| j| |S r/   )_MutuallyExclusiveGrouprl  r"   )r'   r=  r   r,   r,   r-   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_conflictri  r"   	containerr   rj  rn  matchro  )r'   ry   r   r,   r,   r-   r{    s   


z_ActionsContainer._add_actionc                 C   s   | j | d S r/   )ri  remover   r,   r,   r-   _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)titlerb  re  )r   )rk  r  r   r   r  rb  re  r   rl  r  r   ri  r   r{  )r'   r  Ztitle_group_mapr   rE  Z	group_mapry   mutex_groupr,   r,   r-   _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   r=  rE  r,   r,   r-   rw    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   )optionrd  zNinvalid option string %(option)r: must start with a character %(prefix_chars)rrV   r   z%dest= is required for options like %rrQ  r   r  )	rd  r   r   r"   rw   r   lstripreplacer   )	r'   r`   r=  r   Zlong_option_stringsr   rE  r   Zdest_option_stringr,   r,   r-   rx    s0   


z&_ActionsContainer._get_optional_kwargsc                 C   s   | d|}| d||S )Nry   )r   rr  )r'   r=  r   ry   r,   r,   r-   ry    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)re  r   r   r   r   )r'   Zhandler_func_namerE  r,   r,   r-   rh    s   
z_ActionsContainer._get_handlerc                 C   sP   g }|j D ]}|| jv r| j| }|||f q|r&|  }||| d S d S r/   )r   rj  r"   rh  )r'   ry   Zconfl_optionalsr   Zconfl_optionalre  r,   r,   r-   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,   )r^   r   ry   r,   r,   r-   ra   9  s    z<_ActionsContainer._handle_conflict_error.<locals>.<listcomp>)r   rw   r&   r   )r'   ry   conflicting_actionsr   Zconflict_stringr,   r,   r-   _handle_conflict_error5  s   
z(_ActionsContainer._handle_conflict_errorc                 C   s>   |D ]\}}|j | | j|d  |j s|j| qd S r/   )r   r  rj  r   r  r  )r'   ry   r  r   r,   r,   r-   _handle_conflict_resolve>  s   z*_ActionsContainer._handle_conflict_resolver/   )r    r6   r7   rT   rg  rr  rt  ru  r{   r  r  r{  r  r  rw  rx  ry  rh  r  r  r  r  r,   r,   r
  r-   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 )Nre  rd  rc  rb  r,   )rC  re  rd  rc  r	  r~  rT   r  r   rf  ri  rj  rm  ro  rl  )r'   r  r  rb  r=  rs  Z
super_initr
  r,   r-   rT   O  s   z_ArgumentGroup.__init__c                    s    t t| |}| j| |S r/   )r	  r~  r{  r   r"   r   r
  r,   r-   r{  e  r  z_ArgumentGroup._add_actionc                    s    t t| | | j| d S r/   )r	  r~  r  r   r  r   r
  r,   r-   r  j  s   z_ArgumentGroup._remove_actionNNr    r6   r7   rT   r{  r  r  r,   r,   r
  r-   r~  M  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 r/   )r	  r  rT   r   
_container)r'   r  r   r
  r,   r-   rT   q  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'   ry   rE  r,   r,   r-   r{  v  s   z#_MutuallyExclusiveGroup._add_actionc                 C   s   | j | | j| d S r/   )r  r  r   r  r   r,   r,   r-   r  ~  s   z&_MutuallyExclusiveGroup._remove_action)Fr  r,   r,   r
  r-   r  o  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   NrQ  rT  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)rb  rd  rc  re  r   zpositional argumentsoptionsc                 S   s   | S r/   r,   )rW  r,   r,   r-   identity  r5   z)ArgumentParser.__init__.<locals>.identityr   rQ  hr;   rs   zshow this help message and exit)ry   r   rs   )r	  r   rT   _ospathbasenamer3  argvrR   rn   epilogformatter_classfromfile_prefix_charsadd_helpallow_abbrevexit_on_errorr  r   _positionals
_optionals_subparsersrg  r{   r   r  rm  r   rs  )r'   rR   rn   rb  r  parentsr  rd  r  rc  re  r  r  r  Z	superinitZ	add_groupr  Zdefault_prefixr[   defaultsr
  r,   r-   rT     sL   

zArgumentParser.__init__c                    r   )N)rR   rn   rb  r  re  r  c                    r   r,   r   r   r3   r,   r-   ra     r   z.ArgumentParser._get_kwargs.<locals>.<listcomp>r,   r   r,   r3   r-   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 argumentsr<  r  rb  ZsubcommandsrR   rc   ra  r   r,   )r  rT  r   rC  r   r   r  r  r   r1  _get_positional_actionsrl  rr   rn   rf   r   ry  r{  )	r'   r=  r  rb  rZ   r   rp   Zparsers_classry   r,   r,   r-   add_subparsers  s$   
zArgumentParser.add_subparsersc                 C   s&   |j r| j| |S | j| |S r/   )r   r  r{  r  r   r,   r,   r-   r{    s
   zArgumentParser._add_actionc                 C      dd | j D S )Nc                 S   s   g | ]}|j r|qS r,   r   r^   ry   r,   r,   r-   ra         
z8ArgumentParser._get_optional_actions.<locals>.<listcomp>ri  r3   r,   r,   r-   _get_optional_actions     z$ArgumentParser._get_optional_actionsc                 C   r  )Nc                 S   s   g | ]}|j s|qS r,   r   r  r,   r,   r-   ra     r  z:ArgumentParser._get_positional_actions.<locals>.<listcomp>r  r3   r,   r,   r-   r    r  z&ArgumentParser._get_positional_actionsc                 C   4   |  ||\}}|rtd}| |d|  |S Nzunrecognized arguments: %sr   )rB  r   rT  r&   r'   r`   r  r  rE  r,   r,   r-   
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 rU   )r3  r  r0   r   ri  r   r   r   r   r  rm  r  _parse_known_argsr   exc_inforT  r   rD  r   r   delattr)r'   r`   r  ry   r   errr,   r,   r-   rB  "  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 qT		|
}|d u rhd}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r8|jr|t| q|jd ur8t|jtr8t|jr8|jt|ju r8t|j	||j q|rH	tdd
|  	jD ],}|jrv|jD ]}|v r^ qKqTdd |jD }td}	|d
|  qKfS )NrV   r  rQ  AOrc   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   )ry   Zargument_stringsr   Zargument_valuesZconflict_actionrE  Zaction_name)action_conflictsr  seen_actionsseen_non_default_actionsr'   r,   r-   take_actionx  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 qtd}t||| | d }|d  }|||}|| } || }||||f qq|D ]\}}}||| q|S )NTrV   r  r   zignored explicit argument %r)_match_argumentr"   rd  rj  r   r   )start_indexoption_tuplery   r   explicit_argZmatch_argumentZaction_tuples	arg_countr|  charZnew_explicit_argZoptionals_maprE  stopr`   r   Zselected_patterns)r(   arg_strings_patternextrasoption_string_indicesr'   r  r,   r-   consume_optional  sP   


:z:ArgumentParser._parse_known_args.<locals>.consume_optionalc                    sn   j }| d  }||}t|D ]\}} | | |  }| |7 } || qt|d  d d < | S r/   )_match_arguments_partialziprw   )r  Zmatch_partialZselected_patternZ
arg_countsry   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,   )r^   r   )r  r,   r-   ra     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,   )rs   r   r   r  r,   r,   r-   ra   6  s    z#one of the arguments %s is requiredr   r/   )r  _read_args_from_filesrl  r   r   rC  r   iterr"   _parse_optionalr&   r   r  rD   rC   ri  r   r   r   r   r   r   r   r   r  
_get_valuerT  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_actionsry   r   r   rE  r,   )r  r(   r  r  r  r  r   r  r  r'   r  r  r-   r  I  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 r(  )r  r"   r   readr   convert_arg_line_to_argsr  r   rV  r3  r  rT  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  Y  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 argumentsrV   )_get_nargs_patternrM   r  r   r   r   r   r   r   r   rw   r   )r'   ry   r  nargs_patternr  Znargs_errorsrE  r,   r,   r-   r  \  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   rc   c                    s   g | ]}  |qS r,   )r  r  r3   r,   r-   ra   x  s    z;ArgumentParser._match_arguments_partial.<locals>.<listcomp>c                 S   r   r,   )rw   )r^   rW  r,   r,   r-   ra   |  r   )r   rw   r&   rM   r  r   rp   )r'   ro   r  r   r   Zactions_slicer  r  r,   r3   r-   r  r  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   rV   =r   c                 S   s   g | ]\}}}|qS r,   r,   )r^   ry   r   r  r,   r,   r-   ra     s    z2ArgumentParser._parse_optional.<locals>.<listcomp>)r  Zmatchesz4ambiguous option: %(option)s could match %(matches)sr   )rd  rj  rw   split_get_option_tuplesr&   r   rT  rn  r  ro  )
r'   r  ry   r   r  Zoption_tuplesr  r`   rE  r  r,   r,   r-   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   rV   r  r;   zunexpected option string: %s)rd  r  r  rj  r  r"   rT  r   )
r'   r   r   r|  Zoption_prefixr  ry   r   Zshort_option_prefixZshort_explicit_argr,   r,   r-   r    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  rc   rQ  )
r   r   r   r   r   r   r   r&   r   r  )r'   ry   r   r  r,   r,   r-   r    s(   z!ArgumentParser._get_nargs_patternc                 C   r  r  )parse_known_intermixed_argsr   rT  r&   r  r,   r,   r-   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} D ]
}|j|_|j	|_qw |  }z5|D ]	}|j|_d
|_q| jD ]	}	|	j|	_d
|	_q| 
||\}}
W |D ]}|j|_q| jD ]}	|	j|	_q|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,   r-   ra   /	  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   )r^   r   ry   r   r,   r-   ra   5	  s
    z;parse_intermixed_args: positional in mutuallyExclusiveGroup   )warnzDo not expect %s in %sF)r  r   r   rl  rn   r   Z
save_nargsr   r   Zsave_defaultrB  r   r   r   warningsr  r  r  r   Zsave_required)r'   r`   r  aZ
save_usagery   Zremaining_argsr  r   r   r  r,   r  r-   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  rV   c                       g | ]}  |qS r,   r  r^   vry   r'   r,   r-   ra   	  rb   z.ArgumentParser._get_values.<locals>.<listcomp>c                    r  r,   r  r  r  r,   r-   ra   	  rb   r   c                    r  r,   r  r  r  r,   r-   ra   	  rb   )r   r   r   r  r   r   r   r   r   r   r   r  _check_valuer   rw   r   )r'   ry   r(   r+   r  r  r,   r  r-   r  n	  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   rv  r    rV   )r   r+   z!invalid %(type)s value: %(value)r)rr  r   rz  r   r   r   r   r#   r   r3  r  r   r   )r'   ry   r  r}  rE  r   r*   r`   r,   r,   r-   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&   rv   r#   r   r   )r'   ry   r+   r`   rE  r,   r,   r-   r  	  s   zArgumentParser._check_valuec                 C   s$   |   }|| j| j| j | S r/   )r1  rr   rn   ri  rl  rf   )r'   rZ   r,   r,   r-   r   	  s
   zArgumentParser.format_usagec                 C   st   |   }|| j| j| j || j | jD ]}||j	 ||j |
|j |  q|| j | S r/   )r1  rr   rn   ri  rl  rl   rb  rk  rh   r  r|   r   ri   r  rf   )r'   rZ   Zaction_groupr,   r,   r-   rf   	  s   

zArgumentParser.format_helpc                 C   s   | j | jdS )Nr   )r  rR   r3   r,   r,   r-   r1  	  r4   zArgumentParser._get_formatterc                 C   "   |d u rt j}| |  | d S r/   )r3  r4  r2  r   r'   filer,   r,   r-   print_usage	     zArgumentParser.print_usagec                 C   r  r/   )r3  r4  r2  rf   r  r,   r,   r-   r,  	  r  zArgumentParser.print_helpc                 C   s$   |r|d u r	t j}|| d S d S r/   )r3  stderrwrite)r'   r   r  r,   r,   r-   r2  	  s
   zArgumentParser._print_messager   c                 C   s    |r	|  |tj t| d S r/   )r2  r3  r  r-  )r'   statusr   r,   r,   r-   r-  
  s   zArgumentParser.exitc                 C   s2   	 |  tj | j|d}| dtd|  d S )N)rR   r   r;   z%(prog)s: error: %(message)s
)r  r3  r  rR   r-  r   )r'   r   r`   r,   r,   r-   rT  
  s   zArgumentParser.errorr  r/   )r   N)"r    r6   r7   r   rT   r$   r  r{  r  r  r  rB  r  r  r  r  r  r  r  r  r  r  r  r  r  r   rf   r1  r  r,  r2  r-  rT  r  r,   r,   r
  r-   r     sZ    B

' w:-
1
M8



	r   )1__version____all__osr  rerM   sysr3  r   r   r   r   r   r   r   r   r   rD  r   r   r:   r   r   r	   r   r
   r   	Exceptionr   r   r   r   r  r  r  r!  r"  r&  r'  r*  r/  r5  rG  r   r   r^  r~  r  r   r,   r,   r,   r-   <module>   s`   =   	])#&]7  8"