<!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>

]`                @   s  d  Z  d d d d d d d d d	 d
 d d d d d d d g Z d d l Z d d l Z d d l Z d d l Z	 d d l
 Z d d l Z d d l m Z m Z d Z d Z d Z d Z d Z d Z d Z Gd d   d e  Z d d   Z Gd  d   d e  Z Gd! d   d e  Z Gd" d   d e  Z Gd# d   d e  Z Gd$ d	   d	 e  Z d% d&   Z  Gd' d   d e!  Z" Gd( d   d e!  Z# Gd) d   d e  Z$ Gd* d+   d+ e$  Z% Gd, d-   d- e$  Z& Gd. d/   d/ e&  Z' Gd0 d1   d1 e&  Z( Gd2 d3   d3 e$  Z) Gd4 d5   d5 e$  Z* Gd6 d7   d7 e$  Z+ Gd8 d9   d9 e$  Z, Gd: d;   d; e$  Z- Gd< d=   d= e$  Z. Gd> d   d e  Z/ Gd? d
   d
 e  Z0 Gd@ dA   dA e  Z1 GdB dC   dC e1  Z2 GdD dE   dE e2  Z3 GdF d   d e e1  Z4 d S)Gz1.1ArgumentParserArgumentErrorArgumentTypeErrorFileTypeHelpFormatterArgumentDefaultsHelpFormatterRawDescriptionHelpFormatterRawTextHelpFormatterMetavarTypeHelpFormatter	NamespaceActionONE_OR_MOREOPTIONALPARSER	REMAINDERSUPPRESSZERO_OR_MORE    N)gettextngettextz==SUPPRESS==?*+zA...z..._unrecognized_argsc               @   s4   e  Z d  Z d d   Z d d   Z d d   Z d S)_AttributeHolderc             C   s   t  |   j } g  } x' |  j   D] } | j t |   q" Wx1 |  j   D]# \ } } | j d | | f  qL Wd | d j |  f S)Nz%s=%rz%s(%s)z, )type__name__	_get_argsappendrepr_get_kwargsjoin)self	type_namearg_stringsargnamevalue r'   -/opt/alt/python35/lib64/python3.5/argparse.py__repr__v   s    z_AttributeHolder.__repr__c             C   s   t  |  j j    S)N)sorted__dict__items)r!   r'   r'   r(   r      s    z_AttributeHolder._get_kwargsc             C   s   g  S)Nr'   )r!   r'   r'   r(   r      s    z_AttributeHolder._get_argsN)r   
__module____qualname__r)   r   r   r'   r'   r'   r(   r   m   s   		r   c             C   s5   t  |  | d   d  k r( t |  | |  t  |  |  S)N)getattrsetattr)	namespacer%   r&   r'   r'   r(   _ensure_value   s    r2   c               @   sj  e  Z d  Z d d d d d  Z d d   Z d d	   Z Gd
 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 d0 d1   Z d2 d3   Z d4 d5   Z d6 d7   Z d8 d9   Z d S):r         Nc             C   s   | d  k rN y t  t j d  } Wn t t f k
 rC d } Yn X| d 8} | |  _ | |  _ | |  _ t | t	 | d | d   |  _ | |  _
 d |  _ d |  _ d |  _ |  j |  d   |  _ |  j |  _ t j d t j  |  _ t j d  |  _ d  S)NCOLUMNSP   r3      r   z\s+z\n\n\n+)int_osenvironKeyError
ValueError_prog_indent_increment_max_help_positionminmax_width_current_indent_level_action_max_length_Section_root_section_current_section_recompileASCII_whitespace_matcher_long_break_matcher)r!   progindent_incrementmax_help_positionwidthr'   r'   r(   __init__   s&    
							zHelpFormatter.__init__c             C   s%   |  j  |  j 7_  |  j d 7_ d  S)N   )rC   r>   rD   )r!   r'   r'   r(   _indent   s    zHelpFormatter._indentc             C   s%   |  j  |  j 8_  |  j d 8_ d  S)NrS   )rC   r>   rD   )r!   r'   r'   r(   _dedent   s    zHelpFormatter._dedentc               @   s+   e  Z d  Z d d d  Z d d   Z d S)zHelpFormatter._SectionNc             C   s(   | |  _  | |  _ | |  _ g  |  _ d  S)N)	formatterparentheadingr,   )r!   rV   rW   rX   r'   r'   r(   rR      s    			zHelpFormatter._Section.__init__c             C   s   |  j  d  k	 r |  j j   |  j j } x! |  j D] \ } } | |   q2 W| d d   |  j D  } |  j  d  k	 r |  j j   | s d S|  j t k	 r |  j d  k	 r |  j j } d | d |  j f } n d } | d | | d g  S)Nc             S   s"   g  |  ] \ } } | |    q Sr'   r'   ).0funcargsr'   r'   r(   
<listcomp>   s   	 z6HelpFormatter._Section.format_help.<locals>.<listcomp> z%*s%s:

)	rW   rV   rT   _join_partsr,   rU   rX   r   rC   )r!   r    rZ   r[   	item_helpcurrent_indentrX   r'   r'   r(   format_help   s    z"HelpFormatter._Section.format_help)r   r-   r.   rR   rb   r'   r'   r'   r(   rF      s   rF   c             C   s   |  j  j j | | f  d  S)N)rH   r,   r   )r!   rZ   r[   r'   r'   r(   	_add_item   s    zHelpFormatter._add_itemc             C   sB   |  j    |  j |  |  j |  } |  j | j g   | |  _ d  S)N)rT   rF   rH   rc   rb   )r!   rX   sectionr'   r'   r(   start_section   s    
zHelpFormatter.start_sectionc             C   s   |  j  j |  _  |  j   d  S)N)rH   rW   rU   )r!   r'   r'   r(   end_section   s    zHelpFormatter.end_sectionc             C   s2   | t  k	 r. | d  k	 r. |  j |  j | g  d  S)N)r   rc   _format_text)r!   textr'   r'   r(   add_text   s    zHelpFormatter.add_textc             C   s5   | t  k	 r1 | | | | f } |  j |  j |  d  S)N)r   rc   _format_usage)r!   usageactionsgroupsprefixr[   r'   r'   r(   	add_usage   s    zHelpFormatter.add_usagec             C   s   | j  t k	 r |  j } | |  g } x* |  j |  D] } | j | |   q7 Wt d d   | D  } | |  j } t |  j |  |  _ |  j |  j	 | g  d  S)Nc             S   s   g  |  ] } t  |   q Sr'   )len)rY   sr'   r'   r(   r\     s   	 z.HelpFormatter.add_argument.<locals>.<listcomp>)
helpr   _format_action_invocation_iter_indented_subactionsr   rA   rC   rE   rc   _format_action)r!   actionget_invocationinvocations	subactioninvocation_lengthaction_lengthr'   r'   r(   add_argument   s    		zHelpFormatter.add_argumentc             C   s"   x | D] } |  j  |  q Wd  S)N)r|   )r!   rl   rv   r'   r'   r(   add_arguments  s    zHelpFormatter.add_argumentsc             C   sA   |  j  j   } | r= |  j j d |  } | j d  d } | S)Nz

r^   )rG   rb   rM   substrip)r!   rr   r'   r'   r(   rb     s
    zHelpFormatter.format_helpc             C   s   d j  d d   | D  S)Nr]   c             S   s(   g  |  ] } | r | t  k	 r |  q Sr'   )r   )rY   partr'   r'   r(   r\     s   	z-HelpFormatter._join_parts.<locals>.<listcomp>)r    )r!   part_stringsr'   r'   r(   r_     s    zHelpFormatter._join_partsc                s  | d  k r t  d  } | d  k	 r= | t d |  j  } n| d  k ri | ri d t d |  j  } nY| d  k rd t d |  j  } g  } g  } x4 | D], } | j r | j |  q | j |  q W|  j }	 |	 | | |  }
 d j d d   | |
 g D  } |  j |  j   t	 |  t	 |    k rd } |	 | |  } |	 | |  } t
 j | |  } t
 j | |  } d    f d d	  } t	 |  t	 |  d
   k r9d t	 |  t	 |  d } | r| | g | | |  } | j | | |   q| r-| | g | | |  } q| g } nz d t	 |  } | | } | | |  } t	 |  d k rg  } | j | | |   | j | | |   | g | } d j |  } d | | f S)Nzusage: rN   z%(prog)s c             S   s   g  |  ] } | r |  q Sr'   r'   )rY   rq   r'   r'   r(   r\   =  s   	 z/HelpFormatter._format_usage.<locals>.<listcomp>z\(.*?\)+|\[.*?\]+|\S+c                s  g  } g  } | d  k	 r+ t  |  d } n t  |  d } x |  D]w } | d t  |    k r | r | j | d j |   g  } t  |  d } | j |  | t  |  d 7} qB W| r | j | d j |   | d  k	 r| d t  |  d   | d <| S)NrS   r   r   )rp   r   r    )partsindentrn   lineslineline_lenr   )
text_widthr'   r(   	get_linesM  s"     z.HelpFormatter._format_usage.<locals>.get_linesg      ?rS   r^   z%s%s

)_dictr=   option_stringsr   _format_actions_usager    rB   rC   rp   rI   findallextend)r!   rk   rl   rm   rn   rN   	optionalspositionalsrv   formataction_usagepart_regexp	opt_usage	pos_usage	opt_parts	pos_partsr   r   r   r   r'   )r   r(   rj   !  sV    		" 
zHelpFormatter._format_usagec             C   s  t    } i  } x#| D]} y | j | j d  } Wn t k
 rM w Yq X| t | j  } | | |  | j k r x | j D] } | j |  q W| j s | | k r | | d 7<n
 d | | <d | | <n1 | | k r | | d 7<n
 d | | <d | | <x% t | d |  D] }	 d	 | |	 <qWq Wg  }
 xt |  D]w\ }	 } | j	 t
 k r|
 j d   | j |	  d	 k r| j |	  q| j |	 d  d	 k r| j |	 d  qH| j s8|  j |  } |  j | |  } | | k r(| d d k r(| d d k r(| d d  } |
 j |  qH| j d } | j d k rad
 | } n1 |  j |  } |  j | |  } d | | f } | j r| | k rd | } |
 j |  qHWx1 t | d d D] }	 | |	 g |
 |	 |	  <qWd j d d   |
 D  } d } d } t j d | d |  } t j d | d |  } t j d | | f d |  } t j d d |  } | j   } | S)Nr   z [[]z (()rS   |z%sz%s %sz[%s]reverseTr   c             S   s"   g  |  ] } | d  k	 r |  q S)Nr'   )rY   itemr'   r'   r(   r\     s   	 z7HelpFormatter._format_actions_usage.<locals>.<listcomp>z[\[(]z[\])]z(%s) z\1z (%s)z%s *%sr]   z\(([^|]*)\)r   )setindex_group_actionsr<   rp   addrequiredrange	enumeraterr   r   r   getpopr   #_get_default_metavar_for_positional_format_argsnargs!_get_default_metavar_for_optionalr*   r    rI   r~   r   )r!   rl   rm   group_actionsinsertsgroupstartendrv   ir   defaultr   option_stringargs_stringrh   opencloser'   r'   r(   r   }  sr    		


	 
z#HelpFormatter._format_actions_usagec             C   s_   d | k r" | t  d |  j  } t |  j |  j d  } d |  j } |  j | | |  d S)Nz%(prog)rN      r   z

)r   r=   rA   rB   rC   
_fill_text)r!   rh   r   r   r'   r'   r(   rg     s
    zHelpFormatter._format_textc             C   s  t  |  j d |  j  } t |  j | d  } | |  j d } |  j |  } | j sw |  j d | f } d | } n\ t |  | k r |  j d | | f } d | } d } n" |  j d | f } d | } | } | g } | j r\|  j	 |  }	 |  j
 |	 |  }
 | j d | d |
 d f  xQ |
 d d   D]  } | j d | d | f  q5Wn | j d  sx| j d  x- |  j |  D] } | j |  j |   qW|  j |  S)	Nr3   r   r]   z%*s%s
z	%*s%-*s  r   rS   r^   )r@   rE   r?   rA   rB   rC   rs   rr   rp   _expand_help_split_linesr   endswithrt   ru   r_   )r!   rv   help_position
help_widthaction_widthaction_headertupindent_firstr   	help_text
help_linesr   ry   r'   r'   r(   ru     s6    	
	
		!zHelpFormatter._format_actionc             C   s   | j  s7 |  j |  } |  j | |  d  \ } | Sg  } | j d k r_ | j | j   nL |  j |  } |  j | |  } x( | j  D] } | j d | | f  q Wd j |  Sd  S)NrS   r   z%s %sz, )	r   r   _metavar_formatterr   r   r   r   r   r    )r!   rv   r   metavarr   r   r   r'   r'   r(   rs     s    	z'HelpFormatter._format_action_invocationc                sr   | j  d  k	 r | j    nA | j d  k	 rV d d   | j D } d d j |    n |     f d d   } | S)Nc             S   s   g  |  ] } t  |   q Sr'   )str)rY   choicer'   r'   r(   r\   0  s   	 z4HelpFormatter._metavar_formatter.<locals>.<listcomp>z{%s},c                s"   t    t  r   S  f |  Sd  S)N)
isinstancetuple)
tuple_size)resultr'   r(   r   5  s    z0HelpFormatter._metavar_formatter.<locals>.format)r   choicesr    )r!   rv   default_metavarchoice_strsr   r'   )r   r(   r   ,  s    z HelpFormatter._metavar_formatterc             C   s  |  j  | |  } | j d  k r4 d | d  } n | j t k rV d | d  } n | j t k rx d | d  } n | j t k r d | d  } nr | j t k r d } nZ | j t k r d | d  } n8 d	 d
   t | j  D } d j |  | | j  } | S)Nz%srS   z[%s]z[%s [%s ...]]r3   z%s [%s ...]z...z%s ...c             S   s   g  |  ] } d   q S)z%sr'   )rY   r   r'   r'   r(   r\   K  s   	 z.HelpFormatter._format_args.<locals>.<listcomp>r   )	r   r   r   r   r   r   r   r   r    )r!   rv   r   get_metavarr   formatsr'   r'   r(   r   <  s     	zHelpFormatter._format_argsc             C   s   t  t |  d |  j } x+ t |  D] } | | t k r( | | =q( Wx8 t |  D]* } t | | d  rV | | j | | <qV W| j d  d  k	 r d j d d   | d D  } | | d <|  j	 |  | S)NrN   r   r   z, c             S   s   g  |  ] } t  |   q Sr'   )r   )rY   cr'   r'   r(   r\   X  s   	 z.HelpFormatter._expand_help.<locals>.<listcomp>)
r   varsr=   listr   hasattrr   r   r    _get_help_string)r!   rv   paramsr%   choices_strr'   r'   r(   r   O  s     
zHelpFormatter._expand_helpc             c   sF   y | j  } Wn t k
 r! Yn! X|  j   |   Ed  H|  j   d  S)N)_get_subactionsAttributeErrorrT   rU   )r!   rv   get_subactionsr'   r'   r(   rt   \  s    
z'HelpFormatter._iter_indented_subactionsc             C   s+   |  j  j d |  j   } t j | |  S)Nr   )rL   r~   r   	_textwrapwrap)r!   rh   rQ   r'   r'   r(   r   f  s    zHelpFormatter._split_linesc             C   s7   |  j  j d |  j   } t j | | d | d | S)Nr   initial_indentsubsequent_indent)rL   r~   r   r   fill)r!   rh   rQ   r   r'   r'   r(   r   j  s    zHelpFormatter._fill_textc             C   s   | j  S)N)rr   )r!   rv   r'   r'   r(   r   o  s    zHelpFormatter._get_help_stringc             C   s   | j  j   S)N)destupper)r!   rv   r'   r'   r(   r   r  s    z/HelpFormatter._get_default_metavar_for_optionalc             C   s   | j  S)N)r   )r!   rv   r'   r'   r(   r   u  s    z1HelpFormatter._get_default_metavar_for_positional)r   r-   r.   rR   rT   rU   objectrF   rc   re   rf   ri   ro   r|   r}   rb   r_   rj   r   rg   ru   rs   r   r   r   rt   r   r   r   r   r   r'   r'   r'   r(   r      s:   	!\a/
c               @   s   e  Z d  Z d d   Z d S)r   c                s,   d j    f d d   | j d d  D  S)Nr]   c             3   s   |  ] }   | Vq d  S)Nr'   )rY   r   )r   r'   r(   	<genexpr>  s    z9RawDescriptionHelpFormatter._fill_text.<locals>.<genexpr>keependsT)r    
splitlines)r!   rh   rQ   r   r'   )r   r(   r     s    z&RawDescriptionHelpFormatter._fill_textN)r   r-   r.   r   r'   r'   r'   r(   r   y  s   c               @   s   e  Z d  Z d d   Z d S)r   c             C   s
   | j    S)N)r   )r!   rh   rQ   r'   r'   r(   r     s    z!RawTextHelpFormatter._split_linesN)r   r-   r.   r   r'   r'   r'   r(   r     s   c               @   s   e  Z d  Z d d   Z d S)r   c             C   sY   | j  } d | j  k rU | j t k	 rU t t g } | j sK | j | k rU | d 7} | S)Nz
%(default)z (default: %(default)s))rr   r   r   r   r   r   r   )r!   rv   rr   defaulting_nargsr'   r'   r(   r     s    	
z.ArgumentDefaultsHelpFormatter._get_help_stringN)r   r-   r.   r   r'   r'   r'   r(   r     s   c               @   s(   e  Z d  Z d d   Z d d   Z d S)r	   c             C   s
   | j  j S)N)r   r   )r!   rv   r'   r'   r(   r     s    z:MetavarTypeHelpFormatter._get_default_metavar_for_optionalc             C   s
   | j  j S)N)r   r   )r!   rv   r'   r'   r(   r     s    z<MetavarTypeHelpFormatter._get_default_metavar_for_positionalN)r   r-   r.   r   r   r'   r'   r'   r(   r	     s   c             C   si   |  d  k r d  S|  j  r) d j |  j   S|  j d  t f k rE |  j S|  j d  t f k ra |  j Sd  Sd  S)N/)r   r    r   r   r   )argumentr'   r'   r(   _get_action_name  s    	r   c               @   s(   e  Z d  Z d d   Z d d   Z d S)r   c             C   s   t  |  |  _ | |  _ d  S)N)r   argument_namemessage)r!   r   r   r'   r'   r(   rR     s    zArgumentError.__init__c             C   s;   |  j  d  k r d } n d } | t d |  j d |  j   S)Nz%(message)sz'argument %(argument_name)s: %(message)sr   r   )r   r   r   )r!   r   r'   r'   r(   __str__  s
    	zArgumentError.__str__N)r   r-   r.   rR   r   r'   r'   r'   r(   r     s   c               @   s   e  Z d  Z d S)r   N)r   r-   r.   r'   r'   r'   r(   r     s   c            
   @   sO   e  Z d  Z d d d d d d d d d d  Z d d   Z d d d  Z d S)	r   NFc             C   s^   | |  _  | |  _ | |  _ | |  _ | |  _ | |  _ | |  _ | |  _ |	 |  _ |
 |  _	 d  S)N)
r   r   r   constr   r   r   r   rr   r   )r!   r   r   r   r   r   r   r   r   rr   r   r'   r'   r(   rR     s    									zAction.__init__c          	      s8   d d d d d d d d d	 g	 }   f d
 d   | D S)Nr   r   r   r   r   r   r   rr   r   c                s%   g  |  ] } | t    |  f  q Sr'   )r/   )rY   r%   )r!   r'   r(   r\   3  s   	 z&Action._get_kwargs.<locals>.<listcomp>r'   )r!   namesr'   )r!   r(   r   '  s    	zAction._get_kwargsc             C   s   t  t d    d  S)Nz.__call__() not defined)NotImplementedErrorr   )r!   parserr1   valuesr   r'   r'   r(   __call__5  s    zAction.__call__)r   r-   r.   rR   r   r   r'   r'   r'   r(   r     s   6c                   sI   e  Z d  Z d d d d d d d d   f d d  Z d d d  Z   S)_StoreActionNFc                s   | d k r t  d   | d  k	 r@ | t k r@ t  d t   t t |   j d | d | d | d | d | d	 | d
 | d | d |	 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 appropriatez nargs must be %r to supply constr   r   r   r   r   r   r   r   rr   r   )r<   r   superr   rR   )r!   r   r   r   r   r   r   r   r   rr   r   )	__class__r'   r(   rR   ;  s    z_StoreAction.__init__c             C   s   t  | |  j |  d  S)N)r0   r   )r!   r   r1   r   r   r'   r'   r(   r   X  s    z_StoreAction.__call__)r   r-   r.   rR   r   r'   r'   )r   r(   r   9  s   r   c                   s=   e  Z d  Z d d d d   f d d  Z d d d  Z   S)_StoreConstActionNFc                sA   t  t |   j d | d | d d d | d | d | d |  d  S)	Nr   r   r   r   r   r   r   rr   )r   r   rR   )r!   r   r   r   r   r   rr   r   )r   r'   r(   rR   ^  s    z_StoreConstAction.__init__c             C   s   t  | |  j |  j  d  S)N)r0   r   r   )r!   r   r1   r   r   r'   r'   r(   r   o  s    z_StoreConstAction.__call__)r   r-   r.   rR   r   r'   r'   )r   r(   r   \  s
   
r   c                   s+   e  Z d  Z d d d   f d d  Z   S)_StoreTrueActionFNc                s;   t  t |   j d | d | d d d | d | d |  d  S)Nr   r   r   Tr   r   rr   )r   r   rR   )r!   r   r   r   r   rr   )r   r'   r(   rR   u  s    z_StoreTrueAction.__init__)r   r-   r.   rR   r'   r'   )r   r(   r   s  s   r   c                   s+   e  Z d  Z d d d   f d d  Z   S)_StoreFalseActionTFNc                s;   t  t |   j d | d | d d d | d | d |  d  S)Nr   r   r   Fr   r   rr   )r   r   rR   )r!   r   r   r   r   rr   )r   r'   r(   rR     s    z_StoreFalseAction.__init__)r   r-   r.   rR   r'   r'   )r   r(   r     s   r   c                   sI   e  Z d  Z d d d d d d d d   f d d  Z d d d  Z   S)_AppendActionNFc                s   | d k r t  d   | d  k	 r@ | t k r@ t  d t   t t |   j d | d | d | d | d | d	 | d
 | d | d |	 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 appropriatez nargs must be %r to supply constr   r   r   r   r   r   r   r   rr   r   )r<   r   r   r   rR   )r!   r   r   r   r   r   r   r   r   rr   r   )r   r'   r(   rR     s    z_AppendAction.__init__c             C   sB   t  j t | |  j g    } | j |  t | |  j |  d  S)N)_copycopyr2   r   r   r0   )r!   r   r1   r   r   r,   r'   r'   r(   r     s    z_AppendAction.__call__)r   r-   r.   rR   r   r'   r'   )r   r(   r     s   r   c                   s=   e  Z d  Z d d d d   f d d  Z d d d  Z   S)_AppendConstActionNFc                sG   t  t |   j d | d | d d d | d | d | d | d	 |  d  S)
Nr   r   r   r   r   r   r   rr   r   )r   r   rR   )r!   r   r   r   r   r   rr   r   )r   r'   r(   rR     s    z_AppendConstAction.__init__c             C   sE   t  j t | |  j g    } | j |  j  t | |  j |  d  S)N)r   r   r2   r   r   r   r0   )r!   r   r1   r   r   r,   r'   r'   r(   r     s    z_AppendConstAction.__call__)r   r-   r.   rR   r   r'   r'   )r   r(   r     s
   r   c                   s:   e  Z d  Z d d d   f d d  Z d d d  Z   S)_CountActionNFc                s;   t  t |   j d | d | d d d | d | d |  d  S)Nr   r   r   r   r   r   rr   )r   r   rR   )r!   r   r   r   r   rr   )r   r'   r(   rR     s    z_CountAction.__init__c             C   s0   t  | |  j d  d } t | |  j |  d  S)Nr   rS   )r2   r   r0   )r!   r   r1   r   r   	new_countr'   r'   r(   r     s    z_CountAction.__call__)r   r-   r.   rR   r   r'   r'   )r   r(   r     s   	r   c                   s:   e  Z d  Z e e d   f d d  Z d d d  Z   S)_HelpActionNc                s5   t  t |   j d | d | d | d d d |  d  S)Nr   r   r   r   r   rr   )r   r  rR   )r!   r   r   r   rr   )r   r'   r(   rR     s    z_HelpAction.__init__c             C   s   | j    | j   d  S)N)
print_helpexit)r!   r   r1   r   r   r'   r'   r(   r     s    
z_HelpAction.__call__)r   r-   r.   r   rR   r   r'   r'   )r   r(   r    s   r  c                   s=   e  Z d  Z d e e d   f d d  Z d d d  Z   S)_VersionActionNz&show program's version number and exitc                s>   t  t |   j d | d | d | d d d |  | |  _ d  S)Nr   r   r   r   r   rr   )r   r  rR   version)r!   r   r  r   r   rr   )r   r'   r(   rR     s    z_VersionAction.__init__c             C   s^   |  j  } | d  k r | j  } | j   } | j |  | j | j   t j  | j   d  S)N)r  _get_formatterri   _print_messagerb   _sysstdoutr  )r!   r   r1   r   r   r  rV   r'   r'   r(   r     s    		z_VersionAction.__call__)r   r-   r.   r   rR   r   r'   r'   )r   r(   r    s
   	r  c                   sh   e  Z d  Z Gd d   d e  Z e d d   f d d  Z d d   Z d d	   Z d d
 d  Z	   S)_SubParsersActionc                   s"   e  Z d  Z   f d d   Z   S)z&_SubParsersAction._ChoicesPseudoActionc          	      s_   | } } | r' | d d j  |  7} t t j |   } | j d g  d | d | d |  d  S)Nz (%s)z, r   r   rr   r   )r    r   r  _ChoicesPseudoActionrR   )r!   r%   aliasesrr   r   r   sup)r   r'   r(   rR     s    
z/_SubParsersAction._ChoicesPseudoAction.__init__)r   r-   r.   rR   r'   r'   )r   r(   r    s   r  Nc                sh   | |  _  | |  _ t j   |  _ g  |  _ t t |   j d | d | d t	 d |  j d | d |  d  S)Nr   r   r   r   rr   r   )
_prog_prefix_parser_class_collectionsOrderedDict_name_parser_map_choices_actionsr   r  rR   r   )r!   r   rN   parser_classr   rr   r   )r   r'   r(   rR   "  s    				z_SubParsersAction.__init__c             K   s   | j  d  d  k r, d |  j | f | d <| j d f   } d | k r~ | j d  } |  j | | |  } |  j j |  |  j |   } | |  j | <x | D] } | |  j | <q W| S)NrN   z%s %sr  rr   )r   r  r   r  r  r   r  r  )r!   r%   kwargsr  rr   choice_actionr   aliasr'   r'   r(   
add_parser7  s    z_SubParsersAction.add_parserc             C   s   |  j  S)N)r  )r!   r'   r'   r(   r   N  s    z!_SubParsersAction._get_subactionsc             C   s   | d } | d d   } |  j  t k	 r< t | |  j  |  y |  j | } WnO t k
 r d | d d j |  j  i } t d  | } t |  |   Yn X| j | d   \ }	 } x0 t	 |	  j
   D] \ }
 } t | |
 |  q W| rt	 |  j t g   t | t  j |  d  S)Nr   rS   parser_namer   z, z5unknown parser %(parser_name)r (choices: %(choices)s))r   r   r0   r  r;   r    r   r   parse_known_argsr   r,   
setdefault_UNRECOGNIZED_ARGS_ATTRr/   r   )r!   r   r1   r   r   r  r#   r[   msgsubnamespacekeyr&   r'   r'   r(   r   Q  s"    
	z_SubParsersAction.__call__)
r   r-   r.   r   r  r   rR   r  r   r   r'   r'   )r   r(   r    s   r  c               @   s@   e  Z d  Z d d
 d d d d  Z d d   Z d d	   Z d S)r   rrS   Nc             C   s(   | |  _  | |  _ | |  _ | |  _ d  S)N)_mode_bufsize	_encoding_errors)r!   modebufsizeencodingerrorsr'   r'   r(   rR     s    			zFileType.__init__c             C   s   | d k rW d |  j  k r" t j Sd |  j  k r8 t j St d  |  j  } t |   y& t | |  j  |  j |  j |  j	  SWnG t
 k
 r } z' t d  } t | | | f   WYd  d  } ~ Xn Xd  S)N-r!  wzargument "-" with mode %rzcan't open '%s': %s)r"  r	  stdinr
  r   r<   r   r#  r$  r%  OSErrorr   )r!   stringr  er   r'   r'   r(   r     s    zFileType.__call__c             C   st   |  j  |  j f } d |  j f d |  j f g } d j d d   | D d d   | D  } d t |   j | f S)Nr(  r)  z, c             S   s(   g  |  ] } | d k r t  |   q S)rS   r   )r   )rY   r$   r'   r'   r(   r\     s   	 z%FileType.__repr__.<locals>.<listcomp>c             S   s2   g  |  ]( \ } } | d  k	 r d | | f  q S)Nz%s=%rr'   )rY   kwr$   r'   r'   r(   r\     s   	 	z%s(%s))r"  r#  r$  r%  r    r   r   )r!   r[   r  args_strr'   r'   r(   r)     s
    zFileType.__repr__r   )r   r-   r.   rR   r   r)   r'   r'   r'   r(   r   v  s   c               @   s4   e  Z d  Z d d   Z d d   Z d d   Z d S)r
   c             K   s)   x" | D] } t  |  | | |  q Wd  S)N)r0   )r!   r  r%   r'   r'   r(   rR     s    zNamespace.__init__c             C   s)   t  | t  s t St |   t |  k S)N)r   r
   NotImplementedr   )r!   otherr'   r'   r(   __eq__  s    zNamespace.__eq__c             C   s   | |  j  k S)N)r+   )r!   r   r'   r'   r(   __contains__  s    zNamespace.__contains__N)r   r-   r.   rR   r4  r5  r'   r'   r'   r(   r
     s   c                   s   e  Z d  Z   f d d   Z d d   Z d d d  Z d d	   Z d
 d   Z d d   Z d d   Z	 d d   Z
 d d   Z d d   Z d d   Z d d   Z d d   Z d d d  Z d d   Z d  d!   Z d" d#   Z d$ d%   Z   S)&_ActionsContainerc                sg  t  t |   j   | |  _ | |  _ | |  _ | |  _ i  |  _ |  j d d  t	  |  j d d t	  |  j d d t
  |  j d d t  |  j d d t  |  j d d t  |  j d d t  |  j d d t  |  j d d	 t  |  j d d
 t  |  j d d t  |  j   g  |  _ i  |  _ g  |  _ g  |  _ i  |  _ t j d  |  _ g  |  _ d  S)Nrv   storestore_const
store_truestore_falser   append_constcountrr   r  parsersz^-\d+$|^-\d*\.\d+$)r   r6  rR   descriptionargument_defaultprefix_charsconflict_handler_registriesregisterr   r   r   r   r   r   r   r  r  r  _get_handler_actions_option_string_actions_action_groups_mutually_exclusive_groups	_defaultsrI   rJ   _negative_number_matcher_has_negative_number_optionals)r!   r>  r@  r?  rA  )r   r'   r(   rR     s2    					
					z_ActionsContainer.__init__c             C   s#   |  j  j | i   } | | | <d  S)N)rB  r  )r!   registry_namer&   r   registryr'   r'   r(   rC    s    z_ActionsContainer.registerNc             C   s   |  j  | j | |  S)N)rB  r   )r!   rL  r&   r   r'   r'   r(   _registry_get  s    z_ActionsContainer._registry_getc             K   sG   |  j  j |  x0 |  j D]% } | j | k r | | j | _ q Wd  S)N)rI  updaterE  r   r   )r!   r  rv   r'   r'   r(   set_defaults   s    z_ActionsContainer.set_defaultsc             C   sL   x6 |  j  D]+ } | j | k r
 | j d  k	 r
 | j Sq
 W|  j j | d   S)N)rE  r   r   rI  r   )r!   r   rv   r'   r'   r(   get_default	  s    z_ActionsContainer.get_defaultc             O   s  |  j  } | s6 t |  d k ri | d d | k ri | rT d | k rT t d   |  j | |   } n |  j | |   } d | k r | d } | |  j k r |  j | | d <n |  j d  k	 r |  j | d <|  j |  } t |  s t d | f   | |   } |  j	 d | j
 | j
  } t |  sDt d | f   t |  d	  ry |  j   j | d   Wn t k
 rt d
   Yn X|  j |  S)NrS   r   r   z+dest supplied twice for positional argumentr   zunknown action "%s"r   z%r is not callabler  z,length of metavar tuple does not match nargs)r@  rp   r<   _get_positional_kwargs_get_optional_kwargsrI  r?  _pop_action_classcallablerN  r   r   r  r   	TypeError_add_action)r!   r[   r  charsr   action_classrv   	type_funcr'   r'   r(   r|     s2    		-
z_ActionsContainer.add_argumentc             O   s&   t  |  | |  } |  j j |  | S)N)_ArgumentGrouprG  r   )r!   r[   r  r   r'   r'   r(   add_argument_groupB  s    z$_ActionsContainer.add_argument_groupc             K   s#   t  |  |  } |  j j |  | S)N)_MutuallyExclusiveGrouprH  r   )r!   r  r   r'   r'   r(   add_mutually_exclusive_groupG  s    z._ActionsContainer.add_mutually_exclusive_groupc             C   s   |  j  |  |  j j |  |  | _ x | j D] } | |  j | <q0 Wx< | j D]1 } |  j j |  rQ |  j sQ |  j j d  qQ W| S)NT)	_check_conflictrE  r   	containerr   rF  rJ  matchrK  )r!   rv   r   r'   r'   r(   rW  L  s    		z_ActionsContainer._add_actionc             C   s   |  j  j |  d  S)N)rE  remove)r!   rv   r'   r'   r(   _remove_actiona  s    z _ActionsContainer._remove_actionc             C   sI  i  } xL |  j  D]A } | j | k rD t d  } t | | j   | | | j <q Wi  } xs | j  D]h } | j | k r |  j d | j d | j d | j  | | j <x" | j D] } | | j | | <q Wqe WxD | j D]9 } |  j	 d | j
  } x | j D] } | | | <q Wq Wx* | j D] } | j | |   j |  q"Wd  S)Nz.cannot merge actions - two groups are named %rtitler>  rA  r   )rG  rd  r   r<   r\  r>  rA  r   rH  r^  r   rE  r   rW  )r!   r`  title_group_mapr   r  	group_maprv   mutex_groupr'   r'   r(   _add_container_actionsd  s,    				z(_ActionsContainer._add_container_actionsc             K   s   d | k r$ t  d  } t |   | j d  t t g k rI d | d <| j d  t k rt d | k rt d | d <t | d | d g  S)Nr   z1'required' is an invalid argument for positionalsr   Tr   r   r   )r   rV  r   r   r   r   )r!   r   r  r  r'   r'   r(   rR    s    
!
z(_ActionsContainer._get_positional_kwargsc       	      O   sJ  g  } g  } x | D] } | d |  j  k r] d | d |  j  i } t d  } t | |   | j |  | d |  j  k r t |  d k r | d |  j  k r | j |  q W| j d d   } | d  k r4| r | d } n
 | d } | j |  j   } | s"t d  } t | |   | j d d	  } t | d | d
 | S)Nr   optionr@  zNinvalid option string %(option)r: must start with a character %(prefix_chars)rrS   r   z%dest= is required for options like %rr*  r   r   )	r@  r   r<   r   rp   r   lstripreplacer   )	r!   r[   r  r   long_option_stringsr   r  r   dest_option_stringr'   r'   r(   rS    s0    
z&_ActionsContainer._get_optional_kwargsc             C   s%   | j  d |  } |  j d | |  S)Nrv   )r   rN  )r!   r  r   rv   r'   r'   r(   rT    s    z#_ActionsContainer._pop_action_classc             C   sV   d |  j  } y t |  |  SWn1 t k
 rQ t d  } t | |  j    Yn Xd  S)Nz_handle_conflict_%sz%invalid conflict_resolution value: %r)rA  r/   r   r   r<   )r!   handler_func_namer  r'   r'   r(   rD    s    z_ActionsContainer._get_handlerc             C   sl   g  } x@ | j  D]5 } | |  j k r |  j | } | j | | f  q W| rh |  j   } | | |  d  S)N)r   rF  r   rD  )r!   rv   confl_optionalsr   confl_optionalrA  r'   r'   r(   r_    s    z!_ActionsContainer._check_conflictc             C   sK   t  d d t |   } d j d d   | D  } t | | |   d  S)Nzconflicting option string: %szconflicting option strings: %sz, c             S   s   g  |  ] \ } } |  q Sr'   r'   )rY   r   rv   r'   r'   r(   r\     s   	z<_ActionsContainer._handle_conflict_error.<locals>.<listcomp>)r   rp   r    r   )r!   rv   conflicting_actionsr   conflict_stringr'   r'   r(   _handle_conflict_error  s    z(_ActionsContainer._handle_conflict_errorc             C   sW   xP | D]H \ } } | j  j |  |  j j | d   | j  s | j j |  q Wd  S)N)r   rb  rF  r   r`  rc  )r!   rv   rq  r   r'   r'   r(   _handle_conflict_resolve  s
    	z*_ActionsContainer._handle_conflict_resolve)r   r-   r.   rR   rC  rN  rP  rQ  r|   r\  r^  rW  rc  rh  rR  rS  rT  rD  r_  rs  rt  r'   r'   )r   r(   r6    s$   4	
/($		r6  c                   sL   e  Z d  Z d d   f d d  Z   f d d   Z   f d d   Z   S)r[  Nc                s   | j  } | d | j  | d | j  | d | j  t t |   j } | d | |  | |  _ g  |  _ | j	 |  _	 | j
 |  _
 | j |  _ | j |  _ | j |  _ | j |  _ d  S)NrA  r@  r?  r>  )r  rA  r@  r?  r   r[  rR   rd  r   rB  rE  rF  rI  rK  rH  )r!   r`  rd  r>  r  rO  
