<!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 g Z d Z d d l Z d d l Z d d l Z d d   Z y d d l m Z m Z Wn* e	 k
 r d d   Z d d   Z Yn Xe 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 Gd" d	   d	  Z Gd# d
   d
 e  Z Gd$ d   d e  Z d% d&   Z d' d(   Z d) e e
 d*  f d+ e e
 d*  f d, e e
 d-  f d. e e
 d.  f i Z d/ d0   Z d1 d2   Z d3 d4 f Z Gd5 d   d  Z d6 d7 Z d6 d8 Z Gd9 d   d  Z  Gd: d   d  Z! Gd; d   d e!  Z" Gd< d   d e!  Z# d= d>   Z$ e Z% d S)?z1.5.3Optionmake_optionSUPPRESS_HELPSUPPRESS_USAGEValuesOptionContainerOptionGroupOptionParserHelpFormatterIndentedHelpFormatterTitledHelpFormatterOptParseErrorOptionErrorOptionConflictErrorOptionValueErrorBadOptionErrora"  
Copyright (c) 2001-2006 Gregory P. Ward.  All rights reserved.
Copyright (c) 2002-2006 Python Software Foundation.  All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:

  * Redistributions of source code must retain the above copyright
    notice, this list of conditions and the following disclaimer.

  * Redistributions in binary form must reproduce the above copyright
    notice, this list of conditions and the following disclaimer in the
    documentation and/or other materials provided with the distribution.

  * Neither the name of the author nor the names of its
    contributors may be used to endorse or promote products derived from
    this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    Nc             C   s   d |  j  j t |   |  f S)Nz<%s at 0x%x: %s>)	__class____name__id)self r   -/opt/alt/python35/lib64/python3.5/optparse.py_reprN   s    r   )gettextngettextc             C   s   |  S)Nr   )messager   r   r   r   [   s    r   c             C   s   | d k r |  S| S)N   r   )Zsingularpluralnr   r   r   r   ^   s    r   c               @   s(   e  Z d  Z d d   Z d d   Z d S)r   c             C   s   | |  _  d  S)N)msg)r   r   r   r   r   __init__g   s    zOptParseError.__init__c             C   s   |  j  S)N)r   )r   r   r   r   __str__j   s    zOptParseError.__str__N)r   
__module____qualname__r    r!   r   r   r   r   r   f   s   c               @   s(   e  Z d  Z d d   Z d d   Z d S)r   c             C   s   | |  _  t |  |  _ d  S)N)r   str	option_id)r   r   optionr   r   r   r    t   s    	zOptionError.__init__c             C   s(   |  j  r d |  j  |  j f S|  j Sd  S)Nzoption %s: %s)r%   r   )r   r   r   r   r!   x   s    	zOptionError.__str__N)r   r"   r#   r    r!   r   r   r   r   r   n   s   c               @   s   e  Z d  Z d S)r   N)r   r"   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               @   s(   e  Z d  Z d d   Z d d   Z d S)r   c             C   s   | |  _  d  S)N)opt_str)r   r'   r   r   r   r       s    zBadOptionError.__init__c             C   s   t  d  |  j S)Nzno such option: %s)_r'   )r   r   r   r   r!      s    zBadOptionError.__str__N)r   r"   r#   r    r!   r   r   r   r   r      s   c               @   s(   e  Z d  Z d d   Z d d   Z d S)AmbiguousOptionErrorc             C   s   t  j |  |  | |  _ d  S)N)r   r    possibilities)r   r'   r*   r   r   r   r       s    zAmbiguousOptionError.__init__c             C   s#   t  d  |  j d j |  j  f S)Nzambiguous option: %s (%s?)z, )r(   r'   joinr*   )r   r   r   r   r!      s    	zAmbiguousOptionError.__str__N)r   r"   r#   r    r!   r   r   r   r   r)      s   r)   c               @   s   e  Z d  Z 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 d   Z d d   Z d  S)!r	   Znonec             C   s   d  |  _  | |  _ | d  k r` y t t j d  } Wn t t f k
 rU d } Yn X| d 8} | |  _ t | t	 | d | d   |  _
 |  _ d |  _ d |  _ d  |  _ | |  _ d |  _ i  |  _ d |  _ d |  _ d  S)	NCOLUMNSP         r   z%defaultz%s %sz%s=%s)parserindent_incrementintosenvironKeyError
ValueErrorwidthminmaxhelp_positionmax_help_positioncurrent_indentlevel
help_widthshort_firstdefault_tagoption_strings_short_opt_fmt_long_opt_fmt)r   r1   r;   r7   r?   r   r   r   r       s$    		
	*							zHelpFormatter.__init__c             C   s   | |  _  d  S)N)r0   )r   r0   r   r   r   
