
    z%i                        	 d Z g dZdZddlZddlZddlZd Z	 ddlmZmZ eZ
 G d	 d
e      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d d      Z G d de      Z G d de      Zd Zd Ze e
d      fe e
d      fe e
d      fe e
d      fd Zd! Zd" Zd#Z G d$ d%      Zd&Zd'Z G d( d)      Z  G d* d+      Z! G d, d-e!      Z" G d. d/e!      Z#d0 Z$eZ%y# e	$ r	 d Zd ZY w xY w)1z1.5.3)Optionmake_optionSUPPRESS_HELPSUPPRESS_USAGEValuesOptionContainerOptionGroupOptionParserHelpFormatterIndentedHelpFormatterTitledHelpFormatterOptParseErrorOptionErrorOptionConflictErrorOptionValueErrorBadOptionErrorcheck_choicea"  
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                 L    d| j                   j                  t        |       | fz  S )Nz<%s at 0x%x: %s>)	__class____name__idselfs    </home/uftp/.pyenv/versions/3.12.0/lib/python3.12/optparse.py_reprr   O   s"    !8!8"T(D III    )gettextngettextc                     | S N )messages    r   r   r   \   s    r   c                     |dk(  r| S |S N   r!   )singularpluralns      r   r   r   _   s    6Or   c                       e Zd Zd Zd Zy)r   c                     || _         y r    msgr   r,   s     r   __init__zOptParseError.__init__h   s	    r   c                     | j                   S r    r+   r   s    r   __str__zOptParseError.__str__k   s    xxr   Nr   
__module____qualname__r.   r0   r!   r   r   r   r   g   s    r   r   c                       e Zd Z	 d Zd Zy)r   c                 2    || _         t        |      | _        y r    )r,   str	option_id)r   r,   options      r   r.   zOptionError.__init__u   s    Vr   c                 j    | j                   rd| j                   d| j                  S | j                  S )Nzoption z: )r7   r,   r   s    r   r0   zOptionError.__str__y   s%    >>&*nndhh??88Or   Nr1   r!   r   r   r   r   o   s    
%r   r   c                       e Zd Zy)r   Nr   r2   r3   r!   r   r   r   r      s    r   r   c                       e Zd Zy)r   Nr;   r!   r   r   r   r      s    r   r   c                       e Zd Z	 d Zd Zy)r   c                     || _         y r    )opt_strr   r?   s     r   r.   zBadOptionError.__init__   s	    r   c                 2    t        d      | j                  z  S )Nzno such option: %s)_r?   r   s    r   r0   zBadOptionError.__str__   s    %&55r   Nr1   r!   r   r   r   r      s    6r   r   c                       e Zd Z	 d Zd Zy)AmbiguousOptionErrorc                 >    t         j                  | |       || _        y r    )r   r.   possibilities)r   r?   rF   s      r   r.   zAmbiguousOptionError.__init__   s    g.*r   c                 h    t        d      | j                  dj                  | j                        fz  S )Nzambiguous option: %s (%s?), )rB   r?   joinrF   r   s    r   r0   zAmbiguousOptionError.__str__   s2    ./<<4+=+=!>?@ 	Ar   Nr1   r!   r   r   rD   rD      s    +Ar   rD   c                   l    e Zd Z	 dZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zy)r
   nonec                 d   d | _         || _        |"	 t        t        j                  d         }|dz  }|| _        t        |t        |dz
  |dz              x| _
        | _        d| _        d| _        d | _        || _        d| _        i | _        d| _        d| _        y # t
        t        f$ r d}Y w xY w)	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   rR   r\   rX   r`   s        r   r.   zHelpFormatter.__init__   s    
  0=BJJy12 QJE
%s52:7G!7K'LM	NT3
&% %$ j) s   B B/.B/c                     || _         y r    )rQ   r   rQ   s     r   
set_parserzHelpFormatter.set_parser   s	    r   c                 B    |dvrt        d|z        d|z   dz   | _        y )N)  z/invalid metavar delimiter for short options: %r%s)rW   rc   r   delims     r   set_short_opt_delimiterz%HelpFormatter.set_short_opt_delimiter   s2    	!AEIK K"UlT1r   c                 B    |dvrt        d|z        d|z   dz   | _        y )N)=rk   z.invalid metavar delimiter for long options: %rrl   )rW   rd   rm   s     r   set_long_opt_delimiterz$HelpFormatter.set_long_opt_delimiter   s2    
"@5HJ J!E\D0r   c                 l    | xj                   | j                  z  c_         | xj                  dz  c_        y r$   r]   rR   r^   r   s    r   indentzHelpFormatter.indent   s&    t444

a
r   c                 l    | xj                   | j                  z  c_         | xj                  dz  c_        y r$   rt   r   s    r   dedentzHelpFormatter.dedent   s&    t444

a
r   c                     t        d      Nzsubclasses must implementNotImplementedErrorr   usages     r   format_usagezHelpFormatter.format_usage       !"=>>r   c                     t        d      ry   rz   r   headings     r   format_headingzHelpFormatter.format_heading  r   r   c                     	 t        | j                  | j                  z
  d      }d| j                  z  }t        j                  ||||      S )N   rk   )initial_indentsubsequent_indent)rZ   rX   r]   textwrapfill)r   text
text_widthru   s       r   _format_textzHelpFormatter._format_text  sP    	 d&9&992>
T(((}}T',2/57 	7r   c                 0    |r| j                  |      dz   S yN
rj   r   r   descriptions     r   format_descriptionz HelpFormatter.format_description  s    $$[1D88r   c                 6    |rd| j                  |      z   dz   S yr   r   )r   epilogs     r   format_epilogzHelpFormatter.format_epilog  s#    $++F33d::r   c                 2   | j                   | j                  s|j                  S | j                   j                  j	                  |j
                        }|t        u s|| j                  }|j                  j                  | j                  t        |            S r    )
rQ   ra   helpdefaultsgetdest
NO_DEFAULTNO_DEFAULT_VALUEreplacer6   )r   r8   default_values      r   expand_defaultzHelpFormatter.expand_default  sv    ;;d&6&6;;,,00=J&-*? 11M{{""4#3#3S5GHHr   c           	      t   g }| j                   |   }| j                  | j                  z
  dz
  }t        |      |kD  rd| j                  d|fz  }| j                  }nd| j                  d||fz  }d}|j	                  |       |j
                  r~| j                  |      }t        j                  || j                        }|j	                  d|d|d   fz         |j                  |dd  D cg c]  }d| j                  d|fz   c}       n|d   dk7  r|j	                  d       dj                  |      S c c}w )	NrO   z%*s%s
rj   z	%*s%-*s  r   r%   r   )rb   r[   r]   lenappendr   r   r   wrapr_   extendrI   )	r   r8   resultopts	opt_widthindent_first	help_text
help_lineslines	            r   format_optionzHelpFormatter.format_option(  s8    ""6*&&)<)<<q@	t9y  3 3R>>D--L$"5"5r9d!KKDLd;;++F3I!y$//BJMM)|RA&GGHMM'1!"~7# %(:(:B'EE 7 8"XMM$wwv	7s   *D5c                    | j                          d}|j                  D ]D  }| j                  |      }|| j                  |<   t	        |t        |      | j                  z         }F | j                          |j                  D ]U  }|j                  D ]D  }| j                  |      }|| j                  |<   t	        |t        |      | j                  z         }F W | j                          | j                          t        |dz   | j                        | _        t	        | j                  | j                  z
  d      | _        y )Nr   rO   r   )ru   option_listformat_option_stringsrb   rZ   r   r]   option_groupsrw   rY   r\   r[   rX   r_   )r   rQ   max_lenoptstringsgroups         r   store_option_stringsz"HelpFormatter.store_option_stringsK  s    %% 	GC005G'.D$'3w<$2E2E#EFG	G 	)) 	KE(( K44S9+2##C(gs7|d6I6I'IJK	K
 	 1d.D.DEdjj4+=+==rBr   c                    	 |j                         ry|j                  xs |j                  j                         }|j                  D cg c]  }| j
                  ||fz   }}|j                  D cg c]  }| j                  ||fz   }}n|j                  }|j                  }| j                  r||z   }n||z   }dj                  |      S c c}w c c}w )NrH   )
takes_valuemetavarr   upper_short_optsrc   
_long_optsrd   r`   rI   )r   r8   r   sopt
short_optslopt	long_optsr   s           r   r   z#HelpFormatter.format_option_strings]  s    Nnn;(9(9(;G&,&8&8:" --w? :J : &,%6%68! ++tWo= 8I 8  ++J))I	)Dz)Dyy:8s   C0CN)r   r2   r3   r   r.   rh   ro   rr   ru   rw   r~   r   r   r   r   r   r   r   r   r!   r   r   r
   r
      s^    'R %221
