
    =Og                        	 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 n# e	$ r	 d Zd ZY nw xY w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%dS )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                 @    d| j         j        t          |           | fz  S )Nz<%s at 0x%x: %s>)	__class____name__idselfs    !/usr/lib64/python3.11/optparse.py_reprr   O   s    !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    66Or   c                       e Zd Zd Zd ZdS )r   c                     || _         d S 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	    xr   Nr   
__module____qualname__r.   r0   r!   r   r   r   r   g   s2              r   r   c                       e Zd Z	 d Zd ZdS )r   c                 <    || _         t          |          | _        d S r    )r,   str	option_id)r   r,   options      r   r.   zOptionError.__init__u   s    Vr   c                 B    | j         rd| j         d| j        S | j        S )Nzoption z: )r7   r,   r   s    r   r0   zOptionError.__str__y   s-    > 	 	&*nnndhh??8Or   Nr1   r!   r   r   r   r   o   s7        
% % %    r   r   c                       e Zd ZdS )r   Nr   r2   r3   r!   r   r   r   r      s         r   r   c                       e Zd ZdS )r   Nr;   r!   r   r   r   r      s         r   r   c                       e Zd Z	 d Zd ZdS )r   c                     || _         d S r    )opt_strr   r?   s     r   r.   zBadOptionError.__init__   s    r   c                 0    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      s7          6 6 6 6 6r   r   c                       e Zd Z	 d Zd ZdS )AmbiguousOptionErrorc                 J    t                               | |           || _        d S r    )r   r.   possibilities)r   r?   rF   s      r   r.   zAmbiguousOptionError.__init__   s&    g...*r   c                 d    t          d          | j        d                    | j                  fz  S )Nzambiguous option: %s (%s?), )rB   r?   joinrF   r   s    r   r0   zAmbiguousOptionError.__str__   s3    .//<4+=!>!>?@ 	Ar   Nr1   r!   r   r   rD   rD      s<        + + +A A A A Ar   rD   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dS )r
   nonec                    d | _         || _        |?	 t          t          j        d                   }n# t
          t          f$ r d}Y nw xY w|dz  }|| _        t          |t          |dz
  |dz                      x| _
        | _        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   rR   r\   rX   r`   s        r   r.   zHelpFormatter.__init__   s    
  0=BJy122j)   QJE
%s52:7G!7K'L'LMM	NT3
&% %$s   2 AAc                     || _         d S r    )rQ   r   rQ   s     r   
set_parserzHelpFormatter.set_parser   s    r   c                 L    |dvrt          d|z            d|z   dz   | _        d S )N)  z/invalid metavar delimiter for short options: %r%s)rW   rc   r   delims     r   set_short_opt_delimiterz%HelpFormatter.set_short_opt_delimiter   sA    	!!AEIK K K"UlT1r   c                 L    |dvrt          d|z            d|z   dz   | _        d S )N)=rk   z.invalid metavar delimiter for long options: %rrl   )rW   rd   rm   s     r   set_long_opt_delimiterz$HelpFormatter.set_long_opt_delimiter   sA    
""@5HJ J J!E\D0r   c                 P    | xj         | j        z  c_         | xj        dz  c_        d S r$   r]   rR   r^   r   s    r   indentzHelpFormatter.indent   s,    t44

a



r   c                 P    | xj         | j        z  c_         | xj        dz  c_        d S r$   rt   r   s    r   dedentzHelpFormatter.dedent   s,    t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  sS    	 d&992>>
T((}T',2/57 7 7 	7r   c                 :    |r|                      |          dz   S dS N
rj   r   r   descriptions     r   format_descriptionz HelpFormatter.format_description  s(     	$$[11D882r   c                 @    |rd|                      |          z   dz   S dS r   r   )r   epilogs     r   format_epilogzHelpFormatter.format_epilog  s-     	$++F333d::2r   c                     | j         | j        s|j        S | j         j                            |j                  }|t          u s|| 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  so    ;d&6;,00==J&&-*? 1M{""4#3S5G5GHHHr   c                 N    g } j         |         } j         j        z
  dz
  }t          |          |k    rd j        d|fz  } j        }nd j        d||fz  }d}|                    |           |j        rz                     |          }t          j        | j	                  }|                    d|d|d         fz             |
                     fd|dd          D                        n!|d         d	k    r|                    d	           d                    |          S )
NrO   %*s%s
rj   z	%*s%-*s  r   c                 *    g | ]}d j         d|fz  S )r   rj   )r[   ).0liner   s     r   
<listcomp>z/HelpFormatter.format_option.<locals>.<listcomp>E  s8     7 7 7# %(:B'EE 7 7 7r   r%   r   )rb   r[   r]   lenappendr   r   r   wrapr_   extendrI   )r   r8   resultopts	opt_widthindent_first	help_text
help_liness   `       r   format_optionzHelpFormatter.format_option(  sT    "6*&)<<q@	t99y   3R>>D-LL$"5r9d!KKDLd; 	 ++F33I!y$/BBJMM)|RA&GGHHHMM 7 7 7 7'1!""~7 7 7 8 8 8 8"XMM$wwvr   c                 t   |                                   d}|j        D ]F}|                     |          }|| j        |<   t	          |t          |          | j        z             }G|                                   |j        D ]P}|j        D ]F}|                     |          }|| j        |<   t	          |t          |          | j        z             }GQ|                                  |                                  t          |dz   | j
                  | _        t	          | j        | j        z
  d          | _        d S )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  s5   % 	G 	GC0055G'.D$'3w<<$2E#EFFGG) 	K 	KE( K K44S99+2#C(gs7||d6I'IJJK 	 1d.DEEdj4+==rBBr   c                 ,    	 |                                 rI|j        p|j                                         fd|j        D             } fd|j        D             }n|j        }|j        } j        r||z   }n||z   }d                    |          S )Nc                 (    g | ]}j         |fz  S r!   )rc   )r   soptmetavarr   s     r   r   z7HelpFormatter.format_option_strings.<locals>.<listcomp>a  s5     : : :" -w? : : :r   c                 (    g | ]}j         |fz  S r!   )rd   )r   loptr   r   s     r   r   z7HelpFormatter.format_option_strings.<locals>.<listcomp>c  s5     8 8 8! +tWo= 8 8 8r   rH   )takes_valuer   r   upper_short_opts