set_parser   s    zHelpFormatter.set_parserc             C   s1   | d k r t  d |   d | d |  _ d  S)N  z/invalid metavar delimiter for short options: %rz%s)rE   rF   )r6   rB   )r   delimr   r   r   set_short_opt_delimiter   s    z%HelpFormatter.set_short_opt_delimiterc             C   s1   | d k r t  d |   d | d |  _ d  S)N=rF   z.invalid metavar delimiter for long options: %rz%s)rI   rF   )r6   rC   )r   rG   r   r   r   set_long_opt_delimiter   s    z$HelpFormatter.set_long_opt_delimiterc             C   s%   |  j  |  j 7_  |  j d 7_ d  S)Nr   )r<   r1   r=   )r   r   r   r   indent   s    zHelpFormatter.indentc             C   s%   |  j  |  j 8_  |  j d 8_ d  S)Nr   )r<   r1   r=   )r   r   r   r   dedent   s    zHelpFormatter.dedentc             C   s   t  d   d  S)Nzsubclasses must implement)NotImplementedError)r   usager   r   r   format_usage   s    zHelpFormatter.format_usagec             C   s   t  d   d  S)Nzsubclasses must implement)rM   )r   headingr   r   r   format_heading  s    zHelpFormatter.format_headingc             C   sB   t  |  j |  j d  } d |  j } t j | | d | d | S)N   rF   initial_indentsubsequent_indent)r9   r7   r<   textwrapfill)r   text
text_widthrK   r   r   r   _format_text  s    	zHelpFormatter._format_textc             C   s   | r |  j  |  d Sd Sd  S)N
rE   )rY   )r   descriptionr   r   r   format_description  s    z HelpFormatter.format_descriptionc             C   s#   | r d |  j  |  d Sd Sd  S)NrZ   rE   )rY   )r   epilogr   r   r   format_epilog  s    zHelpFormatter.format_epilogc             C   su   |  j  d  k s |  j r  | j S|  j  j j | j  } | t k sP | d  k rY |  j } | j j |  j t	 |   S)N)
r0   r@   helpdefaultsgetdest
NO_DEFAULTNO_DEFAULT_VALUEreplacer$   )r   r&   Zdefault_valuer   r   r   expand_default  s    	zHelpFormatter.expand_defaultc                s)  g  }   j  | }   j   j d } t |  | k r[ d   j d | f }   j } n d   j d | | f } d } | j |  | j r   j |  } t j |   j	  } | j d | d | d f  | j
   f d d   | d d   D  n | d
 d	 k r| j d	  d j |  S)Nr.   z%*s%s
rE   z	%*s%-*s  r   c                s&   g  |  ] } d    j  d | f  q S)z%*s%s
rE   )r:   ).0line)r   r   r   
<listcomp>D  s   	z/HelpFormatter.format_option.<locals>.<listcomp>r   rZ   )rA   r:   r<   lenappendr_   rf   rU   wrapr>   extendr+   )r   r&   resultoptsZ	opt_widthindent_first	help_text
help_linesr   )r   r   format_option'  s$    	zHelpFormatter.format_optionc             C   s  |  j    d } xI | j D]> } |  j |  } | |  j | <t | t |  |  j  } q W|  j    x] | j D]R } xI | j D]> } |  j |  } | |  j | <t | t |  |  j  } q Wqp W|  j   |  j   t	 | d |  j
  |  _ t |  j |  j d  |  _ d  S)Nr   r.   rR   )rK   option_listformat_option_stringsrA   r9   rk   r<   option_groupsrL   r8   r;   r:   r7   r>   )r   r0   Zmax_lenoptstringsgroupr   r   r   store_option_stringsJ  s     
 
$

z"HelpFormatter.store_option_stringsc                s   | j    re | j p! | j j        f d d   | j D }    f d d   | j D } n | j } | j }  j r | | } n
 | | } d j |  S)Nc                s#   g  |  ] }  j  |   f  q Sr   )rB   )rg   Zsopt)metavarr   r   r   ri   `  s   	z7HelpFormatter.format_option_strings.<locals>.<listcomp>c                s#   g  |  ] }  j  |   f  q Sr   )rC   )rg   Zlopt)r|   r   r   r   ri   b  s   	z, )takes_valuer|   rb   upper_short_opts
_long_optsr?   r+   )r   r&   Z
short_optsZ	long_optsrp   r   )r|   r   r   rv   \  s    			
z#HelpFormatter.format_option_stringsN)r   r"   r#   rd   r    rD   rH   rJ   rK   rL   rO   rQ   rY   r\   r^   rf   rt   r{   rv   r   r   r   r   r	      s    +
#c               @   s@   e  Z d  Z d d d d d d  Z d d   Z d	 d
   Z d S)r
   r.      Nr   c             C   s   t  j |  | | | |  d  S)N)r	   r    )r   r1   r;   r7   r?   r   r   r   r    s  s    zIndentedHelpFormatter.__init__c             C   s   t  d  | S)Nz