??
7I!FC$r   r
   c                   *    e Zd Z	 	 	 	 	 ddZd Zd Zy)r   Nc                 6    t         j                  | ||||       y r    r
   r.   re   s        r   r.   zIndentedHelpFormatter.__init__t       
 	"$5uk	Kr   c                     t        d      |z  S )Nz
Usage: %s
)rB   r|   s     r   r~   z"IndentedHelpFormatter.format_usage|  s    %''r   c                 &    d| j                   d|fz  S )Nz%*s%s:
rj   )r]   r   s     r   r   z$IndentedHelpFormatter.format_heading  s    T00"g>>>r   )rO      Nr%   r   r2   r3   r.   r~   r   r!   r   r   r   r   p  s%     #$#%	K(?r   r   c                   *    e Zd Z	 	 	 	 	 ddZd Zd Zy)r   Nc                 6    t         j                  | ||||       y r    r   re   s        r   r.   zTitledHelpFormatter.__init__  r   r   c                 B    | j                  t        d            d|dS )NUsagez  r   )r   rB   r|   s     r   r~   z TitledHelpFormatter.format_usage  s    !007<eDDr   c                 D    |dd| j                      t        |      z  dS )Nr   z=-)r^   r   r   s     r   r   z"TitledHelpFormatter.format_heading  s    $d4::&6W&EFFr   )r   r   Nr   r   r!   r   r   r   r     s'     #$#%	KEGr   r   c                     | d d j                         dk(  rd}n/| d d j                         dk(  rd}| dd  xs d} n| d d dk(  rd}nd} || |      S )	NrO   0x   0b0r%      
   )lower)valtyperadixs      r   