_long_optsr`   rI   )r   r8   
short_opts	long_optsr   r   s   `    @r   r   z#HelpFormatter.format_option_strings]  s    N 	*n;(9(9(;(;G: : : : :&,&8: : :J8 8 8 8 8%+%68 8 8II  +J)I 	*	)DDz)Dyyr   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 2 21 1 1    
? ? ?? ? ?
7 
7 
7    I I I! ! !FC C C$    r   r
   c                   ,    e Zd Z	 	 	 	 	 ddZd Zd ZdS )	r   rO      Nr%   c                 B    t                               | ||||           d S r    r
   r.   re   s        r   r.   zIndentedHelpFormatter.__init__t  8    
 	"$5uk	K 	K 	K 	K 	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"g>>>r   )rO   r   Nr%   r   r2   r3   r.   r~   r   r!   r   r   r   r   p  s]         #$#%	K K K K( ( (? ? ? ? ?r   r   c                   ,    e Zd Z	 	 	 	 	 ddZd Zd ZdS )r   r   r   Nc                 B    t                               | ||||           d S r    r   re   s        r   r.   zTitledHelpFormatter.__init__  r   r   c                 R    |                      t          d                    d|dS )NUsagez  r   )r   rB   r|   s     r   r~   z TitledHelpFormatter.format_usage  s+    !007<<<<eeeDDr   c                 H    |dd| j                  t          |          z  dS )Nr   z=-)r^   r   r   s     r   r   z"TitledHelpFormatter.format_heading  s)    $WWd4:&6W&E&E&EFFr   )r   r   Nr   r   r!   r   r   r   r     se         #$#%	K K K KE E EG G G G Gr   r   c                     | d d                                          dk    rd}nB| d d                                          dk    rd}| dd          pd} n| d d         dk    rd}nd} || |          S )	NrO   0x   0b0r%      
   )lower)valtyperadixs      r   