Usage: %s
)r(   )r   rN   r   r   r   rO   {  s    z"IndentedHelpFormatter.format_usagec             C   s   d |  j  d | f S)Nz%*s%s:
rE   )r<   )r   rP   r   r   r   rQ   ~  s    z$IndentedHelpFormatter.format_heading)r   r"   r#   r    rO   rQ   r   r   r   r   r
   o  s   c               @   s@   e  Z d  Z d d d d d d  Z d d   Z d d	   Z d S)
r   r   r   Nc             C   s   t  j |  | | | |  d  S)N)r	   r    )r   r1   r;   r7   r?   r   r   r   r      s    zTitledHelpFormatter.__init__c             C   s   d |  j  t d   | f S)Nz%s  %s
ZUsage)rQ   r(   )r   rN   r   r   r   rO     s    z TitledHelpFormatter.format_usagec             C   s   d | d |  j  t |  f S)Nz%s
%s
z=-)r=   rk   )r   rP   r   r   r   rQ     s    z"TitledHelpFormatter.format_heading)r   r"   r#   r    rO   rQ   r   r   r   r   r     s   c             C   s   |  d  d  j    d k r% d } n` |  d  d  j    d k r` d } |  d d   pZ d }  n% |  d  d  d k r d } n d } | |  |  S)	Nr.   0x   Z0b0r      
   )lower)valtyperadixr   r   r   
_parse_num  s    		r   c             C   s   t  |  t  S)N)r   r2   )r   r   r   r   
_parse_int  s    r   r2   Zintegerlongfloatzfloating-pointcomplexc             C   sY   t  |  j \ } } y | |  SWn1 t k
 rT t t d  | | | f   Yn Xd  S)Nzoption %s: invalid %s value: %r)_builtin_cvtr   r6   r   r(   )r&   rx   valueZcvtZwhatr   r   r   check_builtin  s    r   c             C   sQ   | |  j  k r | Sd j t t |  j    } t t d  | | | f   d  S)Nz, z.option %s: invalid choice: %r (choose from %s))choicesr+   mapreprr   r(   )r&   rx   r   r   r   r   r   check_choice  s    	r   ZNOZDEFAULTc               @   s  e  Z d  Z d d d d d d d d d	 d
 d d g Z d@ Z dA Z dB Z dC Z dD Z dE Z	 d e
 d e
 d e
 d e
 d e i Z 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 e e e e e e e g Z d2 d3   Z e Z d4 d5   Z d6 d7   Z d8 d9   Z d: d;   Z d< d=   Z  d> d?   Z! d S)Fr   actionr   rb   defaultnargsconstr   callbackcallback_argscallback_kwargsr_   r|   storestore_const
store_truestore_falserl   append_constcountversionstringr2   r   r   r   choiceNc             O   s]   g  |  _  g  |  _ |  j |  } |  j |  |  j |  x |  j D] } | |   qE Wd  S)N)r   r   _check_opt_strings_set_opt_strings
_set_attrsCHECK_METHODS)r   rp   attrscheckerr   r   r   r    3  s    		zOption.__init__c             C   s)   d d   | D } | s% t  d   | S)Nc             S   s   g  |  ] } | r |  q Sr   r   )rg   rx   r   r   r   ri   J  s   	 z-Option._check_opt_strings.<locals>.<listcomp>z+at least one option string must be supplied)	TypeError)r   rp   r   r   r   r   F  s    zOption._check_opt_stringsc             C   s   x | D] } t  |  d k  r5 t d | |    q t  |  d k r | d d k od | d d k sz t d | |    |  j j |  q | d d  d k o | d d k s t d | |    |  j j |  q Wd  S)	Nr.   z>invalid option string %r: must be at least two characters longr   -r   zMinvalid short option string %r: must be of the form -x, (x any non-dash char)z--zGinvalid long option string %r: must start with --, followed by non-dash)rk   r   r   rl   r   )r   rp   rx   r   r   r   r   O  s$     	&	zOption._set_opt_stringsc             C   s   xj |  j  D]_ } | | k r: t |  | | |  | | =q
 | d k rY t |  | t  q
 t |  | d   q
 W| r t | j    } t d d j |  |    d  S)Nr   zinvalid keyword arguments: %sz, )ATTRSsetattrrc   sortedkeysr   r+   )r   r   attrr   r   r   r   d  s    