_parse_numr     sg    
2Aw}}$	RaD	 !"gn	RaCUr   c                 "    t        | t              S r    )r   rS   )r   s    r   
_parse_intr     s    c3r   integerzfloating-pointcomplex)rS   longfloatr   c                     t         | j                     \  }}	  ||      S # t        $ r t        t	        d      |||fz        w xY w)Nzoption %s: invalid %s value: %r)_builtin_cvtr   rW   r   rB   )r8   r   valuecvtwhats        r   check_builtinr     sY    v{{+KS$G5z G/0Cu3EEG 	GGs	     $Ac                     || j                   v r|S dj                  t        t        | j                               }t	        t        d      |||fz        )NrH   z.option %s: invalid choice: %r (choose from %s))choicesrI   mapreprr   rB   )r8   r   r   r   s       r   r   r     sQ    ))Cfnn56>?E7#$% 	%r   )NODEFAULTc                       e Zd Z	 g dZdZdZdZdZdZdZ	e
e
e
e
edZd	Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZeeeeeeegZd ZeZd Zd Zd Zd Zd Z d Z!y	)r   )actionr   r   defaultnargsconstr   callbackcallback_argscallback_kwargsr   r   )
storestore_const
store_truestore_falser   append_constcountr   r   version)r   r   r   r   r   r   r   )r   r   r   )r   r   )r   r   )stringrS   r   r   r   choice)rS   r   r   r   r   Nc                     g | _         g | _        | j                  |      }| j                  |       | j	                  |       | j
                  D ]
  } ||         y r    )r   r   _check_opt_strings_set_opt_strings