_parse_numr     s    
2A2w}}$	RaRD	 	 !""gn	RaRC4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     sr    v{+KS$Gs5zz G G G/00Cu3EEG G 	GGs	   
" -Ac                     || j         v r|S d                    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     s^    ))Cfn556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!d	S )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        D ]} ||            d S 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GDMMMM	 	r   c                 @    d |D             }|st          d          |S )Nc                     g | ]}||S r!   r!   )r   r   s     r   r   z-Option._check_opt_strings.<locals>.<listcomp>K  s    +++s++++r   z+at least one option string must be supplied)	TypeError)r   r   s     r   r  zOption._check_opt_stringsG  s4     ,+t+++ 	KIJJJr   c                    |D ]}t          |          dk     rt          d|z  |           t          |          dk    rF|d         dk    r|d         dk    st          d|z  |           | j                            |           |dd         dk    r|d         dk    st          d|z  |           | j                            |           d S )	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   r   r   s      r   r  zOption._set_opt_stringsP  s    	, 	,C3xx!||!;=@ABFH H H SQA##a&C--%HJMN    '',,,,AaCD((SVs]]%CEHI   &&s++++%	, 	,r   c                 F   | j         D ]O}||v rt          | |||                    ||= !|dk    rt          | |t                     >t          | |d            P|rGt          |                                          }t          dd                    |          z  |           d S )Nr   zinvalid keyword arguments: %srH   )ATTRSsetattrr   sortedkeysr   rI   )r   r	  attrs      r   r  zOption._set_attrse  s    J 	. 	.Du}}dE$K000$KK9$$D$
3333D$---- 	5::<<((E/$))E2B2BB  	 	r   c                 r    | j         	d| _         d S | j         | j        vrt          d| j         z  |           d S )Nr   zinvalid action: %r)r   ACTIONSr   r   s    r   _check_actionzOption._check_actionx  sD    ;!DKKK[,,2T[@$GGG -,r   c                 x   | j         )| j        | j        v r| j        	d| _         d S d| _         d S d S 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  |           d S )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    9{d777<+ (DIII !)DIII 87 $)T** / I.	yE!!$	y
**!";di"GNNN{$"444!:T[H$P P P 54r   c                 d   | j         dk    r| j        t          d|           t          | j        t          t
          f          sKt          dt          t          | j                                                d          d         z  |           d S | j        t          d| j         z  |           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listr6   splitr   s    r   _check_choicezOption._check_choice  s    9  |#!EtM M Mudm<< C!G$t|,,--33C88;<=AC C CC C \%5	A4I I I &%r   c                     | j         | j        v p| j        d u}| j        S|rS| j        r0| j        d         dd                              dd          | _        d S | j        d         d         | _        d S d S d S )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 -y, 	9  3 OA.qrr2::3DD			 ,Q/2			 r   c                 d    | j         | j        vr| j        t          d| j         z  |           d S d S )Nz*'const' must not be supplied for action %r)r   CONST_ACTIONSr   r   r   s    r   _check_constzOption._check_const  sF    ;d000TZ5K<t{J   105K5Kr   c                     | j         | j        v r| j        	d| _        d S d S | j        t          d| j         z  |           d S )Nr%   z*'nargs' must not be supplied for action %r)r   r  r   r   r   s    r   _check_nargszOption._check_nargs  s\    ;$,,,z!


 "!Z#<t{J   $#r   c                    | j         dk    rt          | j                  st          d| j        z  |           | j        2t          | j        t                    st          d| j        z  |           | j        2t          | j        t                    st          d| j        z  |           d S d S | j        t          d| j        z  |           | j        t          d|           | j        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   dictr   s    r   _check_callbackzOption._check_callback  sQ   ;*$$DM** G!/$-?G G G".t1599 /!I()*.0 0 0 $0t3T:: 1!J*+,02 2 2 1000 }(!Dm$%)+ + + !-!DdL L L#/!FN N N 0/r   c                 F    d                     | 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    y$$r   c                 D    | 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                 b    | j                             | j                  }||S  || ||          S r    )TYPE_CHECKERr   r   )r   r   r   r
  s       r   check_valuezOption.check_value  s8    #''	22?L74e,,,r   c                      |= j         dk    r                     |          S t           fd|D                       S d S )Nr%   c                 <    g | ]}                     |          S r!   )r:  )r   vr   r   s     r   r   z(Option.convert_value.<locals>.<listcomp>  s)    FFF1d..sA66FFFr   )r   r:  r"  )r   r   r   s   `` r   convert_valuezOption.convert_value   sY    zQ''U333FFFFFFFFGGG	 r   c                 v    |                      ||          }|                     | j        | j        ||||          S r    )r>  take_actionr   r   )r   r   r   valuesrQ   s        r   processzOption.process  sG     ""3..
 KC@ @ 	@r   c                 F   |dk    rt          |||           n|dk    rt          ||| j                   ni|dk    rt          ||d           nP|dk    rt          ||d           n7|dk    r+|                    |g                               |           n|dk    r/|                    |g                               | j                   n|d	k    r)t          |||                    |d
          dz              n|dk    r'| j        pd}| j        pi } | j        | |||g|R i | nu|dk    r)|                                 |                                 nF|dk    r)|	                                 |                                 nt          d| j        z            dS )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   rA  rQ   argskwargss	            r   r@  zOption.take_action  s   WFD%((((}$$FD$*----|##FD$''''}$$FD%((((xb))007777~%%b))00<<<<wFD&"5"5dA">">"BCCCCz!!%+D)/RFDM$UFDTDDDVDDDDvKKMMMMy    """KKMMMM04;>???qr   )"r   r2   r3   r  r  r'  r  r  r*  r  r   r   r9  r  r.   r  r  r  r  r  r%  r(  r+  r-  r1  r0   r   __repr__r   r7  r:  r>  rB  r@  r!   r   r   r   r     s       *  E	GM!M&%M
 DE$ !. - - - ,	 L  M
  &  , , ,*  &H H HP P P0I I I3 3 3    N N N8 # " !!$&M< < < H% % %' ' '- - -H H H
@ 
@ 
@    r   r   SUPPRESSHELPSUPPRESSUSAGEc                   N    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dS )r   Nc                 d    |r+|                                 D ]\  }}t          | ||           d S d S r    )itemsr  )r   r   r  r   s       r   r.   zValues.__init__9  sP     	)'~~// ) )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   rQ  r0  NotImplemented)r   others     r   __eq__zValues.__eq__C  sH    eV$$ 	"=EN22t$$ 	"=E))!!r   c                 j    	 t          |           D ]!}||v r||         }|t          | ||           "d S r    )dirr  )r   r0  r  dvals       r   _update_carefulzValues._update_carefulK  sS    	 II 	. 	.Dt||Dz#D$---		. 	.r   c                 <    	 | j                             |           d S r    )rQ  update)r   r0  s     r   _update_loosezValues._update_looseX  s%    	
 	T"""""r   c                     |dk    r|                      |           d S |dk    r|                     |           d S t          d|z            )Ncarefulloosezinvalid update mode: %r)rY  r\  rW   )r   r0  modes      r   _updatezValues._update`  s^    9  &&&&&W__t$$$$$6=>>>r   r^  c                     t          |           t          j        |         }|                     t	          |          |           d S r    )
__import__sysmodulesra  vars)r   modnamer`  mods       r   read_modulezValues.read_moduleh  s<    7k'"T#YY%%%%%r   c                     i }t          t          |                                          |           |                     ||           d S r    )execopenreadra  )r   filenamer`  rf  s       r   	read_filezValues.read_filem  sC    T(^^  ""D)))T4     r   c                     t          | |          rt          | |          t          | ||           t          | |          S r    )hasattrgetattrr  )r   r  r   s      r   rD  zValues.ensure_valuer  sE    tT"" 	'gdD&9&9&AD$&&&tT"""r   r    )r^  )r   r2   r3   r.   r0   r   rJ  rU  rY  r\  ra  ri  ro  rD  r!   r   r   r   r   7  s        ) ) ) )
" " " H" " ". . .# # #? ? ?& & & &
! ! ! !
# # # # #r   r   c                   p    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dS )r   c                     |                                   || _        |                     |           |                     |           d S r    )_create_option_listoption_classset_conflict_handlerset_description)r   rv  conflict_handlerr   s       r   r.   zOptionContainer.__init__  sM    
 	  """(!!"2333[)))))r   c                 0    i | _         i | _        i | _        d S r    
_short_opt	_long_optr   r   s    r   _create_option_mappingsz'OptionContainer._create_option_mappings  s     r   c                 N    |j         | _         |j        | _        |j        | _        d S r    r{  rg   s     r   _share_option_mappingsz&OptionContainer._share_option_mappings  s%     !+)r   c                 @    |dvrt          d|z            || _        d S )N)errorresolvez$invalid conflict_resolution value %r)rW   ry  )r   handlers     r   rw  z$OptionContainer.set_conflict_handler  s0    ...CgMNNN 'r   c                     || _         d S r    r   r   s     r   rx  zOptionContainer.set_description  s    &r   c                     | j         S r    r  r   s    r   get_descriptionzOptionContainer.get_description  s    r   c                     	 | ` | `| `d S r    r{  r   s    r   destroyzOptionContainer.destroy  s    )ONMMMr   c                    g }|j         D ]-}|| j        v r"|                    || j        |         f           .|j        D ]-}|| j        v r"|                    || j        |         f           .|r| j        }|dk    r0t          dd                    d |D                       z  |          |dk    r|D ]\  }}|                    d          r#|j        	                    |           | j        |= n"|j         	                    |           | j        |= |j         s&|j        s|j
        j        	                    |           d S d S d S )Nr  z conflicting option string(s): %srH   c                     g | ]
}|d          S )r   r!   )r   cos     r   r   z3OptionContainer._check_conflict.<locals>.<listcomp>  s     ? ? ?2A ? ? ?r   r  r  )r   r|  r   r   r}  ry  r   rI   
startswithremove	containerr   )r   r8   conflict_optsr   r  c_options         r   _check_conflictzOptionContainer._check_conflict  s   % 	B 	BCdo%%$$c4?3+?%@AAA$ 	A 	ACdn$$$$c4>#+>%?@@@ 	H+G'!!)6ii ? ? ? ? ?@@A   I%%'4 H HOS(~~d++ 1 +223777 N3// ,33C888 OC0$0 HH4G H *6==hGGG!	H 	H &%H Hr   c                 L   	 t          |d         t                    r | j        |i |}nTt          |          dk    r2|s0|d         }t          |t                    st          d|z            nt          d          |                     |           | j                            |           | |_	        |j
        D ]}|| j        |<   |j        D ]}|| j        |<   |j        @|j        t           ur|j        | j        |j        <   n|j        | j        vrd | j        |j        <   |S )Nr   r%   znot an Option instance: %rinvalid arguments)r  r6   rv  r   r   r  r  r   r   r  r   r|  r   r}  r   r   r   r   )r   rH  rI  r8   r   s        r   
add_optionzOptionContainer.add_option  sQ   	 d1gs## 	1&T&777FFYY!^^F^!WFff-- G <v EFFFG /000V$$$'''% 	* 	*C#)DOC  $ 	) 	)C"(DN3;"~Z//-3^fk**DM11-1fk*r   c                 :    |D ]}|                      |           d S r    )r  )r   r   r8   s      r   add_optionszOptionContainer.add_options  s0    ! 	$ 	$FOOF####	$ 	$r   c                 j    | j                             |          p| j                            |          S r    )r|  r   r}  r@   s     r   
get_optionzOptionContainer.get_option  s2    ##G,, ,""7++	-r   c                 &    || j         v p|| j        v S r    )r|  r}  r@   s     r   
has_optionzOptionContainer.has_option  s     4?* *4>)	+r   c                     | j                             |          }|| j                            |          }|t          d|z            |j        D ]
}| j         |= |j        D ]
}| j        |= |j        j                            |           d S )Nzno such option %r)	r|  r   r}  rW   r   r   r  r   r  )r   r?   r8   r   s       r   remove_optionzOptionContainer.remove_option  s    $$W-->^''00F>07:;;;% 	% 	%C$$$ 	$ 	$Cs##$++F33333r   c                     | j         sdS g }| j         D ]8}|j        t          ur(|                    |                    |                     9d                    |          S Nrj   )r   r   r   r   r   rI   )r   	formatterr   r8   s       r   format_option_helpz"OptionContainer.format_option_help  sg     	2& 	? 	?F;-//i55f==>>>wwvr   c                 P    |                     |                                           S r    )r   r  r   r  s     r   r   z"OptionContainer.format_description(  s"    ++D,@,@,B,BCCCr   c                     g }| j         r(|                    |                     |                     | j        r(|                    |                     |                     d                    |          S )Nr   )r   r   r   r   r  rI   r   r  r   s      r   format_helpzOptionContainer.format_help+  so     	>MM$11)<<=== 	>MM$11)<<===yy   r   N)r   r2   r3   r.   r~  r  rw  rx  r  r  r  r  r  r  r  r  r  r   r  r!   r   r   r   r   x  s       <	* 	* 	*  ( ( (( ( (
' ' '       H H H6  <$ $ $- - -+ + +4 4 4   D D D! ! ! ! !r   r   c                   .    e Zd ZddZd Zd Zd Zd ZdS )r   Nc                 p    || _         t                              | |j        |j        |           || _        d S r    )rQ   r   r.   rv  ry  title)r   rQ   r  r   s       r   r.   zOptionGroup.__init__6  s>      &%v'>	M 	M 	M