zOption._set_attrsc             C   sG   |  j  d  k r d |  _  n( |  j  |  j k rC t d |  j  |    d  S)Nr   zinvalid action: %r)r   ACTIONSr   )r   r   r   r   _check_actionw  s    zOption._check_actionc             C   s   |  j  d  k rH |  j |  j k r |  j d  k	 r< d |  _  q d |  _  n t |  j  t   ri |  j  j |  _  |  j  d k r d |  _  |  j  |  j k r t d |  j  |    |  j |  j k r t d |  j |    d  S)Nr   r   r$   zinvalid option type: %rz$must not supply a type for action %r)	r   r   ALWAYS_TYPED_ACTIONSr   
isinstancer   TYPESr   TYPED_ACTIONS)r   r   r   r   _check_type}  s    	zOption._check_typec             C   s   |  j  d k rz |  j d  k r0 t d |    q t |  j t t f  s t d t t  |  j   j d  d |    n% |  j d  k	 r t d |  j  |    d  S)Nr   z/must supply a list of choices for type 'choice'z1choices must be a list of strings ('%s' supplied)'r   z#must not supply choices for type %r)r   r   r   r   tuplelistr$   split)r   r   r   r   _check_choice  s    ,zOption._check_choicec             C   s   |  j  |  j k p |  j d  k	 } |  j d  k r| | r| |  j rh |  j d d d   j d d  |  _ n |  j d d |  _ d  S)Nr   r.   r   r(   r   )r   STORE_ACTIONSr   rb   r   re   r   )r   r}   r   r   r   _check_dest  s    	)zOption._check_destc             C   s;   |  j  |  j k r7 |  j d  k	 r7 t d |  j  |    d  S)Nz*'const' must not be supplied for action %r)r   CONST_ACTIONSr   r   )r   r   r   r   _check_const  s    !
zOption._check_constc             C   sV   |  j  |  j k r- |  j d  k rR d |  _ n% |  j d  k	 rR t d |  j  |    d  S)Nr   z*'nargs' must not be supplied for action %r)r   r   r   r   )r   r   r   r   _check_nargs  s    
zOption._check_nargsc             C   s  |  j  d k r t |  j  s4 t d |  j |    |  j d  k	 rl t |  j t  rl t d |  j |    |  j d  k	 rt |  j t  rt d |  j |    na |  j d  k	 r t d |  j |    |  j d  k	 r t d |    |  j d  k	 rt d |    d  S)Nr   zcallback not callable: %rz3callback_args, if supplied, must be a tuple: not %rz4callback_kwargs, if supplied, must be a dict: not %rz.callback supplied (%r) for non-callback optionz.callback_args supplied for non-callback optionz0callback_kwargs supplied for non-callback option)	r   callabler   r   r   r   r   r   dict)r   r   r   r   _check_callback  s0    zOption._check_callbackc             C   s   d j  |  j |  j  S)N/)r+   r   r   )r   r   r   r   r!     s    zOption.__str__c             C   s   |  j  d  k	 S)N)r   )r   r   r   r   r}     s    zOption.takes_valuec             C   s#   |  j  r |  j  d S|  j d Sd  S)Nr   )r   r   )r   r   r   r   get_opt_string  s    	zOption.get_opt_stringc             C   s9   |  j  j |  j  } | d  k r% | S| |  | |  Sd  S)N)TYPE_CHECKERra   r   )r   rx   r   r   r   r   r   check_value  s    zOption.check_valuec                sO   | d  k	 rK  j  d k r+  j   |  St    f d d   | D  Sd  S)Nr   c                s"   g  |  ] }  j    |   q Sr   )r   )rg   v)rx   r   r   r   ri     s   	 z(Option.convert_value.<locals>.<listcomp>)r   r   r   )r   rx   r   r   )rx   r   r   convert_value  s    zOption.convert_valuec             C   s4   |  j  | |  } |  j |  j |  j | | | |  S)N)r   take_actionr   rb   )r   rx   r   valuesr0   r   r   r   process  s    zOption.processc       	      C   s  | d k r t  | | |  n| d k rA t  | | |  j  nb| d k r` t  | | d  nC| d k r t  | | d  n$| d k r | j | g   j |  n | d k r | j | g   j |  j  n | d	 k rt  | | | j | d
  d  n | d k rJ|  j pf  } |  j p(i  } |  j |  | | | | |  nY | d k rm| j   | j   n6 | d k r| j	   | j   n t
 d |  j   d S)Nr   r   r   Tr   Frl   r   r   r   r   r   r_   r   zunknown action %r)r   r   ensure_valuerl   r   r   r   
print_helpexitprint_versionr6   r   )	r   r   rb   rx   r   r   r0   argskwargsr   r   r   r     s4    #

