<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
a
    XC?hG                    @   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                   @   s$   e Zd Zdd Zdd Zdd ZdS )_AttributeHolderc                 C   s   t | j}g }i }|  D ]}|t| q|  D ],\}}| rZ|d||f  q6|||< q6|rz|dt|  d|d|f S )N%s=%rz**%s%s(%s), )type__name__	_get_argsappendrepr_get_kwargsisidentifierjoin)selfZ	type_namearg_stringsZ	star_argsargnamevalue r+   -/opt/alt/python39/lib64/python3.9/argparse.py__repr__t   s    

z_AttributeHolder.__repr__c                 C   s   t | j S N)list__dict__itemsr&   r+   r+   r,   r#      s    z_AttributeHolder._get_kwargsc                 C   s   g S r.   r+   r2   r+   r+   r,   r       s    z_AttributeHolder._get_argsN)r   
__module____qualname__r-   r#   r    r+   r+   r+   r,   r   k   s   	r   c                 C   s6   | d u rg S t | tu r$| d d  S dd l}|| S Nr   )r   r/   copy)r1   r6   r+   r+   r,   _copy_items   s    r7   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   r8      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   rD   r?   rE   r2   r+   r+   r,   _indent   s    zHelpFormatter._indentc                 C   s"   |  j | j8  _ |  jd8  _d S rR   rT   r2   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headingr1   )r&   rW   rX   rY   r+   r+   r,   rQ      s    zHelpFormatter._Section.__init__c                 C   s   | j d ur| j  | jj}|dd | jD }| j d urD| j  |sLdS | jturz| jd urz| jj}d|d| jf }nd}|d||dgS )Nc                 S   s   g | ]\}}|| qS r+   r+   ).0funcargsr+   r+   r,   
<listcomp>       z6HelpFormatter._Section.format_help.<locals>.<listcomp> z%*s%s:

)	rX   rW   rU   _join_partsr1   rV   rY   r   rD   )r&   r%   Z	item_helpZcurrent_indentrY   r+   r+   r,   format_help   s    



z"HelpFormatter._Section.format_help)N)r   r3   r4   rQ   rb   r+   r+   r+   r,   rG      s   
rG   c                 C   s   | j j||f d S r.   )rI   r1   r!   )r&   r[   r\   r+   r+   r,   	_add_item   s    zHelpFormatter._add_itemc                 C   s0   |    | | | j|}| |jg  || _d S r.   )rU   rG   rI   rc   rb   )r&   rY   Zsectionr+   r+   r,   start_section   s    zHelpFormatter.start_sectionc                 C   s   | j j| _ |   d S r.   )rI   rX   rV   r2   r+   r+   r,   end_section   s    
zHelpFormatter.end_sectionc                 C   s$   |t ur |d ur | | j|g d S r.   )r   rc   _format_text)r&   textr+   r+   r,   add_text   s    zHelpFormatter.add_textc                 C   s&   |t ur"||||f}| | j| d S r.   )r   rc   _format_usage)r&   usageactionsgroupsprefixr\   r+   r+   r,   	add_usage   s    zHelpFormatter.add_usagec                 C   sr   |j turn| j}||g}| |D ]}||| q$ttt|}|| j }t| j	|| _	| 
| j|g d S r.   )helpr   _format_action_invocation_iter_indented_subactionsr!   rA   maplenrD   rF   rc   _format_action)r&   actionZget_invocationZinvocations	subactionZinvocation_lengthZaction_lengthr+   r+   r,   add_argument  s    


zHelpFormatter.add_argumentc                 C   s   |D ]}|  | qd S r.   )rw   )r&   rk   ru   r+   r+   r,   add_arguments  s    zHelpFormatter.add_argumentsc                 C   s.   | j  }|r*| jd|}|dd }|S )N

r`   )rH   rb   rN   substrip)r&   ro   r+   r+   r,   rb     s
    
zHelpFormatter.format_helpc                 C   s   d dd |D S )Nr_   c                 S   s   g | ]}|r|t ur|qS r+   )r   )rZ   partr+   r+   r,   r]   "  s   z-HelpFormatter._join_parts.<locals>.<listcomp>)r%   )r&   Zpart_stringsr+   r+   r,   ra   !  s    
zHelpFormatter._join_partsc                    s  |d u rt d}|d ur,|t| jd }n|d u rL|sLdt| jd }n|d u rdt| jd }g }g }|D ] }|jr|| qr|| qr| j}	|	|| |}
ddd ||
fD }| j| j  t	|t	|  krd}|	||}|	||}t
||}t
||}d fdd		}t	|t	| d
  krdt	|t	| d  }|r|||g| ||}|||| n |r||g| ||}n|g}nZdt	| }|| }|||}t	|dkrg }|||| |||| |g| }d|}d||f S )Nzusage: rO   z%(prog)s c                 S   s   g | ]}|r|qS r+   r+   )rZ   sr+   r+   r,   r]   B  r^   z/HelpFormatter._format_usage.<locals>.<listcomp>z%\(.*?\)+(?=\s|$)|\[.*?\]+(?=\s|$)|\S+c                    s   g }g }|d urt |d }nt |d }| D ]Z}|d t |  krn|rn||d|  g }t |d }|| |t |d 7 }q.|r||d|  |d ur|d t |d  |d< |S )NrS   r~   r   )rs   r!   r%   )partsindentrm   lineslineZline_lenr|   
text_widthr+   r,   	get_linesV  s"    
z.HelpFormatter._format_usage.<locals>.get_linesg      ?rS   r`   z%s%s

)N)_dictr>   option_stringsr!   _format_actions_usager%   rC   rD   rs   rJ   findallextend)r&   rj   rk   rl   rm   rO   	optionalspositionalsru   formatZaction_usageZpart_regexpZ	opt_usageZ	pos_usageZ	opt_partsZ	pos_partsr   r   r   r   r+   r   r,   ri   &  sX    