r   c                 H    g | _         |                     | j                   d S r    )r   r  rQ   r   s    r   ru  zOptionGroup._create_option_list<  s&    ##DK00000r   c                     || _         d S r    )r  )r   r  s     r   	set_titlezOptionGroup.set_title@  s    


r   c                 @    	 t                               |            | `d S r    )r   r  r   r   s    r   r  zOptionGroup.destroyC  s%    )%%%r   c                     |                     | j                  }|                                 |t                              | |          z  }|                                 |S r    )r   r  ru   r   r  rw   r  s      r   r  zOptionGroup.format_helpJ  sZ    ))$*55/--dI>>>r   r    )r   r2   r3   r.   ru  r  r  r  r!   r   r   r   r   4  sd           1 1 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)dS ).r	   Nr  Tc                 h   t                               | |||           |                     |           |	| _        || _        d| _        d| _        |t                      }|| _        | j        	                    |            |
| _
        |                     ||           |                                  d S )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   rv  r  ry  r   r  add_help_optionr  r   s              r   r.   zOptionParser.__init__  s     	  , 0+	? 	? 	?u	'+$&*#-//I"!!$''' 	"";,; 	# 	= 	= 	= 	  """""r   c                     	 t                               |            | j        D ]}|                                 | `| `| `d S r    )r   r  r   r   r  )r   r   s     r   r  zOptionParser.destroy  sS    	 	%%%' 	 	EMMOOOONNNr   c                 J    g | _         g | _        |                                  d S r    )r   r   r~  r   s    r   ru  z OptionParser._create_option_list  s*    $$&&&&&r   c                 R    |                      dddt          d                     d S )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A 	 	C 	C 	C 	C 	Cr   c                 P    |                      ddt          d                     d S )Nz	--versionr  z&show program's version number and exitr  r  r   s    r   _add_version_optionz OptionParser._add_version_option  s=    (GHH 	 	J 	J 	J 	J 	Jr   c                     | j         r|                     | j                    |r|                     |           | j        r|                                  |r|                                  d S d S r    )standard_option_listr  r  r  r  )r   r   r  s      r   r  z"OptionParser._populate_option_list  s    $ 	8T6777 	*[)))< 	'$$&&& 	$!!#####	$ 	$r   c                 0    d | _         d | _        d | _        d S r    )rargslargsrA  r   s    r   r  z OptionParser._init_parsing_state  s    