zOption.take_action)
r   r   r   r   rl   r   r   r   r_   r   )r   r   r   r   rl   r   r   )r   rl   r   )r   rl   )r   r   )r   r2   r   r   r   r   )"r   r"   r#   r   r   r   r   r   r   r   r   r   r   r   r    r   r   r   r   r   r   r   r   r   r   r!   r   __repr__r}   r   r   r   r   r   r   r   r   r   r     s   	                   				SUPPRESSZHELPZUSAGEc               @   s   e  Z d  Z d d d  Z d d   Z e Z d d   Z d d	   Z d
 d   Z	 d d   Z
 d d d  Z d d d  Z d d   Z d S)r   Nc             C   s7   | r3 x* | j    D] \ } } t |  | |  q Wd  S)N)itemsr   )r   r`   r   r   r   r   r   r    8  s    zValues.__init__c             C   s   t  |  j  S)N)r$   __dict__)r   r   r   r   r!   =  s    zValues.__str__c             C   sC   t  | t  r |  j | j k St  | t  r; |  j | k St Sd  S)N)r   r   r   r   NotImplemented)r   otherr   r   r   __eq__B  s
    zValues.__eq__c             C   sM   xF t  |   D]8 } | | k r | | } | d  k	 r t |  | |  q Wd  S)N)dirr   )r   r   r   Zdvalr   r   r   _update_carefulJ  s
    
zValues._update_carefulc             C   s   |  j  j |  d  S)N)r   update)r   r   r   r   r   _update_looseW  s    zValues._update_loosec             C   sL   | d k r |  j  |  n, | d k r8 |  j |  n t d |   d  S)NcarefulZloosezinvalid update mode: %r)r   r   r6   )r   r   moder   r   r   _update_  s
    zValues._updater   c             C   s1   t  |  t j | } |  j t |  |  d  S)N)
__import__sysmodulesr   vars)r   modnamer   modr   r   r   read_moduleg  s    
zValues.read_modulec             C   s3   i  } t  t |  j   |  |  j | |  d  S)N)execopenreadr   )r   filenamer   r   r   r   r   	read_filel  s    zValues.read_filec             C   sB   t  |  |  s% t |  |  d  k r5 t |  | |  t |  |  S)N)hasattrgetattrr   )r   r   r   r   r   r   r   q  s    %zValues.ensure_value)r   r"   r#   r    r!   r   r   r   r   r   r   r   r   r   r   r   r   r   r   6  s   c               @   s   e  Z 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 d   Z d d   Z d d    Z d! S)"r   c             C   s1   |  j    | |  _ |  j |  |  j |  d  S)N)_create_option_listoption_classset_conflict_handlerset_description)r   r   conflict_handlerr[   r   r   r   r      s    
	zOptionContainer.__init__c             C   s   i  |  _  i  |  _ i  |  _ d  S)N)
_short_opt	_long_optr`   )r   r   r   r   _create_option_mappings  s    		z'OptionContainer._create_option_mappingsc             C   s(   | j  |  _  | j |  _ | j |  _ d  S)N)r   r   r`   )r   r0   r   r   r   _share_option_mappings  s    z&OptionContainer._share_option_mappingsc             C   s)   | d k r t  d |   | |  _ d  S)Nerrorresolvez$invalid conflict_resolution value %r)r   r   )r6   r   )r   handlerr   r   r   r     s    z$OptionContainer.set_conflict_handlerc             C   s   | |  _  d  S)N)r[   )r   r[   r   r   r   r     s    zOptionContainer.set_descriptionc             C   s   |  j  S)N)r[   )r   r   r   r   get_description  s    zOptionContainer.get_descriptionc             C   s   |  `  |  ` |  ` d  S)N)r   r   r`   )r   r   r   r   destroy  s    zOptionContainer.destroyc             C   sY  g  } x: | j  D]/ } | |  j k r | j | |  j | f  q Wx: | j D]/ } | |  j k rM | j | |  j | f  qM W| rU|  j } | d k r t d d j d d   | D  |   n | d k rUx | D]w \ } } | j d  r| j j	 |  |  j | =n | j  j	 |  |  j | =| j  p;| j s | j
 j j	 |  q Wd  S)Nr   z conflicting option string(s): %sz, c             S   s   g  |  ] } | d   q S)r   r   )rg   cor   r   r   ri     s   	 z3OptionContainer._check_conflict.<locals>.<listcomp>r   z--)r   r   rl   r   r   r   r   r+   