zHelpFormatter._format_usagec              	   C   s  t  }i }|D ]*}|js(td| z||jd }W n tyR   Y qY q0 |t|j }||| |jkr|jD ]}|| qz|js||v r||  d7  < nd||< ||v r||  d7  < nd||< nF||v r||  d7  < nd||< ||v r||  d7  < nd||< t|d	 |D ]}	d
||	< q*qg }
t|D ]"\}	}|j	t
u r|
d  ||	d
kr||	 n"||	d	 d
krj||	d	  n|js| |}| ||}||v r|d dkr|d dkr|d	d }|
| nf|jd }|jdkr$| }n"| |}| ||}d||f }|js`||vr`d| }|
| qHt|ddD ]}	||	 g|
|	|	< qzd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 (()rS   |%s %s[%s]T)reverser~   c                 S   s   g | ]}|d ur|qS r.   r+   )rZ   itemr+   r+   r,   r]     r^   z7HelpFormatter._format_actions_usage.<locals>.<listcomp>z[\[(]z[\])]z(%s) z\1 (%s)z%s *%sr_   z\(([^|]*)\))set_group_actions
ValueErrorindexrs   addrequiredrange	enumeratero   r   r!   getpopr   #_get_default_metavar_for_positional_format_argsnargsformat_usage!_get_default_metavar_for_optionalsortedr%   rJ   rz   r{   )r&   rk   rl   group_actionsZinsertsgroupstartendru   ir   defaultr|   option_stringargs_stringrg   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~   ry   )r   r>   rA   rC   rD   
_fill_text)r&   rg   r   r   r+   r+   r,   rf     s
    
zHelpFormatter._format_textc                 C   sN  t | jd | j}t| j| d}|| j d }| |}|jsV| jd|f}d| }n@t||kr~| jd||f}d| }d}n| jd|f}d| }|}|g}|jr|j	 r| 
|}	|	r"| |	|}
|d|d|
d f  |
dd  D ]}|d|d|f  qn|ds"|d | |D ]}|| | q,| |S )	Nr8   r   r_   z%*s%s
z	%*s%-*s  r   rS   r`   )r@   rF   rB   rA   rC   rD   rp   ro   rs   r{   _expand_help_split_linesr!   endswithrq   rt   ra   )r&   ru   Zhelp_positionZ
help_widthZaction_widthZaction_headertupZindent_firstr   Z	help_textZ
help_linesr   rv   r+   r+   r,   rt     s:    




zHelpFormatter._format_actionc                 C   s   |j s&| |}| ||d\}|S g }|jdkrB||j  n4| |}| ||}|j D ]}|d||f  q^d|S d S )NrS   r   r   r   )	r   r   _metavar_formatterr   r   r   r   r!   r%   )r&   ru   r   metavarr   r   r   r+   r+   r,   rp   '  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   s   g | ]}t |qS r+   str)rZ   Zchoicer+   r+   r,   r]   C  r^   z4HelpFormatter._metavar_formatter.<locals>.<listcomp>z{%s},c                    s   t  tr S  f|  S d S r.   )
isinstancetuple)Z
tuple_sizeresultr+   r,   r   H  s    
z0HelpFormatter._metavar_formatter.<locals>.format)r   choicesr%   )r&   ru   default_metavarZchoice_strsr   r+   r   r,   r   ?  s    

z HelpFormatter._metavar_formatterc                 C   s  |  ||}|jd u r$d|d }n|jtkr<d|d }n|jtkrn|d}t|dkrdd| }nd| }n|jtkrd|d }n|jtkrd}nr|jtkrd	|d }nZ|jtkrd
}nJzdd t	|jD }W n t
y   tdd Y n0 d|||j }|S )N%srS   r   r8   z[%s [%s ...]]z[%s ...]z%s [%s ...]r   z%s ...r_   c                 S   s   g | ]}d qS )r   r+   )rZ   r   r+   r+   r,   r]   e  r^   z.HelpFormatter._format_args.<locals>.<listcomp>zinvalid nargs valuer~   )r   r   r   r   rs   r   r   r   r   r   	TypeErrorr   r%   )r&   ru   r   Zget_metavarr   r   Zformatsr+   r+   r,   r   O  s0    








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rddd |d D }||d< | 	|| S )Nr}   r   r   r   c                 S   s   g | ]}t |qS r+   r   rZ   cr+   r+   r,   r]   t  r^   z.HelpFormatter._expand_help.<locals>.<listcomp>)
r   varsr>   r/   r   hasattrr   r   r%   _get_help_string)r&   ru   paramsr)   Zchoices_strr+   r+   r,   r   k  s    zHelpFormatter._expand_helpc                 c   s>   z
|j }W n ty   Y n0 |   | E d H  |   d S r.   )_get_subactionsAttributeErrorrU   rV   )r&   ru   Zget_subactionsr+   r+   r,   rq   x  s    
z'HelpFormatter._iter_indented_subactionsc                 C   s&   | j d| }dd l}|||S )Nr~   r   )rM   rz   r{   textwrapZwrap)r&   rg   rP   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)rM   rz   r{   r   Zfill)r&   rg   rP   r   r   r+   r+   r,   r     s    zHelpFormatter._fill_textc                 C   s   |j S r.   )ro   r&   ru   r+   r+   r,   r     s    zHelpFormatter._get_help_stringc                 C   s
   |j  S r.   )destupperr   r+   r+   r,   r     s    z/HelpFormatter._get_default_metavar_for_optionalc                 C   s   |j S r.   )r   r   r+   r+   r,   r     s    z1HelpFormatter._get_default_metavar_for_positional)r8   r9   N)N)r   r3   r4   rQ   rU   rV   objectrG   rc   rd   re   rh   rn   rw   rx   rb   ra   ri   r   rf   rt   rp   r   r   r   rq   r   r   r   r   r   r+   r+   r+   r,   r      s<   	   

`j0
r   c                   @   s   e Zd Zdd ZdS )r   c                    s    d  fdd|jddD S )Nr_   c                 3   s   | ]} | V  qd S r.   r+   )rZ   r   r   r+   r,   	<genexpr>  r^   z9RawDescriptionHelpFormatter._fill_text.<locals>.<genexpr>T)keepends)r%   
splitlines)r&   rg   rP   r   r+   r   r,   r     s    z&RawDescriptionHelpFormatter._fill_textN)r   r3   r4   r   r+   r+   r+   r,   r     s   r   c                   @   s   e Zd Zdd ZdS )r	   c                 C   s   |  S r.   )r   )r&   rg   rP   r+   r+   r,   r     s    z!RawTextHelpFormatter._split_linesN)r   r3   r4   r   r+   r+   r+   r,   r	     s   r	   c                   @   s   e Zd Zdd ZdS )r   c                 C   s>   |j }d|j vr:|jtur:ttg}|js2|j|v r:|d7 }|S )Nz
%(default) (default: %(default)s))ro   r   r   r   r   r   r   )r&   ru   ro   Zdefaulting_nargsr+   r+   r,   r     s    