_set_attrsCHECK_METHODS)r   r   attrscheckers       r   r.   zOption.__init__4  s]     &&t,d# 	 )) 	GDM	r   c                 N    |D cg c]  }|s|	 }}|st        d      |S c c}w )Nz+at least one option string must be supplied)	TypeErrorr   r   r   s      r   r   zOption._check_opt_stringsG  s2      $+s++IJJ ,s   ""c                 R   |D ]  }t        |      dk  rt        d|z  |       t        |      dk(  r;|d   dk(  r|d   dk7  st        d|z  |       | j                  j                  |       i|dd dk(  r|d   dk7  st        d|z  |       | j                  j                  |        y )	NrO   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)--zGinvalid long option string %r: must start with --, followed by non-dash)r   r   r   r   r   r  s      r   r   zOption._set_opt_stringsP  s     	,C3x!|!;=@ABFH H SQA##a&C-%HJMN    '',AaD(SVs]%CEHI  &&s+%	,r   c                    | j                   D ]>  }||v rt        | |||          ||= |dk(  rt        | |t               2t        | |d        @ |r7t        |j	                               }t        ddj                  |      z  |       y )Nr   zinvalid keyword arguments: %srH   )ATTRSsetattrr   sortedkeysr   rI   )r   r  attrs      r   r  zOption._set_attrse  s    JJ 	.Du}dE$K0$K9$D$
3D$-	. 5::<(E/$))E2BB  r   c                     | j                   d| _         y | j                   | j                  vrt        d| j                   z  |       y )Nr   zinvalid action: %r)r   ACTIONSr   r   s    r   _check_actionzOption._check_actionx  s?    ;;!DK[[,2T[[@$GG -r   c                    | j                   5| j                  | j                  v r| j                  d| _         y d| _         y y t	        | j                   t               r| j                   j
                  | _         | j                   dk(  rd| _         | j                   | j                  vrt        d| j                   z  |       | j                  | j                  vrt        d| j                  z  |       y )Nr   r   r6   zinvalid option type: %rz$must not supply a type for action %r)	r   r   ALWAYS_TYPED_ACTIONSr   
isinstancer   TYPESr   TYPED_ACTIONSr   s    r   _check_typezOption._check_type~  s    99{{d777<<+ (DI !)DI 8 $))T* II..	yyE!$	yy

*!";dii"GNN{{$"4"44!:T[[H$P P 5r   c                 X   | j                   dk(  rv| j                  t        d|       t        | j                  t        t
        f      s=t        dt        t        | j                              j                  d      d   z  |       y | j                  t        d| j                   z  |       y )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listr6   splitr   s    r   _check_choicezOption._check_choice  s    99 ||#!EtM Mudm<!G$t||,-33C8;<=AC C = \\%5		A4I I &r   c                 
   | j                   | j                  v xs | j                  d u}| j                  O|rL| j                  r(| j                  d   dd  j                  dd      | _        y | j                  d   d   | _        y y y )Nr   rO   r	  rB   r%   )r   STORE_ACTIONSr   r   r   r   r   )r   r   s     r   _check_destzOption._check_dest  s     {{d&8&88 -yy, 	99  OOA.qr2::3D	 ,,Q/2	 "-r   c                     | j                   | j                  vr&| j                  t        d| j                   z  |       y y )Nz*'const' must not be supplied for action %r)r   CONST_ACTIONSr   r   r   s    r   _check_constzOption._check_const  sB    ;;d000TZZ5K<t{{J  6L0r   c                     | j                   | j                  v r| j                  d| _        y y | j                  t        d| j                   z  |       y )Nr%   z*'nargs' must not be supplied for action %r)r   r  r   r   r   s    r   _check_nargszOption._check_nargs  sU    ;;$,,,zz!
 "ZZ#<t{{J  $r   c                 (   | j                   dk(  rt        | j                        st        d| j                  z  |       | j                  3t        | j                  t              st        d| j                  z  |       | j                  4t        | j                  t              st        d| j                  z  |       y y | j                  t        d| j                  z  |       | j                  t        d|       | j                  t        d|       y )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   dictr   s    r   _check_callbackzOption._check_callback  s/   ;;*$DMM*!/$--?G G"".t1159!I(()*.0 0 $$0t33T:!J**+,02 2 ; 1 }}(!Dmm$%)+ + !!-!DdL L##/!FN N 0r   c                 R    dj                  | j                  | j                  z         S )N/)rI   r   r   r   s    r   r0   zOption.__str__  s     xx((4??:;;r   c                     | j                   d uS r    )r   r   s    r   r   zOption.takes_value  s    yy$$r   c                 V    | j                   r| j                   d   S | j                  d   S Nr   )r   r   r   s    r   get_opt_stringzOption.get_opt_string  s)    ????1%%##A&&r   c                 h    | j                   j                  | j                        }||S  || ||      S r    )TYPE_CHECKERr   r   )r   r   r   r  s       r   check_valuezOption.check_value  s5    ##''		2?L4e,,r   c           	          |J| j                   dk(  r| j                  ||      S t        |D cg c]  }| j                  ||       c}      S y c c}w r$   )r   r4  r  )r   r   r   vs       r   convert_valuezOption.convert_value   sT    zzQ''U33F1d..sA6FGG	  Gs   Ac                 z    | j                  ||      }| j                  | j                  | j                  ||||      S r    )r7  take_actionr   r   )r   r   r   valuesrQ   s        r   processzOption.process  sB     ""3.
 KKC@ 	@r   c                    |dk(  rt        |||       y|dk(  rt        ||| j                         y|dk(  rt        ||d       y|dk(  rt        ||d       y|dk(  r"|j                  |g       j                  |       y|dk(  r,|j                  |g       j                  | j                         y|d	k(  r!t        |||j                  |d
      dz          y|dk(  r:| j                  xs d}| j
                  xs i } | j                  | |||g|i | y|dk(  r!|j                          |j                          y|dk(  r!|j                          |j                          yt        d| j                  z        )Nr   r   r   Tr   Fr   r   r   r   r%   r   r!   r   r   zunknown action %r)r  r   ensure_valuer   r   r   r   
print_helpexitprint_versionrW   r   )	r   r   r   r   r   r:  rQ   argskwargss	            r   r9  zOption.take_action  s   WFD%(4 3 }$FD$**-0 / |#FD$', + }$FD%(( ' xb)007$ # ~%b)00<   wFD&"5"5dA">"BC  z!%%+D))/RFDMM$UFDTDVD  vKKM  y   "KKM  04;;>??r   )"r   r2   r3   r  r  r!  r  r  r$  r  r   r   r3  r  r.   r   r   r  r  r  r  r"  r%  r'  r+  r0   r   __repr__r   r1  r4  r7  r;  r9  r!   r   r   r   r     s    *E	GM!M&%M
 DE$ !. - - - ,	L  M
&,*&HP0I3N8 # " !!$&M< H%'-H
@r   r   SUPPRESSHELPSUPPRESSUSAGEc                   L    e Zd ZddZd ZeZd Zd Zd Z	d Z
ddZdd	Zd
 Zy)r   Nc                 T    |r&|j                         D ]  \  }}t        | ||        y y r    )itemsr  )r   r   r  r   s       r   r.   zValues.__init__9  s0    '~~/ )sdC() r   c                 ,    t        | j                        S r    )r6   __dict__r   s    r   r0   zValues.__str__>  s    4==!!r   c                     t        |t              r| j                  |j                  k(  S t        |t              r| j                  |k(  S t        S r    )r  r   rJ  r*  NotImplemented)r   others     r   __eq__zValues.__eq__C  s>    eV$==ENN22t$==E))!!r   c                 Z    	 t        |       D ]  }||v s||   }|t        | ||        y r    )dirr  )r   r*  r  dvals       r   _update_carefulzValues._update_carefulK  s>    	 I 	.Dt|Dz#D$-		.r   c                 <    	 | j                   j                  |       y r    )rJ  update)r   r*  s     r   _update_loosezValues._update_looseX  s    	
 	T"r   c                 z    |dk(  r| j                  |       y |dk(  r| j                  |       y t        d|z        )Ncarefulloosezinvalid update mode: %r)rR  rU  rW   )r   r*  modes      r   _updatezValues._update`  s>    9  &W_t$6=>>r   c                 v    t        |       t        j                  |   }| j                  t	        |      |       y r    )
__import__sysmodulesrZ  vars)r   modnamerY  mods       r   read_modulezValues.read_moduleh  s*    7kk'"T#Y%r   c                 r    i }t        t        |      j                         |       | j                  ||       y r    )execopenreadrZ  )r   filenamerY  r_  s       r   	read_filezValues.read_filem  s,    T(^  "D)T4 r   c                 d    t        | |      rt        | |      t        | ||       t        | |      S r    )hasattrgetattrr  )r   r  r   s      r   r=  zValues.ensure_valuer  s1    tT"gdD&9&AD$&tT""r   r    )rW  )r   r2   r3   r.   r0   r   rC  rN  rR  rU  rZ  rb  rh  r=  r!   r   r   r   r   7  s6    )
" H".#?&
!
#r   r   c                   n    e Zd Z	 d Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zy)r   c                 v    | j                          || _        | j                  |       | j                  |       y r    )_create_option_listoption_classset_conflict_handlerset_description)r   ro  conflict_handlerr   s       r   r.   zOptionContainer.__init__  s5    
 	  "(!!"23[)r   c                 .    i | _         i | _        i | _        y r    
_short_opt	_long_optr   r   s    r   _create_option_mappingsz'OptionContainer._create_option_mappings  s     r   c                 j    |j                   | _         |j                  | _        |j                  | _        y r    rt  rg   s     r   _share_option_mappingsz&OptionContainer._share_option_mappings  s)     !++))r   c                 6    |dvrt        d|z        || _        y )N)errorresolvez$invalid conflict_resolution value %r)rW   rr  )r   handlers     r   rp  z$OptionContainer.set_conflict_handler  s$    ..CgMNN 'r   c                     || _         y r    r   r   s     r   rq  zOptionContainer.set_description  s
    &r   c                     | j                   S r    r  r   s    r   get_descriptionzOptionContainer.get_description  s    r   c                     	 | ` | `| `y r    rt  r   s    r   destroyzOptionContainer.destroy  s    )ONMr   c           
         g }|j                   D ]1  }|| j                  v s|j                  || j                  |   f       3 |j                  D ]1  }|| j                  v s|j                  || j                  |   f       3 |r| j
                  }|dk(  r/t        ddj                  |D cg c]  }|d   	 c}      z  |      |dk(  r|D ]  \  }}|j                  d      r)|j                  j                  |       | j                  |= n(|j                   j                  |       | j                  |= |j                   ru|j                  r|j                  j                  j                  |        y y y c c}w )Nr{  z conflicting option string(s): %srH   r   r|  r
  )r   ru  r   r   rv  rr  r   rI   
startswithremove	containerr   )r   r8   conflict_optsr   r}  coc_options          r   _check_conflictzOptionContainer._check_conflict  sy   %% 	BCdoo%$$c4??3+?%@A	B $$ 	ACdnn$$$c4>>#+>%?@	A ++G'!)6ii ?2A ?@A  I%'4 HOS(~~d+ ++2237 NN3/ ,,33C8 OOC0$00H4G4G **66==hGH & 
 !@s   +E8c                    	 t        |d   t              r | j                  |i |}n>t        |      dk(  r%|s#|d   }t        |t              st        d|z        t        d      | j                  |       | j                  j                  |       | |_	        |j                  D ]  }|| j                  |<    |j                  D ]  }|| j                  |<    |j                  h|j                  t         ur%|j                  | j"                  |j                  <   |S |j                  | j"                  vrd | j"                  |j                  <   |S )Nr   r%   znot an Option instance: %rinvalid arguments)r  r6   ro  r   r   r  r  r   r   r  r   ru  r   rv  r   r   r   r   )r   rA  rB  r8   r   s        r   
add_optionzOptionContainer.add_option  s9   	 d1gs#&T&&77FY!^F!WFff- <v EFF/00V$'%% 	*C#)DOOC 	*$$ 	)C"(DNN3	) ;;"~~Z/-3^^fkk*  DMM1-1fkk*r   c                 4    |D ]  }| j                  |        y r    )r  )r   r   r8   s      r   add_optionszOptionContainer.add_options  s    ! 	$FOOF#	$r   c                 r    | j                   j                  |      xs | j                  j                  |      S r    )ru  r   rv  r@   s     r   
get_optionzOptionContainer.get_option  s0    ##G, ,""7+	-r   c                 >    || j                   v xs || j                  v S r    )ru  rv  r@   s     r   
has_optionzOptionContainer.has_option  s$    4??* *4>>)	+r   c                 V   | j                   j                  |      }|| j                  j                  |      }|t        d|z        |j                  D ]  }| j                   |=  |j
                  D ]  }| j                  |=  |j                  j                  j                  |       y )Nzno such option %r)	ru  r   rv  rW   r   r   r  r   r  )r   r?   r8   r   s       r   remove_optionzOptionContainer.remove_option  s    $$W->^^''0F>07:;;%% 	%C$	%$$ 	$Cs#	$$$++F3r   c                     | j                   syg }| j                   D ]5  }|j                  t        us|j                  |j	                  |             7 dj                  |      S Nrj   )r   r   r   r   r   rI   )r   	formatterr   r8   s       r   format_option_helpz"OptionContainer.format_option_help  s[    && 	?F;;-/i55f=>	? wwvr   c                 @    |j                  | j                               S r    )r   r  r   r  s     r   r   z"OptionContainer.format_description(  s    ++D,@,@,BCCr   c                     g }| j                   r |j                  | j                  |             | j                  r |j                  | j	                  |             dj                  |      S )Nr   )r   r   r   r   r  rI   r   r  r   s      r   format_helpzOptionContainer.format_help+  sV    MM$11)<=MM$11)<=yy  r   N)r   r2   r3   r.   rw  ry  rp  rq  r  r  r  r  r  r  r  r  r  r   r  r!   r   r   r   r   x  sY    <	*((
' H6<$-+4 D!r   r   c                   ,    e Zd ZddZd Zd Zd Zd Zy)r   Nc                 x    || _         t        j                  | |j                  |j                  |       || _        y r    )rQ   r   r.   ro  rr  title)r   rQ   r  r   s       r   r.   zOptionGroup.__init__6  s4      &%%v'>'>	M
r   c                 H    g | _         | j                  | j                         y r    )r   ry  rQ   r   s    r   rn  zOptionGroup._create_option_list<  s    ##DKK0r   c                     || _         y r    )r  )r   r  s     r   	set_titlezOptionGroup.set_title@  s	    
r   c                 4    	 t         j                  |        | `y r    )r   r  r   r   s    r   r  zOptionGroup.destroyC  s    )%r   c                     |j                  | j                        }|j                          |t        j	                  | |      z  }|j                          |S r    )r   r  ru   r   r  rw   r  s      r   r  zOptionGroup.format_helpJ  sJ    ))$**5/--dI>>r   r    )r   r2   r3   r.   rn  r  r  r  r!   r   r   r   r   4  s    1r   r   c            
          e Zd Z	 g Zddedddddddf