super_init)r   r'   r(   rR     s    			z_ArgumentGroup.__init__c                s,   t  t |   j |  } |  j j |  | S)N)r   r[  rW  r   r   )r!   rv   )r   r'   r(   rW    s    z_ArgumentGroup._add_actionc                s*   t  t |   j |  |  j j |  d  S)N)r   r[  rc  r   rb  )r!   rv   )r   r'   r(   rc    s    z_ArgumentGroup._remove_action)r   r-   r.   rR   rW  rc  r'   r'   )r   r(   r[    s   r[  c                   s=   e  Z d  Z d   f d d  Z d d   Z d d   Z   S)r]  Fc                s,   t  t |   j |  | |  _ | |  _ d  S)N)r   r]  rR   r   
_container)r!   r`  r   )r   r'   r(   rR     s    	z _MutuallyExclusiveGroup.__init__c             C   sG   | j  r! t d  } t |   |  j j |  } |  j j |  | S)Nz-mutually exclusive arguments must be optional)r   r   r<   rv  rW  r   r   )r!   rv   r  r'   r'   r(   rW    s    	z#_MutuallyExclusiveGroup._add_actionc             C   s$   |  j  j |  |  j j |  d  S)N)rv  rc  r   rb  )r!   rv   r'   r'   r(   rc  $  s    z&_MutuallyExclusiveGroup._remove_action)r   r-   r.   rR   rW  rc  r'   r'   )r   r(   r]    s   r]  c                   s  e  Z d  Z d d d d g  e d d d d d d   f d d  Z d d   Z d	 d
   Z d d   Z d d   Z d d   Z	 d d d d  Z
 d d d d  Z d d   Z d d   Z d d   Z d d   Z d d   Z d d    Z d! d"   Z d# d$   Z d% d&   Z d' d(   Z d) d*   Z d+ d,   Z d- d.   Z d/ d0   Z d d1 d2  Z d d3 d4  Z d d5 d6  Z d7 d d8 d9  Z d: d;   Z   S)<r   Nr*  errorTc                s  t  t |   j } | d | d | d |	 d |
  | d  k rV t j j t j d  } | |  _ | |  _	 | |  _
 | |  _ | |  _ | |  _ | |  _ |  j } | t d   |  _ | t d   |  _ d  |  _ d d	   } |  j d
 d  |  d | k rd n | d } |  j rI|  j | d | d d d d d t d t d  xM | D]E } |  j |  y | j } Wn t k
 rYqPX|  j j |  qPWd  S)Nr>  r@  r?  rA  r   zpositional argumentszoptional argumentsc             S   s   |  S)Nr'   )r.  r'   r'   r(   identityb  s    z)ArgumentParser.__init__.<locals>.identityr   r*  hr3   rr   rv   r   zshow this help message and exit)r   r   rR   r9   pathbasenamer	  argvrN   rk   epilogformatter_classfromfile_prefix_charsadd_helpallow_abbrevr\  r   _positionals
_optionals_subparsersrC  r|   r   rh  rI  r   rO  )r!   rN   rk   r>  r}  parentsr~  r@  r  r?  rA  r  r  	superinit	add_grouprx  default_prefixrW   defaults)r   r'   r(   rR   <  sB    										zArgumentParser.__init__c                s/   d d d d d d g }   f d d   | D S)	NrN   rk   r>  r~  rA  r  c                s%   g  |  ] } | t    |  f  q Sr'   )r/   )rY   r%   )r!   r'   r(   r\     s   	 z.ArgumentParser._get_kwargs.<locals>.<listcomp>r'   )r!   r   r'   )r!   r(   r   |  s    	zArgumentParser._get_kwargsc       	      K   sA  |  j  d  k	 r" |  j t d   | j d t |    d | k sP d | k r t | j d d   } t | j d d    } |  j | |  |  _  n |  j |  _  | j d  d  k r	|  j	   } |  j
   } |  j } | j |  j | | d  | j   j   | d <|  j | d  } | d	 g  |  } |  j  j |  | S)
Nz(cannot have multiple subparser argumentsr  rd  r>  subcommandsrN   r]   r=  r   )r  rw  r   r  r   r   r\  r  r   r  _get_positional_actionsrH  ro   rk   rb   r   rT  rW  )	r!   r  rd  r>  rV   r   rm   parsers_classrv   r'   r'   r(   add_subparsers  s$    	zArgumentParser.add_subparsersc             C   s0   | j  r |  j j |  n |  j j |  | S)N)r   r  rW  r  )r!   rv   r'   r'   r(   rW    s    	zArgumentParser._add_actionc             C   s   d d   |  j  D S)Nc             S   s   g  |  ] } | j  r |  q Sr'   )r   )rY   rv   r'   r'   r(   r\     s   	z8ArgumentParser._get_optional_actions.<locals>.<listcomp>)rE  )r!   r'   r'   r(   _get_optional_actions  s    	z$ArgumentParser._get_optional_actionsc             C   s   d d   |  j  D S)Nc             S   s   g  |  ] } | j  s |  q Sr'   )r   )rY   rv   r'   r'   r(   r\     s   	z:ArgumentParser._get_positional_actions.<locals>.<listcomp>)rE  )r!   r'   r'   r(   r    s    	z&ArgumentParser._get_positional_actionsc             C   sH   |  j  | |  \ } } | rD t d  } |  j | d j |   | S)Nzunrecognized arguments: %sr   )r  r   rw  r    )r!   r[   r1   r|  r  r'   r'   r(   
parse_args  s
    zArgumentParser.parse_argsc             C   sk  | d  k r" t  j d d   } n t |  } | d  k rC t   } xW |  j D]L } | j t k	 rM t | | j  sM | j t k	 rM t	 | | j | j  qM Wx7 |  j
 D], } t | |  s t	 | | |  j
 |  q WyX |  j | |  \ } } t | t  r$| j t | t   t | t  | | f SWn5 t k
 rft  j   d } |  j t |   Yn Xd  S)NrS   )r	  r|  r   r
   rE  r   r   r   r   r0   rI  _parse_known_argsr  r   r/   delattrr   exc_inforw  r   )r!   r[   r1   rv   r   errr'   r'   r(   r    s,    	zArgumentParser.parse_known_argsc                s.  	 j  d  k	 r 	 j    i    x~ 	 j D]s } | j } xa t | j  D]P \ } }   j | g   } | j | d  |   | j | | d d    qM Wq. Wi   g  } t   }	 x t |	  D] \ } }
 |
 d k r| j d  x_ |	 D] }
 | j d  q Wq 	 j	 |
  } | d  k r4d } n |  | <d } | j |  q Wd j
 |   t    t    d       	 f d d       	  f d	 d
   } 	 j       	  f d d   } g   d 
  rt   } n d } x 
 | k rt 
 f d d    D  } 
 | k rm| 
  } | 
 k rg| 
 qn | 
 
  k r 
 |  }  j |  | 
 | 
  
 qW| 
  }  j  | d    g  } x 	 j D] } |  k r| j r| j t |   q| j d  k	 rt | j t  rt  | j  r| j t  | j  k rt  | j 	 j | | j   qW| r	 j t d  d j
 |   xw 	 j D]l } | j rxZ | j D] } |  k rPqWd d   | j D } t d  } 	 j | d j
 |   qW  f S)NrS   z--r*  AOr]   c                s    j  |    j |  |  } | |  j k	 r  j  |   xQ   j |  g   D]= } |  k rN t d  } t |  } t |  | |   qN W| t k	 r |    | |  d  S)Nznot allowed with argument %s)r   _get_valuesr   r   r   r   r   r   )rv   argument_stringsr   argument_valuesconflict_actionr  action_name)action_conflictsr1   seen_actionsseen_non_default_actionsr!   r'   r(   take_action  s    z5ArgumentParser._parse_known_args.<locals>.take_actionc                s   |  } | \ } } }  j  } g  } x| d  k rP  j   |   |  d S| d  k	 ry| | d  }  j } | d k r| d | k r| j | g  | f  | d }	 |	 | d } | d d   p d  }
  j } | | k r | | } |
 } qvt d  } t | | |   q| d k rW|  d } | g } | j | | | f  Pqt d  } t | | |   q+ |  d }  | d   } | | |  } | | }   | |  } | j | | | f  Pq+ Wx' | D] \ } } }  | | |  qW| S)NrS   r  r   zignored explicit argument %r)_match_argumentr   r@  rF  r   r   )start_indexoption_tuplerv   r   explicit_argmatch_argumentaction_tuples	arg_countrX  charnew_explicit_argoptionals_mapr  stopr[   r   selected_patterns)r#   arg_strings_patternextrasoption_string_indicesr!   r  r'   r(   consume_optional+  sN    
		
	
	
	

z:ArgumentParser._parse_known_args.<locals>.consume_optionalc                s    j  }  |  d   } |  |  } xH t  |  D]7 \ } }   |  |  |  } |  | 7}   | |  q8 W t |  d    d  d   <|  S)N)_match_arguments_partialziprp   )r  match_partialselected_pattern
arg_countsrv   r  r[   )r#   r  r   r!   r  r'   r(   consume_positionalsx  s    	
 z=ArgumentParser._parse_known_args.<locals>.consume_positionalsr   c                s"   g  |  ] } |   k r |  q Sr'   r'   )rY   r   )r  r'   r(   r\     s   	z4ArgumentParser._parse_known_args.<locals>.<listcomp>z(the following arguments are required: %sz, c             S   s+   g  |  ]! } | j  t k	 r t |   q Sr'   )rr   r   r   )rY   rv   r'   r'   r(   r\     s   	z#one of the arguments %s is requiredr   r   )r  _read_args_from_filesrH  r   r   r  r   iterr   _parse_optionalr    r   r  rA   r@   rE  r   r   r   r   r   r   r   r/   r0   
_get_valuerw  r   )r!   r#   r1   rg  r   r   mutex_action	conflictsarg_string_pattern_partsarg_strings_iter
arg_stringr  patternr  r  max_option_string_indexnext_option_string_indexpositionals_end_indexstrings
stop_indexrequired_actionsrv   r   r   r  r'   )r  r#   r  r  r1   r  r   r  r  r!   r  r  r(   r    s    	#	
		!!J			z ArgumentParser._parse_known_argsc             C   s  g  } x | D] } | s- | d |  j  k r= | j |  q y t | d d    m } g  } xA | j   j   D]- } x$ |  j |  D] } | j |  q Wqr W|  j |  } | j |  Wd  QRXWq t k
 r t	 j
   d } |  j t |   Yq Xq W| S)Nr   rS   )r  r   r   readr   convert_arg_line_to_argsr  r   r-  r	  r  rw  r   )r!   r#   new_arg_stringsr  	args_filearg_liner$   r  r'   r'   r(   r    s     z$ArgumentParser._read_args_from_filesc             C   s   | g S)Nr'   )r!   r  r'   r'   r(   r    s    z'ArgumentParser.convert_arg_line_to_argsc             C   s   |  j  |  } t j | |  } | d  k r d  t d  t t d  t t d  i } t d d | j  | j } | j | j |  } t	 | |   t
 | j d   S)Nzexpected one argumentzexpected at most one argumentzexpected at least one argumentzexpected %s argumentzexpected %s argumentsrS   )_get_nargs_patternrI   ra  r   r   r   r   r   r   r   rp   r   )r!   rv   r  nargs_patternra  nargs_errorsr   r  r'   r'   r(   r    s    zArgumentParser._match_argumentc                s   g  } x t  t |  d d  D]w } | d  |  } d j   f d d   | D  } t j | |  } | d  k	 r | j d d   | j   D  Pq W| S)Nr   rS   r]   c                s   g  |  ] }   j  |   q Sr'   )r  )rY   rv   )r!   r'   r(   r\     s   	z;ArgumentParser._match_arguments_partial.<locals>.<listcomp>c             S   s   g  |  ] } t  |   q Sr'   )rp   )rY   r.  r'   r'   r(   r\     s   	 r   )r   rp   r    rI   ra  r   rm   )r!   rl   r  r   r   actions_slicer  ra  r'   )r!   r(   r    s     z'ArgumentParser._match_arguments_partialc       
      C   s  | s
 d  S| d |  j  k r! d  S| |  j k rJ |  j | } | | d  f St |  d k r` d  Sd | k r | j d d  \ } } | |  j k r |  j | } | | | f S|  j rD|  j |  } t |  d k r%d j d d   | D  } d | d | i } t d	  } |  j | |  n t |  d k rD| \ }	 |	 S|  j	 j
 |  rc|  j scd  Sd
 | k rsd  Sd  | d  f S)Nr   rS   =z, c             S   s   g  |  ] \ } } } |  q Sr'   r'   )rY   rv   r   r  r'   r'   r(   r\   ?  s   	z2ArgumentParser._parse_optional.<locals>.<listcomp>ri  matchesz4ambiguous option: %(option)s could match %(matches)sr   )r@  rF  rp   splitr  _get_option_tuplesr    r   rw  rJ  ra  rK  )