z.ArgumentDefaultsHelpFormatter._get_help_stringN)r   r3   r4   r   r+   r+   r+   r,   r     s   r   c                   @   s   e Zd Zdd Zdd ZdS )r
   c                 C   s   |j jS r.   r   r   r   r+   r+   r,   r     s    z:MetavarTypeHelpFormatter._get_default_metavar_for_optionalc                 C   s   |j jS r.   r   r   r+   r+   r,   r     s    z<MetavarTypeHelpFormatter._get_default_metavar_for_positionalN)r   r3   r4   r   r   r+   r+   r+   r,   r
     s   r
   c                 C   sh   | d u rd S | j rd| j S | jd tfvr2| jS | jd tfvrF| jS | jr`dd| j d S d S d S )N/{r   })r   r%   r   r   r   r   )argumentr+   r+   r,   _get_action_name  s    r   c                   @   s   e Zd Zdd Zdd ZdS )r   c                 C   s   t || _|| _d S r.   )r   argument_namemessage)r&   r   r   r+   r+   r,   rQ     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   r3   r4   rQ   r   r+   r+   r+   r,   r     s   r   c                   @   s   e Zd ZdS )r   N)r   r3   r4   r+   r+   r+   r,   r     s   r   c                   @   s0   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   ro   r   r&   r   r   r   r   r   r   r   r   ro   r   r+   r+   r,   rQ   4  s    zAction.__init__c                    s   g d} fdd|D S )Nr   c                    s   g | ]}|t  |fqS r+   getattrrZ   r)   r2   r+   r,   r]   W  r^   z&Action._get_kwargs.<locals>.<listcomp>r+   r&   namesr+   r2   r,   r#   J  s    zAction._get_kwargsc                 C   s
   | j d S r5   r   r2   r+   r+   r,   r   Y  s    zAction.format_usagec                 C   s   t tdd S )Nz.__call__() not defined)NotImplementedErrorr   r&   parser	namespacevaluesr   r+   r+   r,   __call__\  s    zAction.__call__)NNNNNFNN)N)r   r3   r4   rQ   r#   r   r   r+   r+   r+   r,   r     s   6        
r   c                       s0   e Zd Zd	 fdd	Zd
ddZdd Z  ZS )r   NFc	                    s~   g }	|D ]2}
|	 |
 |
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-r8   r   r   )	r   r   r   r   r   r   r   ro   r   )r!   
startswithr   superrQ   )r&   r   r   r   r   r   r   ro   r   Z_option_stringsr   	__class__r+   r,   rQ   `  s&    


zBooleanOptionalAction.__init__c                 C   s$   || j v r t|| j|d  d S )Nr   )r   setattrr   r   r   r+   r+   r,   r     s    
zBooleanOptionalAction.__call__c                 C   s   d | jS )Nz | )r%   r   r2   r+   r+   r,   r     s    z"BooleanOptionalAction.format_usage)NNNFNN)N)r   r3   r4   rQ   r   r   __classcell__r+   r+   r   r,   r   _  s          
r   c                       s(   e Zd Zd fdd	ZdddZ  ZS )	_StoreActionNFc                    sT   |dkrt d|d 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   rQ   r   r   r+   r,   rQ     s     
z_StoreAction.__init__c                 C   s   t || j| d S r.   )r   r   r   r+   r+   r,   r     s    z_StoreAction.__call__)NNNNNFNN)Nr   r3   r4   rQ   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 )	_StoreConstActionNFc              	      s"   t t| j||d||||d d S )Nr   )r   r   r   r   r   r   ro   )r   r   rQ   r&   r   r   r   r   r   ro   r   r   r+   r,   rQ     s    
z_StoreConstAction.__init__c                 C   s   t || j| j d S r.   )r   r   r   r   r+   r+   r,   r     s    z_StoreConstAction.__call__)NFNN)Nr   r+   r+   r   r,   r     s       r   c                       s   e Zd Zd fdd	Z  ZS )_StoreTrueActionFNc                    s    t t| j||d|||d d S )NTr   r   r   r   r   ro   )r   r   rQ   r&   r   r   r   r   ro   r   r+   r,   rQ     s    
z_StoreTrueAction.__init__)FFNr   r3   r4   rQ   r   r+   r+   r   r,   r     s      r   c                       s   e Zd Zd fdd	Z  ZS )_StoreFalseActionTFNc                    s    t t| j||d|||d d S )NFr   )r   r  rQ   r  r   r+   r,   rQ     s    
z_StoreFalseAction.__init__)TFNr  r+   r+   r   r,   r    s      r  c                       s(   e Zd Zd fdd	ZdddZ  ZS )	_AppendActionNFc                    sT   |dkrt d|d ur,|tkr,t dt tt| j|||||||||	|
d
 d S )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  rQ   r   r   r+   r,   rQ     s     
z_AppendAction.__init__c                 C   s2   t || jd }t|}|| t|| j| d S r.   )r   r   r7   r!   r   r&   r   r   r   r   r1   r+   r+   r,   r     s    
z_AppendAction.__call__)NNNNNFNN)Nr   r+   r+   r   r,   r    s           r  c                       s(   e Zd Zd fdd	ZdddZ  ZS )	_AppendConstActionNFc              
      s$   t t| j||d|||||d d S )Nr   )r   r   r   r   r   r   ro   r   )r   r  rQ   r   r   r+   r,   rQ     s    