startswithremove	containerru   )r   r&   Zconflict_optsrx   r   Zc_optionr   r   r   _check_conflict  s.    	
zOptionContainer._check_conflictc             O   s;  t  | d t  r( |  j | |   } nQ t |  d k rm | rm | d } t  | t  sy t d |   n t d   |  j |  |  j j |  |  | _	 x | j
 D] } | |  j | <q Wx | j D] } | |  j | <q W| j d  k	 r7| j t k	 r| j |  j | j <n" | j |  j k r7d  |  j | j <| S)Nr   r   znot an Option instance: %rzinvalid arguments)r   r$   r   rk   r   r   r  ru   rl   r  r   r   r   r   rb   r   rc   r`   )r   r   r   r&   rx   r   r   r   
add_option  s(    
	zOptionContainer.add_optionc             C   s"   x | D] } |  j  |  q Wd  S)N)r  )r   ru   r&   r   r   r   add_options   s    zOptionContainer.add_optionsc             C   s"   |  j  j |  p! |  j j |  S)N)r   ra   r   )r   r'   r   r   r   
get_option  s    zOptionContainer.get_optionc             C   s   | |  j  k p | |  j k S)N)r   r   )r   r'   r   r   r   
has_option
  s    zOptionContainer.has_optionc             C   s   |  j  j |  } | d  k r0 |  j j |  } | d  k rL t d |   x | j D] } |  j  | =qV Wx | j D] } |  j | =qt W| j j j |  d  S)Nzno such option %r)	r   ra   r   r6   r   r   r  ru   r  )r   r'   r&   rx   r   r   r   remove_option  s    zOptionContainer.remove_optionc             C   sY   |  j  s d Sg  } x6 |  j  D]+ } | j t k	 r | j | j |   q Wd j |  S)NrE   )ru   r_   r   rl   rt   r+   )r   	formatterro   r&   r   r   r   format_option_help  s    	z"OptionContainer.format_option_helpc             C   s   | j  |  j    S)N)r\   r   )r   r  r   r   r   r\   '  s    z"OptionContainer.format_descriptionc             C   sQ   g  } |  j  r% | j |  j |   |  j rD | j |  j |   d j |  S)NrZ   )r[   rl   r\   ru   r  r+   )r   r  ro   r   r   r   format_help*  s    		zOptionContainer.format_helpN)r   r"   r#   r    r   r   r   r   r   r   r  r  r  r  r	  r
  r  r\   r  r   r   r   r   r   w  s     			c               @   sO   e  Z d  Z d d d  Z d d   Z d d   Z d d	   Z d
 d   Z d S)r   Nc             C   s2   | |  _  t j |  | j | j |  | |  _ d  S)N)r0   r   r    r   r   title)r   r0   r  r[   r   r   r   r    5  s    	zOptionGroup.__init__c             C   s   g  |  _  |  j |  j  d  S)N)ru   r   r0   )r   r   r   r   r   ;  s    	zOptionGroup._create_option_listc             C   s   | |  _  d  S)N)r  )r   r  r   r   r   	set_title?  s    zOptionGroup.set_titlec             C   s   t  j |   |  ` d  S)N)r   r   ru   )r   r   r   r   r   B  s    zOptionGroup.destroyc             C   s@   | j  |  j  } | j   | t j |  |  7} | j   | S)N)rQ   r  rK   r   r  rL   )r   r  ro   r   r   r   r  I  s
    

zOptionGroup.format_help)r   r"   r#   r    r   r  r   r  r   r   r   r   r   3  s
   c               @   s  e  Z d  Z g  Z d d e d d d d d d d 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 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( 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: d d; d<  Z  d= d>   Z! d? d@   Z" d dA dB  Z# dC dD   Z$ d dE dF  Z% d dG dH  Z& dI dJ   Z' d dK dL  Z( d dM dN  Z) d S)Or   Nr   Tc             C   s   t  j |  | | |  |  j |  |	 |  _ | |  _ d |  _ d |  _ | d  k r\ t   } | |  _ |  j j	 |   |
 |  _
 |  j | d | |  j   d  S)NTadd_help)r   r    	set_usageprogr   allow_interspersed_argsprocess_default_valuesr
   r  rD   r]   _populate_option_list_init_parsing_state)r   rN   ru   r   r   r   r[   r  Zadd_help_optionr  r]   r   r   r   r      s    							zOptionParser.__init__c             C   sA   t  j |   x |  j D] } | j   q W|  ` |  ` |  ` d  S)N)r   r   rw   ru   r  )r   rz   r   r   r   r     s    zOptionParser.destroyc             C   s    g  |  _  g  |  _ |  j   d  S)N)ru   rw   r   )r   r   r   r   r     s    		z OptionParser._create_option_listc             C   s&   |  j  d d d d d t d  d  S)Nz-hz--helpr   r_   zshow this help message and exit)r  r(   )r   r   r   r   _add_help_option  s    zOptionParser._add_help_optionc             C   s#   |  j  d d d d t d  d  S)Nz	--versionr   r   r_   z&show program's version number and exit)r  r(   )r   r   r   r   _add_version_option  s    z OptionParser._add_version_optionc             C   sS   |  j  r |  j |  j   | r, |  j |  |  j r? |  j   | rO |  j   d  S)N)standard_option_listr  r   r  r  )r   ru   r  r   r   r   r    s    		