r!   r  rv   r   r  option_tuplesoptionsr[   r  r  r'   r'   r(   r    s>    			zArgumentParser._parse_optionalc       
      C   s  g  } |  j  } | d | k r | d | k r d | k rV | j d d  \ } } n | } d  } x6|  j D]> } | j |  rl |  j | } | | | f } | j |  ql Wn | d | k r| d | k r| } d  } | d  d  } | d d   }	 x |  j D]v } | | k rE|  j | } | | |	 f } | j |  q| j |  r|  j | } | | | f } | j |  qWn |  j t d  |  | S)Nr   rS   r  r3   zunexpected option string: %s)r@  r  rF  
startswithr   rw  r   )
r!   r   r   rX  option_prefixr  rv   r   short_option_prefixshort_explicit_argr'   r'   r(   r  Z  s8    	  z!ArgumentParser._get_option_tuplesc             C   s   | j  } | d  k r d } n | t k r3 d } nk | t k rH d } nV | t k r] d } nA | t k rr d } n, | t k r d } n d d j d	 |  } | j r | j d d
  } | j d d
  } | S)Nz(-*A-*)z(-*A?-*)z	(-*[A-]*)z
(-*A[A-]*)z([-AO]*)z(-*A[-AO]*)z(-*%s-*)z-*r  r]   r*  )	r   r   r   r   r   r   r    r   rk  )r!   rv   r   r  r'   r'   r(   r    s$    								z!ArgumentParser._get_nargs_patternc                s    j  t t g k r; y | j d  Wn t k
 r: Yn X| r   j  t k r   j rf   j } n	   j } t	 | t
  r j   |  }  j   |  nV| r   j  t k r   j r   j d  k	 r   j } n | }  j   |  nt |  d k rL  j  d  t g k rL| \ }  j   |  }  j   |  n   j  t k rz   f d d   | D } n   j  t k r   f d d   | D }  j   | d  n=    f d d   | D } x | D] }  j   |  qW| S)Nz--rS   c                s"   g  |  ] }  j    |   q Sr'   )r  )rY   v)rv   r!   r'   r(   r\     s   	 z.ArgumentParser._get_values.<locals>.<listcomp>c                s"   g  |  ] }  j    |   q Sr'   )r  )rY   r  )rv   r!   r'   r(   r\     s   	 r   c                s"   g  |  ] }  j    |   q Sr'   )r  )rY   r  )rv   r!   r'   r(   r\     s   	 )r   r   r   rb  r<   r   r   r   r   r   r   r  _check_valuer   rp   )r!   rv   r#   r&   r  r  r'   )rv   r!   r(   r    s>    		
'	zArgumentParser._get_valuesc             C   s  |  j  d | j | j  } t |  sF t d  } t | | |   y | |  } Wn t k
 r t | j d t | j   } t t	 j
   d  } t | |   Yng t t f k
 rt | j d t | j   } d | d | i } t d  } t | | |   Yn X| S)Nr   z%r is not callabler   rS   r&   z!invalid %(type)s value: %(value)r)rN  r   rU  r   r   r   r/   r   r   r	  r  rV  r<   )r!   rv   r  rZ  r  r   r%   r[   r'   r'   r(   r    s     zArgumentParser._get_valuec             C   sh   | j  d  k	 rd | | j  k rd d | d d j t t | j    i } t d  } t | | |   d  S)Nr&   r   z, z3invalid choice: %(value)r (choose from %(choices)s))r   r    mapr   r   r   )r!   rv   r&   r[   r  r'   r'   r(   r   	  s
    !zArgumentParser._check_valuec             C   s2   |  j    } | j |  j |  j |  j  | j   S)N)r  ro   rk   rE  rH  rb   )r!   rV   r'   r'   r(   format_usage	  s    
zArgumentParser.format_usagec             C   s   |  j    } | j |  j |  j |  j  | j |  j  xK |  j D]@ } | j | j	  | j | j  | j
 | j  | j   qB W| j |  j  | j   S)N)r  ro   rk   rE  rH  ri   r>  rG  re   rd  r}   r   rf   r}  rb   )r!   rV   action_groupr'   r'   r(   rb   	  s    
zArgumentParser.format_helpc             C   s   |  j  d |  j  S)NrN   )r~  rN   )r!   r'   r'   r(   r  (	  s    zArgumentParser._get_formatterc             C   s/   | d  k r t  j } |  j |  j   |  d  S)N)r	  r
  r  r  )r!   filer'   r'   r(   print_usage.	  s    	zArgumentParser.print_usagec             C   s/   | d  k r t  j } |  j |  j   |  d  S)N)r	  r
  r  rb   )r!   r  r'   r'   r(   r  3	  s    	zArgumentParser.print_helpc             C   s,   | r( | d  k r t  j } | j |  d  S)N)r	  stderrwrite)r!   r   r  r'   r'   r(   r  8	  s    	zArgumentParser._print_messager   c             C   s*   | r |  j  | t j  t j |  d  S)N)r  r	  r  r  )r!   statusr   r'   r'   r(   r  A	  s    zArgumentParser.exitc             C   sC   |  j  t j  d |  j d | i } |  j d t d  |  d  S)NrN   r   r3   z%(prog)s: error: %(message)s
)r  r	  r  rN   r  r   )r!   r   r[   r'   r'   r(   rw  F	  s    	zArgumentParser.error)r   r-   r.   r   rR   r   r  rW  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rb   r  r  r  r  r  rw  r'   r'   )r   r(   r   )  sL   4#;,,4	)5__version____all__collectionsr  r   r   osr9   rerI   sysr	  textwrapr   r   r   r   r   r   r   r   r   r   r  r   r   r2   r   r   r   r   r	   r   	Exceptionr   r   r   r   r   r   r   r   r   r   r  r  r  r   r
   r6  r[  r]  r   r'   r'   r'   r(   <module>@   sx   	
 	[#%`6 4"