z_AppendConstAction.__init__c                 C   s4   t || jd }t|}|| j t|| j| d S r.   )r   r   r7   r!   r   r   r  r+   r+   r,   r     s    z_AppendConstAction.__call__)NFNN)Nr   r+   r+   r   r,   r  
  s       r  c                       s(   e Zd Zd fdd	ZdddZ  ZS )	_CountActionNFc                    s    t t| j||d|||d d S )Nr   )r   r   r   r   r   ro   )r   r  rQ   r  r   r+   r,   rQ   '  s    
z_CountAction.__init__c                 C   s0   t || jd }|d u rd}t|| j|d  d S Nr   rS   )r   r   r   )r&   r   r   r   r   countr+   r+   r,   r   5  s    z_CountAction.__call__)NFN)Nr   r+   r+   r   r,   r  %  s
      r  c                       s.   e Zd Zeedf fdd	ZdddZ  ZS )_HelpActionNc                    s   t t| j|||d|d d S Nr   )r   r   r   r   ro   )r   r
  rQ   )r&   r   r   r   ro   r   r+   r,   rQ   >  s    
z_HelpAction.__init__c                 C   s   |   |  d S r.   )
print_helpexitr   r+   r+   r,   r   J  s    z_HelpAction.__call__)Nr   r3   r4   r   rQ   r   r   r+   r+   r   r,   r
  <  s
   r
  c                       s0   e Zd Zdeedf fdd	ZdddZ  ZS )_VersionActionNz&show program's version number and exitc                    s$   t t| j|||d|d || _d S r  )r   r  rQ   version)r&   r   r  r   r   ro   r   r+   r,   rQ   Q  s    
z_VersionAction.__init__c                 C   sD   | j }|d u r|j }| }|| || tj |  d S r.   )r  _get_formatterrh   _print_messagerb   _sysstdoutr  )r&   r   r   r   r   r  rW   r+   r+   r,   r   _  s    
z_VersionAction.__call__)Nr  r+   r+   r   r,   r  O  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   ro   r   )r%   r   r  _ChoicesPseudoActionrQ   )r&   r)   aliasesro   r   r   Zsupr   r+   r,   rQ   m  s    
z/_SubParsersAction._ChoicesPseudoAction.__init__r  r+   r+   r   r,   r  k  s   r  FNc              	      s<   || _ || _i | _g | _tt| j||t| j|||d d S )N)r   r   r   r   r   ro   r   )_prog_prefix_parser_class_name_parser_map_choices_actionsr   r  rQ   r   )r&   r   rO   parser_classr   r   ro   r   r   r+   r,   rQ   u  s    	
z_SubParsersAction.__init__c                 K   s   | dd u r d| j|f |d< |dd}d|v rX|d}| |||}| j| | jf i |}|| j|< |D ]}|| j|< qv|S )NrO   r   r  r+   ro   )r   r  r   r  r  r!   r  r  )r&   r)   kwargsr  ro   Zchoice_actionr   aliasr+   r+   r,   
add_parser  s    

z_SubParsersAction.add_parserc                 C   s   | j S r.   )r  r2   r+   r+   r,   r     s    z!_SubParsersAction._get_subactionsc                 C   s   |d }|dd  }| j tur,t|| j | z| j| }W n: tyt   |d| jd}td| }t| |Y n0 ||d \}	}t	|	
 D ]\}
}t||
| q|rt	|tg  t|t| d S )Nr   rS   r   )parser_namer   z5unknown parser %(parser_name)r (choices: %(choices)s))r   r   r   r  KeyErrorr%   r   r   parse_known_argsr   r1   
setdefault_UNRECOGNIZED_ARGS_ATTRr   r   )r&   r   r   r   r   r   r'   r\   msgZsubnamespacekeyr*   r+   r+   r,   r     s$    

	z_SubParsersAction.__call__)N)r   r3   r4   r   r  r   rQ   r  r   r   r   r+   r+   r   r,   r  i  s   r  c                   @   s   e Zd ZdddZdS )_ExtendActionNc                 C   s2   t || jd }t|}|| t|| j| d S r.   )r   r   r7   r   r   r  r+   r+   r,   r     s    
z_ExtendAction.__call__)N)r   r3   r4   r   r+   r+   r+   r,   r'    s   r'  c                   @   s&   e Zd Zd
ddZdd Zdd	 ZdS )r   rr   Nc                 C   s   || _ || _|| _|| _d S r.   )_mode_bufsize	_encoding_errors)r&   modebufsizeencodingerrorsr+   r+   r,   rQ     s    zFileType.__init__c              
      s   |dkrnd j v r*d j v r$tjjS tjS t fdddD rXd j v rRt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|| W Y d }~n
d }~0 0 d S )
N-r(  bc                 3   s   | ]}| j v V  qd S r.   )r)  r   r2   r+   r,   r     r^   z$FileType.__call__.<locals>.<genexpr>Zwaxzargument "-" with mode %r)filenameerrorz$can't open '%(filename)s': %(error)s)r)  r  stdinbufferanyr  r   r   r   r*  r+  r,  OSErrorr   )r&   stringr%  er\   r   r+   r2   r,   r     s    

zFileType.__call__c                 C   sT   | j | jf}d| jfd| jfg}ddd |D dd |D  }dt| j|f S )Nr/  r0  r   c                 S   s   g | ]}|d krt |qS )r   )r"   )rZ   r(   r+   r+   r,   r]     r^   z%FileType.__repr__.<locals>.<listcomp>c                 S   s$   g | ]\}}|d urd||f qS )Nr   r+   )rZ   kwr(   r+   r+   r,   r]      s   r   )r)  r*  r+  r,  r%   r   r   )r&   r\   r  Zargs_strr+   r+   r,   r-     s    zFileType.__repr__)r(  r   NN)r   r3   r4   rQ   r   r-   r+   r+   r+   r,   r     s   
r   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )r   c                 K   s   |D ]}t | |||  qd S r.   )r   )r&   r  r)   r+   r+   r,   rQ     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.   )r0   )r&   r&  r+   r+   r,   __contains__  s    zNamespace.__contains__N)r   r3   r4   rQ   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 )Nru   ZstoreZstore_const
store_trueZstore_falser!   Zappend_constr	  ro   r  parsersr   z^-\d+$|^-\d*\.\d+$)r   r@  rQ   descriptionargument_defaultprefix_charsconflict_handler_registriesregisterr   r   r   r  r  r  r  r
  r  r  r'  _get_handler_actions_option_string_actions_action_groups_mutually_exclusive_groups	_defaultsrJ   rK   _negative_number_matcher_has_negative_number_optionals)r&   rC  rE  rD  rF  r   r+   r,   rQ     s4    z_ActionsContainer.__init__c                 C   s   | j |i }|||< d S r.   )rG  r#  )r&   registry_namer*   r   registryr+   r+   r,   rH  S  s    z_ActionsContainer.registerNc                 C   s   | j | ||S r.   )rG  r   )r&   rQ  r*   r   r+   r+   r,   _registry_getW  s    z_ActionsContainer._registry_getc                 K   s2   | j | | jD ]}|j|v r||j |_qd S r.   )rN  updaterJ  r   r   )r&   r  ru   r+   r+   r,   set_defaults]  s    