r   c                     |t          d          | _        d S |t          u r	d | _        d S |                                                    d          r|dd          | _        d S || _        d S )Nz%prog [options]zusage:    )rB   r}   r   r   r  r|   s     r   r  zOptionParser.set_usage  sm    =,--DJJJn$$DJJJ[[]]%%i00 	qrrDJJJDJJJr   c                     	 d| _         d S )NTr  r   s    r   enable_interspersed_argsz%OptionParser.enable_interspersed_args  s    	$
 (,$$$r   c                     	 d| _         d S )NFr  r   s    r   disable_interspersed_argsz&OptionParser.disable_interspersed_args  s    	
 (-$$$r   c                     || _         d S r    )r  )r   rB  s     r   set_process_default_valuesz'OptionParser.set_process_default_values  s    &-###r   c                     || j         |<   d S r    )r   )r   r   r   s      r   set_defaultzOptionParser.set_default  s    #dr   c                 :    | j                             |           d S r    )r   r[  )r   rI  s     r   set_defaultszOptionParser.set_defaults  s    V$$$$$r   c                 l    | j         d d          }| j        D ]}|                    |j                    |S r    )r   r   r   )r   optionsr   s      r   _get_all_optionszOptionParser._get_all_options  sB    "111%' 	. 	.ENN5,----r   c                 x   | j         st          | j                  S | j                                        }|                                 D ]c}|                    |j                  }t          |t                    r2|	                                }|
                    ||          ||j        <   dt          |          S r    )r  r   r   copyr  r   r   r  r6   r7  r:  )r   r   r8   r   r?   s        r   get_default_valueszOptionParser.get_default_values  s    * 	)$-(((=%%''++-- 	M 	MFll6;//G'3'' M //11(.(:(:7G(L(L%hr   c                 j   t          |d         t                    rt          | g|R i |}nlt          |          dk    rJ|sH|d         }t          |t                    st	          d|z            |j        | urt          d          nt	          d          | 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   rH  rI  r   s       r   add_option_groupzOptionParser.add_option_group+  s    d1gs## 		16t666v66EEYY!^^F^GEe[11 K AE IJJJ|4'' !EFFF ( /000!!%(((r   c                     | j                             |          p| j                            |          }|r|j        | ur|j        S d S r    )r|  r   r}  r  )r   r?   r8   s      r   get_option_groupzOptionParser.get_option_group;  sU    /%%g.. ..$$W-- 	 	$f&d22##tr   c                 B    |t           j        dd          S |d d          S r$   )rd  argv)r   rH  s     r   	_get_argszOptionParser._get_argsE  s$    <8ABB<7Nr   c                 p   	 |                      |          }||                                 }|| _        g x| _        }|| _        	 |                     |||          }n@# t          t          f$ r,}|                     t          |                     Y d }~nd }~ww xY w||z   }| 
                    ||          S r    )r  r  r  r  rA  _process_argsr   r   r  r6   check_values)r   rH  rA  r  r  stoperrs          r   
parse_argszOptionParser.parse_argsK  s    	 t$$>,,..F 

U	!%%eUF;;DD 01 	! 	! 	!JJs3xx        	! u}  ...s   A B."BBc                     	 ||fS r    r!   )r   rA  rH  s      r   r  zOptionParser.check_valuesr  s    		 ~r   c                 8   	 |r|d         }|dk    r|d= d S |dd         dk    r|                      ||           nZ|d d         dk    r*t          |          dk    r|                     ||           n"| j        r|                    |           |d= nd S |d S d S )Nr   r  rO   r%   r  )_process_long_optr   _process_short_optsr  r   )r   r  r  rA  args        r   r  zOptionParser._process_args  s    	  	(C d{{!HQqST!!&&uf5555RaRCCHHqLL ((7777- S!!!!HH'  	 	 	 	 	r   c                 .    	 t          || j                  S r    )_match_abbrevr}  )r   r   s     r   _match_long_optzOptionParser._match_long_opt  s    	 S$.111r   c                    |                     d          }d|v r2|                    dd          \  }}|                    d|           d}n|}d}|                     |          }| j        |         }|                                r~|j        }t          |          |k     r+|                     t          dd|          ||dz             nc|dk    r|                     d          }	nGt          |d|                   }	|d|= n*|r&|                     t          d	          |z             nd }	|                    ||	||            d S )
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  r}  r   r   r   r  r   r"  rB   rB  )
r   r  rA  r  r   next_arghad_explicit_valuer8   r   r   s
             r   r  zOptionParser._process_long_opt  sv   iill #::!iiQ//OS(LLH%%%!%C!&""3''$ 	LE5zzE!!

8DE  ),u==> ? ? ? ? !		!eAeGn--!E'NN 	JJq:;;cABBBB EsE6400000r   c                    |                     d          }d}d}|dd          D ]}d|z   }| j                            |          }|dz  }|st          |          |                                r|t          |          k     r |                    d||d                     d}|j        }	t          |          |	k     r+|                     t          dd|	          ||	dz             n;|	dk    r|                     d          }
nt          |d|	                   }
|d|	= nd }
|                    ||
||            |r d S d S )	Nr   Fr%   r  Tr  r  r  )r  r|  r   r   r   r   r  r   r  r   r"  rB  )r   r  rA  r  r  ichr   r8   r   r   s              r   r  z OptionParser._process_short_opts  s   iillabb'  	  	B(C_((--FFA *$S)))!!##  s3xx<<LLCG,,,Du::%%JJxHI    -05!A!A B C C C C aZZ!IIaLLEE!%%.11Eag NN3vt444 ? 	  	r   c                 |    | j         /t          j                            t          j        d                   S | j         S r6  )r  rT   pathbasenamerd  r  r   s    r   get_prog_namezOptionParser.get_prog_name  s.    97##CHQK0009r   c                 R    |                     d|                                           S )Nz%prog)r   r  )r   ss     r   expand_prog_namezOptionParser.expand_prog_name  s"    yy$"4"4"6"6777r   c                 6    |                      | j                  S r    )r  r   r   s    r   r  zOptionParser.get_description  s    $$T%5666r   r   c                 p    |rt           j                            |           t          j        |           d S r    )rd  stderrwriterF  )r   statusr,   s      r   rF  zOptionParser.exit  s6     	"JS!!!r   c                     	 |                      t          j                   |                     d|                                 d|d           d S )NrO   z	: error: r   )print_usagerd  r  rF  r  r-   s     r   r  zOptionParser.error  sT    	 	$$$		!$*<*<*>*>*>*>DEEEEEr   c                 x    | j         r2| j                            |                     | j                             S dS r  )r}   r  r~   r  r   s    r   	get_usagezOptionParser.get_usage#  s@    : 	>..%%dj113 3 3 2r   c                 `    	 | j         r%t          |                                 |           d S d S N)file)r}   printr
  r   r  s     r   r  zOptionParser.print_usage*  s@    	 : 	/$..""......	/ 	/r   c                 H    | j         r|                     | j                   S dS r  )r  r  r   s    r   get_versionzOptionParser.get_version6  s'    < 	((6662r   c                 `    	 | j         r%t          |                                 |           d S d S r  )r  r  r  r  s     r   rG  zOptionParser.print_version<  sB    	 < 	1$""$$4000000	1 	1r   c                 X   || j         }|                    |            g }|                    |                    t	          d                               |                                 | j        rC|                    t                              | |                     |                    d           | j	        D ]?}|                    |
                    |                     |                    d           @|                                 d                    |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MNNNMM$' 	  	 EMM%++I66777MM$wwvcrc{###r   c                 6    |                     | j                  S r    )r   r   r  s     r   r   zOptionParser.format_epilogX  s    &&t{333r   c                    || j         }g }| j        r*|                    |                                 dz              | j        r+|                    |                     |          dz              |                    |                     |                     |                    |                     |                     d                    |          S r   )	r  r}   r   r
  r   r   r  r   rI   r  s      r   r  zOptionParser.format_help[  s    I: 	3MM$..**T1222 	EMM$11)<<tCDDDd--i88999d((33444wwvr   c                 r    	 |t           j        }|                    |                                            d S r    )rd  stdoutr  r  r  s     r   rE  zOptionParser.print_helpg  s9    	
 <:D