dZd Zd Zd Zd Z	d)d	Z
d
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd*dZd Zd Zd Zd Zd Zd Zd Zd Zd+dZ d  Z!d! Z"d,d"Z#d# Z$d,d$Z%d,d%Z&d& Z'd,d'Z(d,d(Z)y)-r	   Nr{  Tc                 >   t         j                  | |||       | j                  |       |	| _        || _        d| _        d| _        |
t               }|| _        | j                  j                  |        |
| _
        | j                  ||       | j                          y )NT)add_help)r   r.   	set_usageprogr   allow_interspersed_argsprocess_default_valuesr   r  rh   r   _populate_option_list_init_parsing_state)r   r}   r   ro  r   rr  r   r  add_help_optionr  r   s              r   r.   zOptionParser.__init__  s     	  , 0+	?u	'+$&*#-/I"!!$' 	"";,; 	# 	= 	  "r   c                 ~    	 t         j                  |        | j                  D ]  }|j                           | `| `| `y r    )r   r  r   r   r  )r   r   s     r   r  zOptionParser.destroy  sF    	 	%'' 	EMMO	Nr   c                 @    g | _         g | _        | j                          y r    )r   r   rw  r   s    r   rn  z OptionParser._create_option_list  s    $$&r   c                 @    | j                  dddt        d             y )Nz-hz--helpr   zshow this help message and exitr   r   r  rB   r   s    r   _add_help_optionzOptionParser._add_help_option  s$    h%@A 	 	Cr   c                 >    | j                  ddt        d             y )Nz	--versionr   z&show program's version number and exitr  r  r   s    r   _add_version_optionz OptionParser._add_version_option  s"    (GH 	 	Jr   c                     | j                   r| j                  | j                          |r| j                  |       | j                  r| j                          |r| j	                          y y r    )standard_option_listr  r   r  r  )r   r   r  s      r   r  z"OptionParser._populate_option_list  sW    $$T667[)<<$$&!!# r   c                 .    d | _         d | _        d | _        y r    )rargslargsr:  r   s    r   r  z OptionParser._init_parsing_state  s    