z_ActionsContainer.set_defaultsc                 C   s8   | j D ]"}|j|kr|jd ur|j  S q| j|d S r.   )rJ  r   r   rN  r   )r&   r   ru   r+   r+   r,   get_defaultf  s    
z_ActionsContainer.get_defaultc                 O   sP  | j }|r&t|dkrL|d d |vrL|r:d|v r:td| j|i |}n| j|i |}d|vr|d }|| jv r| j| |d< n| jd ur| j|d< | |}t|std|f |f i |}| 	d|j
|j
}t|std|f |tu rtd	|f t| d
rFz|  |d  W n tyD   tdY n0 | |S )NrS   r   r   z+dest supplied twice for positional argumentr   zunknown action "%s"r   %r is not callablez<%r is a FileType class object, instance of it must be passedr  z,length of metavar tuple does not match nargs)rE  rs   r   _get_positional_kwargs_get_optional_kwargsrN  rD  _pop_action_classcallablerS  r   r   r   r  r   r   _add_action)r&   r\   r  charsr   Zaction_classru   	type_funcr+   r+   r,   rw   p  s:    	 




z_ActionsContainer.add_argumentc                 O   s&   t | g|R i |}| j| |S r.   )_ArgumentGrouprL  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.   )_MutuallyExclusiveGrouprM  r!   )r&   r  r   r+   r+   r,   add_mutually_exclusive_group  s    z._ActionsContainer.add_mutually_exclusive_groupc                 C   s`   |  | | j| | |_|jD ]}|| j|< q"|jD ]"}| j|r8| js8| jd q8|S )NT)	_check_conflictrJ  r!   	containerr   rK  rO  matchrP  )r&   ru   r   r+   r+   r,   r\    s    


z_ActionsContainer._add_actionc                 C   s   | j | d S r.   )rJ  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 ]D}|j|vrn| j|j|j|jd||j< |jD ]}||j ||< qtqD|jD ]&}| j	|j
d}|jD ]}|||< qq|jD ]}||| | qd S )Nz.cannot merge actions - two groups are named %r)titlerC  rF  )r   )rL  rh  r   r   r`  rC  rF  r   rM  rb  r   rJ  r   r\  )r&   rd  Ztitle_group_mapr   r%  Z	group_mapru   mutex_groupr+   r+   r,   _add_container_actions  s0    







z(_ActionsContainer._add_container_actionsc                 K   s^   d|v rt d}t||dttfvr2d|d< |dtkrPd|vrPd|d< t||g dS )Nr   z1'required' is an invalid argument for positionalsr   Tr   r   r   )r   r   r   r   r   r   )r&   r   r  r%  r+   r+   r,   rX    s    z(_ActionsContainer._get_positional_kwargsc           	      O   s   g }g }|D ]`}|d | j vr>|| j d}td}t|| || t|dkr|d | j v r|| q|dd }|d u r|r|d }n|d }|| j }|std}t|| |dd}t|||d	S )
Nr   )optionrE  zNinvalid option string %(option)r: must start with a character %(prefix_chars)rrS   r   z%dest= is required for options like %rr1  r   rk  )	rE  r   r   r!   rs   r   lstripreplacer   )	r&   r\   r  r   Zlong_option_stringsr   r%  r   Zdest_option_stringr+   r+   r,   rY    s.    

z&_ActionsContainer._get_optional_kwargsc                 C   s   | d|}| d||S )Nru   )r   rS  )r&   r  r   ru   r+   r+   r,   rZ    s    z#_ActionsContainer._pop_action_classc                 C   sD   d| j  }zt| |W S  ty>   td}t|| j  Y n0 d S )Nz_handle_conflict_%sz%invalid conflict_resolution value: %r)rF  r   r   r   r   )r&   Zhandler_func_namer%  r+   r+   r,   rI  #  s    
z_ActionsContainer._get_handlerc                 C   sL   g }|j D ]&}|| jv r
| j| }|||f q
|rH|  }||| d S r.   )r   rK  r!   rI  )r&   ru   Zconfl_optionalsr   Zconfl_optionalrF  r+   r+   r,   rc  ,  s    


z!_ActionsContainer._check_conflictc                 C   s6   t ddt|}ddd |D }t||| d S )Nzconflicting option string: %szconflicting option strings: %sr   c                 S   s   g | ]\}}|qS r+   r+   )rZ   r   ru   r+   r+   r,   r]   >  s   z<_ActionsContainer._handle_conflict_error.<locals>.<listcomp>)r   rs   r%   r   )r&   ru   conflicting_actionsr   Zconflict_stringr+   r+   r,   _handle_conflict_error:  s    
z(_ActionsContainer._handle_conflict_errorc                 C   s>   |D ]4\}}|j | | j|d  |j s|j| qd S r.   )r   rf  rK  r   rd  rg  )r&   ru   ro  r   r+   r+   r,   _handle_conflict_resolveC  s
    z*_ActionsContainer._handle_conflict_resolve)N)N)r   r3   r4   rQ   rH  rS  rU  rV  rw   r`  rb  r\  rg  rj  rX  rY  rZ  rI  rc  rp  rq  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}|f d|i| || _g | _|j	| _	|j