z"OptionParser._populate_option_listc             C   s   d  |  _  d  |  _ d  |  _ d  S)N)rargslargsr   )r   r   r   r   r    s    		z OptionParser._init_parsing_statec             C   sn   | d  k r t  d  |  _ nL | t k r6 d  |  _ n4 | j   j d  ra | d d   |  _ n	 | |  _ d  S)Nz%prog [options]zusage:    )r(   rN   r   r   r  )r   rN   r   r   r   r    s    zOptionParser.set_usagec             C   s   d |  _  d  S)NT)r  )r   r   r   r   enable_interspersed_args  s    z%OptionParser.enable_interspersed_argsc             C   s   d |  _  d  S)NF)r  )r   r   r   r   disable_interspersed_args  s    z&OptionParser.disable_interspersed_argsc             C   s   | |  _  d  S)N)r  )r   r   r   r   r   set_process_default_values
  s    z'OptionParser.set_process_default_valuesc             C   s   | |  j  | <d  S)N)r`   )r   rb   r   r   r   r   set_default  s    zOptionParser.set_defaultc             K   s   |  j  j |  d  S)N)r`   r   )r   r   r   r   r   set_defaults  s    zOptionParser.set_defaultsc             C   s;   |  j  d  d   } x! |  j D] } | j | j   q W| S)N)ru   rw   rn   )r   optionsrz   r   r   r   _get_all_options  s    zOptionParser._get_all_optionsc             C   s   |  j  s t |  j  S|  j j   } xZ |  j   D]L } | j | j  } t | t  r2 | j	   } | j
 | |  | | j <q2 Wt |  S)N)r  r   r`   copyr#  ra   rb   r   r$   r   r   )r   r`   r&   r   r'   r   r   r   get_default_values  s    	zOptionParser.get_default_valuesc             O   s   t  | d t  r( t |  | |  } nl t |  d k r | r | d } t  | t  sj t d |   | j |  k	 r t d   n t d   |  j j |  | S)Nr   r   znot an OptionGroup instance: %rz"invalid OptionGroup (wrong parser)zinvalid arguments)	r   r$   r   rk   r   r0   r6   rw   rl   )r   r   r   rz   r   r   r   add_option_group*  s    
zOptionParser.add_option_groupc             C   sD   |  j  j |  p! |  j j |  } | r@ | j |  k	 r@ | j Sd  S)N)r   ra   r   r  )r   r'   r&   r   r   r   get_option_group:  s
    zOptionParser.get_option_groupc             C   s/   | d  k r t  j d d   S| d  d   Sd  S)Nr   )r   argv)r   r   r   r   r   	_get_argsD  s    zOptionParser._get_argsc             C   s   |  j  |  } | d  k r' |  j   } | |  _ g  |  _ } | |  _ y |  j | | |  } Wn> t t f k
 r } z |  j t	 |   WYd  d  } ~ Xn X| | } |  j
 | |  S)N)r)  r%  r  r  r   _process_argsr   r   r   r$   check_values)r   r   r   r  r  stoperrr   r   r   
parse_argsJ  s    		&
zOptionParser.parse_argsc             C   s
   | | f S)Nr   )r   r   r   r   r   r   r+  q  s    zOptionParser.check_valuesc             C   s   x | r | d } | d k r* | d =d  S| d d  d k rS |  j  | |  q | d  d  d k r t |  d k r |  j | |  q |  j r | j |  | d =q d  Sq Wd  S)Nr   z--r.   r   r   )_process_long_optrk   _process_short_optsr  rl   )r   r  r  r   argr   r   r   r*  ~  s    
	
(	
zOptionParser._process_argsc             C   s   t  | |  j  S)N)_match_abbrevr   )r   rx   r   r   r   _match_long_opt  s    zOptionParser._match_long_optc       
      C   sK  | j  d  } d | k rL | j d d  \ } } | j d |  d } n | } d } |  j |  } |  j | } | j   r| j } t |  | k  r |  j t	 d d |  d | d	 | i  q1| d k r | j  d  }	 q1t
 | d |   }	 | d |  =n& | r+|  j t d
  |  n d  }	 | j | |	 | |   d  S)Nr   rI   r   TFz.%(option)s option requires %(number)d argumentz/%(option)s option requires %(number)d argumentsr&   numberz%s option does not take a value)popr   insertr3  r   r}   r   rk   r   r   r   r(   r   )