r   c                     |t        d      | _        y |t        u rd | _        y |j                         j	                  d      r|dd  | _        y || _        y )Nz%prog [options]zusage:    )rB   r}   r   r   r  r|   s     r   r  zOptionParser.set_usage  sK    =,-DJn$DJ[[]%%i0qrDJDJr   c                     	 d| _         y )NTr  r   s    r   enable_interspersed_argsz%OptionParser.enable_interspersed_args  s    	$
 (,$r   c                     	 d| _         y )NFr  r   s    r   disable_interspersed_argsz&OptionParser.disable_interspersed_args  s    	
 (-$r   c                     || _         y r    )r  )r   r;  s     r   set_process_default_valuesz'OptionParser.set_process_default_values  s
    &-#r   c                 "    || j                   |<   y r    )r   )r   r   r   s      r   set_defaultzOptionParser.set_default  s    #dr   c                 :    | j                   j                  |       y r    )r   rT  )r   rB  s     r   set_defaultszOptionParser.set_defaults  s    V$r   c                 |    | j                   d d  }| j                  D ]  }|j                  |j                           |S r    )r   r   r   )r   optionsr   s      r   _get_all_optionszOptionParser._get_all_options  s>    ""1%'' 	.ENN5,,-	.r   c                 n   | j                   st        | j                        S | j                  j                         }| j	                         D ]]  }|j                  |j                        }t        |t              s/|j                         }|j                  ||      ||j                  <   _ t        |      S r    )r  r   r   copyr  r   r   r  r6   r1  r4  )r   r   r8   r   r?   s        r   get_default_valueszOptionParser.get_default_values  s    **$--((==%%'++- 	MFll6;;/G'3' //1(.(:(:7G(L%		M hr   c                 0   t        |d   t              rt        | g|i |}nWt        |      dk(  r>|s<|d   }t        |t              st	        d|z        |j
                  | urt        d      t	        d      | j                  j                  |       |S )Nr   r%   znot an OptionGroup instance: %rz"invalid OptionGroup (wrong parser)r  )	r  r6   r   r   r  rQ   rW   r   r   )r   rA  rB  r   s       r   add_option_groupzOptionParser.add_option_group+  s    d1gs#6t6v6EY!^FGEe[1 AE IJJ||4' !EFF/00!!%(r   c                     | j                   j                  |      xs | j                  j                  |      }|r|j                  | ur|j                  S y r    )ru  r   rv  r  )r   r?   r8   s      r   get_option_groupzOptionParser.get_option_group;  sO    //%%g. ...$$W- 	f&&d2###r   c                 6    |t         j                  dd  S |d d  S r$   )r]  argv)r   rA  s     r   	_get_argszOptionParser._get_argsE  s     <88AB<7Nr   c                 :   	 | j                  |      }|| j                         }|| _        g x| _        }|| _        	 | j                  |||      }||z   }| j                  ||      S # t        t        f$ r$}| j                  t        |             Y d }~Ed }~ww xY wr    )r  r  r  r  r:  _process_argsr   r   r{  r6   check_values)r   rA  r:  r  r  stoperrs          r   