| _
|j| _|j| _|j| _|j| _d S )NrF  rE  rD  rC  )r#  rF  rE  rD  r   r_  rQ   rh  r   rG  rJ  rK  rN  rP  rM  )r&   rd  rh  rC  r  rT  Z
super_initr   r+   r,   rQ   T  s    z_ArgumentGroup.__init__c                    s    t t| |}| j| |S r.   )r   r_  r\  r   r!   r   r   r+   r,   r\  j  s    z_ArgumentGroup._add_actionc                    s    t t| | | j| d S r.   )r   r_  rg  r   rf  r   r   r+   r,   rg  o  s    z_ArgumentGroup._remove_action)NNr   r3   r4   rQ   r\  rg  r   r+   r+   r   r,   r_  R  s   r_  c                       s.   e Zd Zd fdd	Zdd Zdd Z  ZS )	ra  Fc                    s    t t| | || _|| _d S r.   )r   ra  rQ   r   
_container)r&   rd  r   r   r+   r,   rQ   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   rs  r\  r   r!   )r&   ru   r%  r+   r+   r,   r\  {  s    z#_MutuallyExclusiveGroup._add_actionc                 C   s   | j | | j| d S r.   )rs  rg  r   rf  r   r+   r+   r,   rg    s    z&_MutuallyExclusiveGroup._remove_action)Frr  r+   r+   r   r,   ra  t  s   ra  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
dAddZdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ ZdBd%d&ZdCd'd(Zd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 Zd3d4 ZdDd5d6ZdEd7d8ZdFd9d:ZdGd<d=Zd>d? Z   Z!S )Hr   Nr1  r4  Tc              	      s&  t t| j}||||	|
d |d u r6tjtjd }|| _|| _	|| _
|| _|| _|| _|| _|| _| j}|td| _|td| _d | _dd }| dd | d|v rdn|d }| jr| j|d	 |d
 d dttdd |D ]:}| | z
|j}W n ty   Y q0 | j| qd S )N)rC  rE  rD  rF  r   zpositional argumentszoptional argumentsc                 S   s   | S r.   r+   )r9  r+   r+   r,   identity  s    z)ArgumentParser.__init__.<locals>.identityr   r1  hr8   ro   zshow this help message and exit)ru   r   ro   )r   r   rQ   _ospathbasenamer  argvrO   rj   epilogformatter_classfromfile_prefix_charsadd_helpallow_abbrevexit_on_errorr`  r   _positionals
_optionals_subparsersrH  rw   r   rj  rN  r   rT  )r&   rO   rj   rC  rz  parentsr{  rE  r|  rD  rF  r}  r~  r  Z	superinitZ	add_grouprt  Zdefault_prefixrX   defaultsr   r+   r,   rQ     sH    

zArgumentParser.__init__c                    s   g d} fdd|D S )N)rO   rj   rC  r{  rF  r}  c                    s   g | ]}|t  |fqS r+   r   r   r2   r+   r,   r]     r^   z.ArgumentParser._get_kwargs.<locals>.<listcomp>r+   r   r+   r2   r,   r#     s    zArgumentParser._get_kwargsc           	      K   s   | j d ur| td |dt|  d|v s8d|v rht|dd}t|dd }| ||| _ n| j| _ |dd u r| 	 }| 
 }| j}|| j||d |  |d< | |d}|f d	g i|}| j | |S )
Nz(cannot have multiple subparser argumentsr  rh  rC  ZsubcommandsrO   r_   rB  r   )r  r4  r   r#  r   r   r`  r  r   r  _get_positional_actionsrM  rn   rj   rb   r{   rZ  r\  )	r&   r  rh  rC  rW   r   rl   Zparsers_classru   r+   r+   r,   add_subparsers  s$    
zArgumentParser.add_subparsersc                 C   s$   |j r| j| n| j| |S r.   )r   r  r\  r  r   r+   r+   r,   r\    s    zArgumentParser._add_actionc                 C   s   dd | j D S )Nc                 S   s   g | ]}|j r|qS r+   r   rZ   ru   r+   r+   r,   r]     s   z8ArgumentParser._get_optional_actions.<locals>.<listcomp>rJ  r2   r+   r+   r,   _get_optional_actions  s    z$ArgumentParser._get_optional_actionsc                 C   s   dd | j D S )Nc                 S   s   g | ]}|j s|qS r+   r   r  r+   r+   r,   r]     s   z:ArgumentParser._get_positional_actions.<locals>.<listcomp>r  r2   r+   r+   r,   r    s    z&ArgumentParser._get_positional_actionsc                 C   s4   |  ||\}}|r0td}| |d|  |S Nzunrecognized arguments: %sr~   )r"  r   r4  r%   r&   r\   r   ry  r%  r+   r+   r,   
parse_args   s
    zArgumentParser.parse_argsc                 C   s  |d u rt jdd  }nt|}|d u r.t }| jD ]4}|jtur4t||js4|jtur4t	||j|j q4| j
D ] }t||spt	||| j
|  qp| jrz| ||\}}W q ty   t  d }| t| Y q0 n| ||\}}t|tr|t|t t|t ||fS rR   )r  ry  r/   r   rJ  r   r   r   r   r   rN  r  _parse_known_argsr   exc_infor4  r   r$  r   r   delattr)r&   r\   r   ru   r   errr+   r+   r,   r"  '  s0    