4##%%&&&&&r   )T)NN)r   Nr    )*r   r2   r3   r  r   r.   r  ru  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rF  r  r
  r  r  rG  r  r   r  rE  r!   r   r   r	   r	   R  s       BH  !$")!!%# # # #D  $' ' '
C C C
J J J
$ $ $ $  	 	 	, , ,- - -. . .$ $ $% % %       "       %/ %/ %/ %/N    f2 2 2"1 "1 "1H$ $ $R  8 8 87 7 7   
F F F  
/ 
/ 
/ 
/  	1 	1 	1 	1$ $ $ $"4 4 4
 
 
 
' ' ' ' ' 'r   r	   c                      	  |v r S  fd|                                 D             }t          |          dk    r|d         S |st                     |                                 t	           |          )Nc                 >    g | ]}|                               |S r!   )r  )r   wordr   s     r   r   z!_match_abbrev.<locals>.<listcomp>  s9     0 0 0$ OOA..0 0 0 0r   r%   r   )r  r   r   sortrD   )r   wordmaprF   s   `  r   r  r  t  s     	G||0 0 0 0',,.. 0 0 0 }"" ## 	9 ###    &q-888r   )&__version____all____copyright__rd  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#     s  .   $@  J J J	)))))))))         	     Y       =        ;   
       6 6 6 6 6m 6 6 6
A 
A 
A 
A 
AN 
A 
A 
AM M M M M M M M^? ? ? ? ?] ? ? ?&G G G G G= G G G&        %aa	ll3%qq||4!11%5#6#67%qq||47 7
G G G% % % 
n n n n n n n nf "#># ># ># ># ># ># ># >#By! y! y! y! y! y! y! y!x    ?   <]' ]' ]' ]' ]'O ]' ]' ]'D9 9 9: s   # 11