parse_argszOptionParser.parse_argsK  s    	 t$>,,.F 

U	!%%eUF;D u}  ..	  01 	!JJs3x  	!s   A' 'B6BBc                     	 ||fS r    r!   )r   r:  rA  s      r   r  zOptionParser.check_valuesr  s    		 ~r   c                     	 |rx|d   }|dk(  r|d= y |dd dk(  r| j                  ||       nK|d d dk(  r!t        |      dkD  r| j                  ||       n"| j                  r|j	                  |       |d= ny |rwy y )Nr   r
  rO   r%   r	  )_process_long_optr   _process_short_optsr  r   )r   r  r  r:  args        r   r  zOptionParser._process_args  s    	 (C d{!HQqT!&&uf5RaCCHqL ((7--S!!H' r   c                 0    	 t        || j                        S r    )_match_abbrevrv  )r   r   s     r   _match_long_optzOptionParser._match_long_opt  s    	 S$..11r   c                 &   |j                  d      }d|v r*|j                  dd      \  }}|j                  d|       d}n|}d}| j                  |      }| j                  |   }|j                         rh|j                  }t        |      |k  r#| j                  t        dd|      ||dz         nM|dk(  r|j                  d      }	n6t        |d|       }	|d|= n"|r| j                  t        d	      |z         nd }	|j                  |	||        y )
Nr   rq   r%   TF.%(option)s option requires %(number)d argument/%(option)s option requires %(number)d argumentsr8   numberz%s option does not take a value)popr  insertr  rv  r   r   r   r{  r   r  rB   r;  )
r   r  r:  r  r   next_arghad_explicit_valuer8   r   r   s
             r   r  zOptionParser._process_long_opt  s   iil #:!iiQ/OS(LLH%!%C!&""3'$LLE5zE!

8DE ),u=> ? !		!eAen-!E'NJJq:;cAB EsE640r   c                    |j                  d      }d}d}|dd  D ]  }d|z   }| j                  j                  |      }|dz  }|st        |      |j	                         r|t        |      k  r|j                  d||d         d}|j                  }	t        |      |	k  r#| j                  t        dd|	      ||	dz         n-|	dk(  r|j                  d      }
nt        |d|	       }
|d|	= nd }
|j                  |
||        |s y  y )	Nr   Fr%   r	  Tr  r  r  )r  ru  r   r   r   r   r  r   r{  r   r  r;  )r   r  r:  r  r  ichr   r8   r   r   s              r   r  z OptionParser._process_short_opts  s'   iilab'  	B(C__((-FFA$S))!!# s3x<LLCG,Du:%JJxHI  -05!A B C aZ!IIaLE!%%.1Eag NN3vt4A 	r   c                     | j                   0t        j                  j                  t        j
                  d         S | j                   S r0  )r  rT   pathbasenamer]  r  r   s    r   get_prog_namezOptionParser.get_prog_name  s3    9977##CHHQK0099r   c                 B    |j                  d| j                               S )Nz%prog)r   r  )r   ss     r   expand_prog_namezOptionParser.expand_prog_name  s    yy$"4"4"677r   c                 8    | j                  | j                        S r    )r  r   r   s    r   r  zOptionParser.get_description  s    $$T%5%566r   c                 p    |rt         j                  j                  |       t        j                  |       y r    )r]  stderrwriter?  )r   statusr,   s      r   r?  zOptionParser.exit  s#    JJS!r   c                     	 | j                  t        j                         | j                  d| j	                         d|d       y )NrO   z	: error: r   )print_usager]  r  r?  r  r-   s     r   r{  zOptionParser.error  s7    	 	$		!$*<*<*>DEr   c                     | j                   r4| j                  j                  | j                  | j                               S yr  )r}   r  r~   r  r   s    r   	get_usagezOptionParser.get_usage#  s7    ::>>..%%djj13 3 r   c                 V    	 | j                   rt        | j                         |       y y N)file)r}   printr  r   r  s     r   r   zOptionParser.print_usage*  s&    	 ::$..". r   c                 R    | j                   r| j                  | j                         S yr  )r   r  r   s    r   get_versionzOptionParser.get_version6  s!    <<((66r   c                 V    	 | j                   rt        | j                         |       y y r  )r   r  r	  r  s     r   r@  zOptionParser.print_version<  s(    	 <<$""$40 r   c                    || j                   }|j                  |        g }|j                  |j                  t	        d                   |j                          | j                  r6|j                  t        j                  | |             |j                  d       | j                  D ]3  }|j                  |j                  |             |j                  d       5 |j                          dj                  |d d       S )NOptionsr   rj   r   )r  r   r   r   rB   ru   r   r   r  r   r  rw   rI   )r   r  r   r   s       r   r  zOptionParser.format_option_helpG  s    I&&t,i..q|<=MM/<<T9MNMM$'' 	 EMM%++I67MM$	  	wwvcr{##r   c                 8    |j                  | j                        S r    )r   r   r  s     r   r   zOptionParser.format_epilogX  s    &&t{{33r   c                 ~   || j                   }g }| j                  r"|j                  | j                         dz          | j                  r#|j                  | j                  |      dz          |j                  | j                  |             |j                  | j                  |             dj                  |      S r   )	r  r}   r   r  r   r   r  r   rI   r  s      r   r  zOptionParser.format_help[  s    I::MM$..*T12MM$11)<tCDd--i89d((34wwvr   c                 h    	 |t         j                  }|j                  | j                                y r    )r]  stdoutr  r  r  s     r   r>  zOptionParser.print_helpg  s,    	
 <::D

4##%&r   )T)NN)r   Nr    )*r   r2   r3   r  r   r.   r  rn  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  r   r  r>  r!   r   r   r	   r	   R  s    BH  !$")!!%#D$'
C
J
$	,-.$% " %/Nf2"1H$R87
F
/	1$"4
'r   r	   c                     	 | |v r| S |j                         D cg c]  }|j                  |       r| }}t        |      dk(  r|d   S |st        |       |j	                          t        | |      c c}w )Nr%   r   )r  r  r   r   sortrD   )r  wordmapwordrF   s       r   r  r  t  s     	G| +2,,. 0$ OOA.  0 0 }" ## ##  &q-880s   A2)&__version____all____copyright__r]  rT   r   r   r   r   ImportErrorrB   	Exceptionr   r   r   r   r   rD   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r	   r  r   r!   r   r   <module>r     sy  . $@  J	) Y =  ; 
 6m 6
AN 
AM M^?] ?&G= G&  %a	l3%q|4!1%5#67%q|47
G% 
n nf "#># >#By! y!x? <]'O ]'D9: m1  	s   C9 9DD