zArgumentParser.parse_known_argsc                    s  	j d ur	i  	jD ]R}|j}t|jD ]<\}} |g }||d |  |||d d   q2qi g }t}	t|	D ]^\}}
|
dkr|d |	D ]}
|d qq		|
}|d u rd}n||< d}|| qd
|t t d 	fdd		fd	d
}	 	fdd}g d
r`t}nd}
|krt
fddD }
|kr|
}|
kr|
qdn|

vr҈
| }| |
|

qd|
}|d   g }	jD ]|}|vr|jr(|t| nT|jd urt|jtrt|jr|jt|ju rt|j	||j q|r	tdd
|  	jD ]X}|jr|jD ]}|v r qqdd |jD }td}	|d
|  qfS )NrS   r   r1  AOr_   c                    s|    |  | |}|| jurb |   | g D ]*}|v r6td}t|}t| || q6|turx| || d S )Nznot allowed with argument %s)r   _get_valuesr   r   r   r   r   r   )ru   Zargument_stringsr   Zargument_valuesZconflict_actionr%  Zaction_name)action_conflictsr   seen_actionsseen_non_default_actionsr&   r+   r,   take_action}  s    


z5ArgumentParser._parse_known_args.<locals>.take_actionc                    s~  |  }|\}}}j }g }|d u r: |   | d S |d ur||d}j}|dkr|d |vr||g |f |d }	|	|d  }|dd  pd }
j}||v r|| }|
}ntd}t||| nB|dkr| d }|g}||||f q\ntd}t||| q| d }|d  }|||}|| } || }||||f q\q|D ]\}}}||| q`|S )NrS   r  r   zignored explicit argument %r)_match_argumentr!   rE  rK  r   r   )start_indexoption_tupleru   r   explicit_argZmatch_argumentZaction_tuples	arg_countr]  charZnew_explicit_argZoptionals_mapr%  stopr\   r   Zselected_patterns)r'   arg_strings_patternextrasoption_string_indicesr&   r  r+   r,   consume_optional  sL    



z:ArgumentParser._parse_known_args.<locals>.consume_optionalc                    sn   j }| d  }||}t|D ]*\}} | | |  }| |7 } || q&t|d  d d < | S r.   )_match_arguments_partialziprs   )r  Zmatch_partialZselected_patternZ
arg_countsru   r  r\   )r'   r  r   r&   r  r+   r,   consume_positionals  s    
z=ArgumentParser._parse_known_args.<locals>.consume_positionalsr   r   c                    s   g | ]}| kr|qS r+   r+   )rZ   r   )r  r+   r,   r]     s   z4ArgumentParser._parse_known_args.<locals>.<listcomp>z(the following arguments are required: %sr   c                 S   s   g | ]}|j turt|qS r+   )ro   r   r   r  r+   r+   r,   r]   ;  s   
z#one of the arguments %s is requiredr~   )N)r|  _read_args_from_filesrM  r   r   r#  r   iterr!   _parse_optionalr%   r   r  rA   r@   rJ  r   r   r   r   r   r   r   r   r   
_get_valuer4  r   )r&   r'   r   ri  r   r   Zmutex_actionZ	conflictsZarg_string_pattern_partsZarg_strings_iter
arg_stringr  patternr  r  Zmax_option_string_indexZnext_option_string_indexZpositionals_end_indexZstringsZ
stop_indexZrequired_actionsru   r   r   r%  r+   )r  r'   r  r  r   r  r   r  r  r&   r  r  r,   r  N  s    





J














z ArgumentParser._parse_known_argsc              	   C   s   g }|D ]}|r|d | j vr*|| qzxt|dd  T}g }|  D ]}| |D ]}|| q\qN| |}|| W d    n1 s0    Y  W q ty   t	
 d }| t| Y q0 q|S r  )r|  r!   r   readr   convert_arg_line_to_argsr  r   r8  r  r  r4  r   )r&   r'   Znew_arg_stringsr  Z	args_filearg_liner(   r  r+   r+   r,   r  D  s     
,z$ArgumentParser._read_args_from_filesc                 C   s   |gS r.   r+   )r&   r  r+   r+   r,   r  ^  s    z'ArgumentParser.convert_arg_line_to_argsc                 C   sz   |  |}t||}|d u rld tdttdttdi}||j}|d u rbtdd|j|j }t	||t
|dS )Nzexpected one argumentzexpected at most one argumentzexpected at least one argumentzexpected %s argumentzexpected %s argumentsrS   )_get_nargs_patternrJ   re  r   r   r   r   r   r   r   rs   r   )r&   ru   r  nargs_patternre  Znargs_errorsr%  r+   r+   r,   r  a  s"    

zArgumentParser._match_argumentc                    sr   g }t t|ddD ]X}|d | }d fdd|D }t||}|d ur|dd | D   qnq|S )Nr   r   r_   c                    s   g | ]}  |qS r+   )r  r  r2   r+   r,   r]   }  s   z;ArgumentParser._match_arguments_partial.<locals>.<listcomp>c                 S   s   g | ]}t |qS r+   )rs   )rZ   r9  r+   r+   r,   r]     r^   )r   rs   r%   rJ   re  r   rl   )r&   rk   r  r   r   Zactions_slicer  re  r+   r2   r,   r  w  s    z'ArgumentParser._match_arguments_partialc           
      C   s  |sd S |d | j vrd S || jv r8| j| }||d fS t|dkrHd S d|v r~|dd\}}|| jv r~| j| }|||fS | |}t|dkrddd |D }||d}td}| ||  nt|dkr|\}	|	S | j	|r| j
sd S d	|v rd S d |d fS )
Nr   rS   =r   c                 S   s   g | ]\}}}|qS r+   r+   )rZ   ru   r   r  r+   r+   r,   r]     s   z2ArgumentParser._parse_optional.<locals>.<listcomp>)rl  Zmatchesz4ambiguous option: %(option)s could match %(matches)sr~   )rE  rK  rs   split_get_option_tuplesr%   r   r4  rO  re  rP  )
r&   r  ru   r   r  Zoption_tuplesZoptionsr\   r%  r  r+   r+   r,   r    s>    









zArgumentParser._parse_optionalc           
      C   s0  g }| j }|d |v r|d |v r| jr~d|v rB|dd\}}n|}d }| jD ],}||rP| j| }|||f}|| qPn|d |v r|d |vr|}d }|d d }|dd  }	| jD ]T}||kr| j| }|||	f}|| q||r| j| }|||f}|| qn| td|  |S )Nr   rS   r  r8   zunexpected option string: %s)rE  r~  r  rK  r   r!   r4  r   )
r&   r   r   r]  Zoption_prefixr  ru   r   Zshort_option_prefixZshort_explicit_argr+   r+   r,   r    s:    