r   r  r   r1  rx   Znext_argZhad_explicit_valuer&   r   r   r   r   r   r/    s0    			zOptionParser._process_long_optc             C   s^  | j  d  } d } d } x<| d d   D]*} d | } |  j j |  } | d 7} | sj t |   | j   r3| t |  k  r | j d | | d    d } | j }	 t |  |	 k  r |  j t	 d d |	  d | d	 |	 i  q9|	 d k r| j  d  }
 q9t
 | d |	   }
 | d |	  =n d  }
 | j | |
 | |   | r, Pq, Wd  S)
Nr   Fr   r   Tz.%(option)s option requires %(number)d argumentz/%(option)s option requires %(number)d argumentsr&   r4  )r5  r   ra   r   r}   rk   r6  r   r   r   r   r   )r   r  r   r1  r,  iZchrx   r&   r   r   r   r   r   r0    s6    

		z OptionParser._process_short_optsc             C   s1   |  j  d  k r& t j j t j d  S|  j  Sd  S)Nr   )r  r3   pathbasenamer   r(  )r   r   r   r   get_prog_name  s    zOptionParser.get_prog_namec             C   s   | j  d |  j    S)Nz%prog)re   r:  )r   sr   r   r   expand_prog_name  s    zOptionParser.expand_prog_namec             C   s   |  j  |  j  S)N)r<  r[   )r   r   r   r   r     s    zOptionParser.get_descriptionr   c             C   s'   | r t  j j |  t  j |  d  S)N)r   stderrwriter   )r   statusr   r   r   r   r     s    zOptionParser.exitc             C   s4   |  j  t j  |  j d d |  j   | f  d  S)Nr.   z%s: error: %s
)print_usager   r=  r   r:  )r   r   r   r   r   r     s    zOptionParser.errorc             C   s-   |  j  r% |  j j |  j |  j    Sd Sd  S)NrE   )rN   r  rO   r<  )r   r   r   r   	get_usage"  s    		zOptionParser.get_usagec             C   s#   |  j  r t |  j   d | d  S)Nfile)rN   printrA  )r   rB  r   r   r   r@  )  s    		zOptionParser.print_usagec             C   s!   |  j  r |  j |  j   Sd Sd  S)NrE   )r   r<  )r   r   r   r   get_version5  s    	zOptionParser.get_versionc             C   s#   |  j  r t |  j   d | d  S)NrB  )r   rC  rD  )r   rB  r   r   r   r   ;  s    	zOptionParser.print_versionc             C   s   | d  k r |  j  } | j |   g  } | j | j t d    | j   |  j r} | j t j |  |   | j d  x4 |  j	 D]) } | j | j
 |   | j d  q W| j   d j | d  d   S)NZOptionsrZ   rE   r   rj   )r  r{   rl   rQ   r(   rK   ru   r   r  rw   r  rL   r+   )r   r  ro   rz   r   r   r   r  F  s    	
	
zOptionParser.format_option_helpc             C   s   | j  |  j  S)N)r^   r]   )r   r  r   r   r   r^   W  s    zOptionParser.format_epilogc             C   s   | d  k r |  j  } g  } |  j r; | j |  j   d  |  j r^ | j |  j |  d  | j |  j |   | j |  j |   d j |  S)NrZ   rE   )	r  rN   rl   rA  r[   r\   r  r^   r+   )r   r  ro   r   r   r   r  Z  s    			zOptionParser.format_helpc             C   s,   | d  k r t  j } | j |  j    d  S)N)r   stdoutr>  r  )r   rB  r   r   r   r   f  s    	zOptionParser.print_help)*r   r"   r#   r  r   r    r   r   r  r  r  r  r  r  r  r  r   r!  r#  r%  r&  r'  r)  r.  r+  r*  r3  r/  r0  r:  r<  r   r   r   rA  r@  rD  r   r  r^   r  r   r   r   r   r   r   Q  s^   F
	
'3	$)
c                s{     | k r   S  f d d   | j    D } t |  d k rI | d S| s^ t     n | j   t   |   d  S)Nc                s%   g  |  ] } | j     r |  q Sr   )r  )rg   Zword)r;  r   r   ri     s   	 z!_match_abbrev.<locals>.<listcomp>r   r   )r   rk   r   sortr)   )r;  Zwordmapr*   r   )r;  r   r2  s  s    
r2  )&__version____all__Z__copyright__r   r3   rU   r   r   r   ImportErrorr(   	Exceptionr   r   r   r   r   r)   r	   r
   r   r   r   r   r   r   r   r   rc   r   r   r   r   r   r   r   r2  r   r   r   r   r   <module>   sp   	 

 t

A  $