z!ArgumentParser._get_option_tuplesc                 C   s   |j }|d u rd}nf|tkr"d}nX|tkr0d}nJ|tkr>d}n<|tkrLd}n.|tkrZd}n |tkrhd}ndd	d
|  }|jr|	d	d}|	dd}|S )Nz(-*A-*)z(-*A?-*)z	(-*[A-]*)z
(-*A[A-]*)z([-AO]*)z(-*A[-AO]*)z(-*-*)z(-*%s-*)z-*r  r_   r1  )
r   r   r   r   r   r   r   r%   r   rn  )r&   ru   r   r  r+   r+   r,   r    s(    z!ArgumentParser._get_nargs_patternc                 C   s4   |  ||\}}|r0td}| |d|  |S r  )parse_known_intermixed_argsr   r4  r%   r  r+   r+   r,   parse_intermixed_args	  s
    z$ArgumentParser.parse_intermixed_argsc              	      s  |    dd  D }|r,td|d j  fdd| jD rHtdz| j}z| jd u rp|  dd  | _ D ] }|j|_t|_|j|_	t|_qt| 
||\}} D ]J}t||jrt||jg krddlm} |d	|j|f  t||j qW  D ]}|j|_|j	|_qn D ]}|j|_|j	|_q0 |  }zt|D ]}|j|_d
|_q@| jD ]}	|	j|	_d
|	_q\| 
||\}}
W |D ]}|j|_q| jD ]}	|	j|	_qn,|D ]}|j|_q| jD ]}	|	j|	_q0 W || _n|| _0 ||
fS )Nc                 S   s   g | ]}|j ttfv r|qS r+   )r   r   r   r  r+   r+   r,   r]   4	  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   )rZ   r   ru   r   r+   r,   r]   :	  s   z;parse_intermixed_args: positional in mutuallyExclusiveGroup   )warnzDo not expect %s in %sF)r  r   r   rM  rj   r   Z
save_nargsr   r   Zsave_defaultr"  r   r   r   warningsr  r  r  r   Zsave_required)r&   r\   r   aZ
save_usageru   Zremaining_argsr  r   r   r  r+   r  r,   r  &	  sn    






z*ArgumentParser.parse_known_intermixed_argsc                    s   j ttfvr0z|d W n ty.   Y n0 |sx j tkrx jrL j}n j}t	|t
rt |} | n|s j tkr js jd ur j}n|} | nt|dkr j d tfv r|\} |} | n j tkr fdd|D }np j tkr> fdd|D } |d  n> j tkrPt}n, fdd|D }|D ]} | qh|S )Nr   rS   c                    s   g | ]}  |qS r+   r  rZ   vru   r&   r+   r,   r]   	  r^   z.ArgumentParser._get_values.<locals>.<listcomp>c                    s   g | ]}  |qS r+   r  r  r  r+   r,   r]   	  r^   r   c                    s   g | ]}  |qS r+   r  r  r  r+   r,   r]   	  r^   )r   r   r   rf  r   r   r   r   r   r   r   r  _check_valuer   rs   r   )r&   ru   r'   r*   r  r  r+   r  r,   r  s	  sD    

zArgumentParser._get_valuesc              	   C   s   |  d|j|j}t|s0td}t||| z||}W n ty|   t|jdt|j}tt	
 d }t||Y nJ ttfy   t|jdt|j}||d}td}t||| Y n0 |S )Nr   rW  r   rS   )r   r*   z!invalid %(type)s value: %(value)r)rS  r   r[  r   r   r   r   r"   r   r  r  r   r   )r&   ru   r  r^  r%  r   r)   r\   r+   r+   r,   r  	  s     
zArgumentParser._get_valuec                 C   sF   |j d urB||j vrB|dtt|j d}td}t||| d S )Nr   )r*   r   z3invalid choice: %(value)r (choose from %(choices)s))r   r%   rr   r"   r   r   )r&   ru   r*   r\   r%  r+   r+   r,   r  	  s    zArgumentParser._check_valuec                 C   s$   |   }|| j| j| j | S r.   )r  rn   rj   rJ  rM  rb   )r&   rW   r+   r+   r,   r   	  s
    zArgumentParser.format_usagec                 C   st   |   }|| j| j| j || j | jD ]0}||j	 ||j |
|j |  q.|| j | S r.   )r  rn   rj   rJ  rM  rh   rC  rL  rd   rh  rx   r   re   rz  rb   )r&   rW   Zaction_groupr+   r+   r,   rb   	  s    

zArgumentParser.format_helpc                 C   s   | j | jdS )Nr}   )r{  rO   r2   r+   r+   r,   r  	  s    zArgumentParser._get_formatterc                 C   s"   |d u rt j}| |  | d S r.   )r  r  r  r   r&   filer+   r+   r,   print_usage	  s    zArgumentParser.print_usagec                 C   s"   |d u rt j}| |  | d S r.   )r  r  r  rb   r  r+   r+   r,   r  	  s    zArgumentParser.print_helpc                 C   s    |r|d u rt j}|| d S r.   )r  stderrwrite)r&   r   r  r+   r+   r,   r  	  s    zArgumentParser._print_messager   c                 C   s    |r|  |tj t| d S r.   )r  r  r  r  )r&   Zstatusr   r+   r+   r,   r  
  s    zArgumentParser.exitc                 C   s0   |  tj | j|d}| dtd|  d S )N)rO   r   r8   z%(prog)s: error: %(message)s
)r  r  r  rO   r  r   )r&   r   r\   r+   r+   r,   r4  
  s    	zArgumentParser.error)NN)NN)NN)NN)N)N)N)r   N)"r   r3   r4   r   rQ   r#   r  r\  r  r  r  r"  r  r  r  r  r  r  r  r  r  r  r  r  r  r   rb   r  r  r  r  r  r4  r   r+   r+   r   r,   r     sV   B

' w:-1

M8


	
r   )1__version____all__osrv  rerJ   sysr  r   r   r   r   r   r   r   r   r   r$  r   r   r7   r   r   r	   r   r
   r   	Exceptionr   r   r   r   r   r   r   r  r  r  r  r
  r  r  r'  r   r   r@  r_  ra  r   r+   r+   r+   r,   <module>A   s^       	^)#&]7  8"