
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
U
    ¡ê,aÑë  ã                   @   sÎ  d Z ddddddddd	d
dddddddgZdZddlZddlZddlZdd„ ZzddlmZmZ W n$ e	k
r†   dd„ Zdd„ ZY nX eZ
G dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG d d„ deƒZG d!d"„ d"eƒZG d#d	„ d	ƒZG d$d
„ d
eƒZG d%d„ deƒZd&d'„ Zd(d)„ Zee
d*ƒfee
d*ƒfee
d+ƒfee
d,ƒfd-œZd.d/„ Zd0d„ Zd1ZG d2d„ dƒZd3Zd4ZG d5d„ dƒZ G d6d„ dƒZ!G d7d„ de!ƒZ"G d8d„ de!ƒZ#d9d:„ Z$eZ%dS );z1.5.3ÚOptionÚmake_optionÚSUPPRESS_HELPÚSUPPRESS_USAGEÚValuesÚOptionContainerÚOptionGroupÚOptionParserÚHelpFormatterÚIndentedHelpFormatterÚTitledHelpFormatterÚOptParseErrorÚOptionErrorÚOptionConflictErrorÚOptionValueErrorÚ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                 C   s   d| j jt| ƒ| f S )Nz<%s at 0x%x: %s>)Ú	__class__Ú__name__Úid©Úself© r   ú-/opt/alt/python38/lib64/python3.8/optparse.pyÚ_reprO   s    r   )ÚgettextÚngettextc                 C   s   | S ©Nr   )Úmessager   r   r   r   \   s    r   c                 C   s   |dkr| S |S ©Né   r   )ZsingularZpluralÚnr   r   r   r   _   s    r   c                   @   s   e Zd Zdd„ Zdd„ ZdS )r   c                 C   s
   || _ d S r   ©Úmsg©r   r#   r   r   r   Ú__init__h   s    zOptParseError.__init__c                 C   s   | j S r   r"   r   r   r   r   Ú__str__k   s    zOptParseError.__str__N©r   Ú
__module__Ú__qualname__r%   r&   r   r   r   r   r   g   s   c                   @   s   e Zd Zdd„ Zdd„ ZdS )r   c                 C   s   || _ t|ƒ| _d S r   )r#   ÚstrÚ	option_id)r   r#   Úoptionr   r   r   r%   u   s    zOptionError.__init__c                 C   s    | j rd| j | jf S | jS d S )Nzoption %s: %s)r+   r#   r   r   r   r   r&   y   s    zOptionError.__str__Nr'   r   r   r   r   r   o   s   c                   @   s   e Zd ZdS )r   N©r   r(   r)   r   r   r   r   r      s   c                   @   s   e Zd ZdS )r   Nr-   r   r   r   r   r   „   s   c                   @   s   e Zd Zdd„ Zdd„ ZdS )r   c                 C   s
   || _ d S r   )Úopt_str©r   r.   r   r   r   r%   Ž   s    zBadOptionError.__init__c                 C   s   t dƒ| j S )Nzno such option: %s)Ú_r.   r   r   r   r   r&   ‘   s    zBadOptionError.__str__Nr'   r   r   r   r   r   Š   s   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚAmbiguousOptionErrorc                 C   s   t  | |¡ || _d S r   )r   r%   Úpossibilities)r   r.   r2   r   r   r   r%   ˜   s    zAmbiguousOptionError.__init__c                 C   s   t dƒ| jd | j¡f S )Nzambiguous option: %s (%s?)ú, )r0   r.   Újoinr2   r   r   r   r   r&   œ   s    ÿzAmbiguousOptionError.__str__Nr'   r   r   r   r   r1   ”   s   r1   c                   @   sˆ   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd S )!r	   Znonec              	   C   s¦   d | _ || _|d krLzttjd ƒ}W n ttfk
rB   d}Y nX |d8 }|| _t|t	|d |d ƒƒ | _
| _d| _d| _d | _|| _d| _i | _d| _d| _d S )	NZCOLUMNSéP   é   é   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   r9   rC   r?   rG   r   r   r   r%   Î   s&    
ÿ
zHelpFormatter.__init__c                 C   s
   || _ d S r   )r8   ©r   r8   r   r   r   Ú
set_parserç   s    zHelpFormatter.set_parserc                 C   s&   |dkrt d| ƒ‚d| d | _d S )N)Ú ú z/invalid metavar delimiter for short options: %rú%s)r>   rJ   ©r   Zdelimr   r   r   Úset_short_opt_delimiterê   s
    ÿz%HelpFormatter.set_short_opt_delimiterc                 C   s&   |dkrt d| ƒ‚d| d | _d S )N)ú=rP   z.invalid metavar delimiter for long options: %rrQ   )r>   rK   rR   r   r   r   Úset_long_opt_delimiterð   s
    ÿz$HelpFormatter.set_long_opt_delimiterc                 C   s"   |  j | j7  _ |  jd7  _d S r   ©rD   r9   rE   r   r   r   r   Úindentö   s    zHelpFormatter.indentc                 C   s"   |  j | j8  _ |  jd8  _d S r   rV   r   r   r   r   Údedentú   s    zHelpFormatter.dedentc                 C   s   t dƒ‚d S ©Nzsubclasses must implement©ÚNotImplementedError©r   Úusager   r   r   Úformat_usageÿ   s    zHelpFormatter.format_usagec                 C   s   t dƒ‚d S rY   rZ   ©r   Zheadingr   r   r   Úformat_heading  s    zHelpFormatter.format_headingc                 C   s.   t | j| j dƒ}d| j }tj||||d�S )Né   rP   )Zinitial_indentZsubsequent_indent)rA   r?   rD   ÚtextwrapZfill)r   ÚtextZ
text_widthrW   r   r   r   Ú_format_text  s    
ýzHelpFormatter._format_textc                 C   s   |r|   |¡d S dS d S ©NÚ
rO   ©rd   ©r   Údescriptionr   r   r   Úformat_description  s    z HelpFormatter.format_descriptionc                 C   s   |rd|   |¡ d S dS d S re   rg   )r   Úepilogr   r   r   Úformat_epilog  s    zHelpFormatter.format_epilogc                 C   sP   | j d ks| js|jS | j j |j¡}|tks6|d kr<| j}|j | jt	|ƒ¡S r   )
r8   rH   ÚhelpÚdefaultsÚgetÚdestÚ
NO_DEFAULTÚNO_DEFAULT_VALUEÚreplacer*   )r   r,   Zdefault_valuer   r   r   Úexpand_default  s    zHelpFormatter.expand_defaultc                    sÚ   g }ˆ j | }ˆ jˆ j d }t|ƒ|krBdˆ jd|f }ˆ j}ndˆ jd||f }d}| |¡ |jrºˆ  |¡}t |ˆ j	¡}| d|d|d f ¡ | 
‡ fdd„|dd … D ƒ¡ n|d	 d
krÐ| d
¡ d |¡S )Nr6   ú%*s%s
rO   z	%*s%-*s  r   c                    s   g | ]}d ˆ j d|f ‘qS )ru   rO   )rB   )Ú.0Úliner   r   r   Ú
<listcomp>E  s   ÿz/HelpFormatter.format_option.<locals>.<listcomp>r    éÿÿÿÿrf   )rI   rB   rD   ÚlenÚappendrm   rt   rb   ZwraprF   Úextendr4   )r   r,   ÚresultÚoptsZ	opt_widthZindent_firstZ	help_textZ
help_linesr   r   r   Úformat_option(  s&    



ÿ

zHelpFormatter.format_optionc                 C   sÂ   |   ¡  d}|jD ],}|  |¡}|| j|< t|t|ƒ| j ƒ}q|   ¡  |jD ]8}|jD ],}|  |¡}|| j|< t|t|ƒ| j ƒ}qXqN|  ¡  |  ¡  t	|d | j
ƒ| _t| j| j dƒ| _d S )Nr   r6   ra   )rW   Úoption_listÚformat_option_stringsrI   rA   rz   rD   Úoption_groupsrX   r@   rC   rB   r?   rF   )r   r8   Zmax_lenÚoptZstringsÚgroupr   r   r   Ústore_option_stringsK  s     






z"HelpFormatter.store_option_stringsc                    st   |  ¡ rF|jp|j ¡ ‰ ‡ ‡fdd„|jD ƒ}‡ ‡fdd„|jD ƒ}n|j}|j}ˆjrb|| }n|| }d |¡S )Nc                    s   g | ]}ˆj |ˆ f ‘qS r   )rJ   )rv   Zsopt©Úmetavarr   r   r   rx   a  s   ÿz7HelpFormatter.format_option_strings.<locals>.<listcomp>c                    s   g | ]}ˆj |ˆ f ‘qS r   )rK   )rv   Zloptr†   r   r   rx   c  s   ÿr3   )Útakes_valuer‡   rp   ÚupperÚ_short_optsÚ
_long_optsrG   r4   )r   r,   Z
short_optsZ	long_optsr~   r   r†   r   r�   ]  s    ÿÿ
z#HelpFormatter.format_option_stringsN)r   r(   r)   rr   r%   rN   rS   rU   rW   rX   r^   r`   rd   rj   rl   rt   r   r…   r�   r   r   r   r   r	   ¡   s    +
#c                   @   s&   e Zd Zddd„Zdd„ Zd	d
„ ZdS )r
   r6   é   Nr    c                 C   s   t  | ||||¡ d S r   ©r	   r%   rL   r   r   r   r%   t  s        ÿzIndentedHelpFormatter.__init__c                 C   s   t dƒ| S )Nz
Usage: %s
)r0   r\   r   r   r   r^   |  s    z"IndentedHelpFormatter.format_usagec                 C   s   d| j d|f S )Nz%*s%s:
rO   )rD   r_   r   r   r   r`     s    z$IndentedHelpFormatter.format_heading)r6   rŒ   Nr    ©r   r(   r)   r%   r^   r`   r   r   r   r   r
   p  s       ü
c                   @   s&   e Zd Zd
dd„Zdd„ Zdd	„ ZdS )r   r   rŒ   Nc                 C   s   t  | ||||¡ d S r   r�   rL   r   r   r   r%   ‡  s        ÿzTitledHelpFormatter.__init__c                 C   s   d|   tdƒ¡|f S )Nz%s  %s
ZUsage)r`   r0   r\   r   r   r   r^   �  s    z TitledHelpFormatter.format_usagec                 C   s   d|d| j  t|ƒ f S )Nz%s
%s
z=-)rE   rz   r_   r   r   r   r`   ’  s    z"TitledHelpFormatter.format_heading)r   rŒ   Nr   rŽ   r   r   r   r   r   ƒ  s       ü
c                 C   sh   | d d…   ¡ dkrd}nD| d d…   ¡ dkrDd}| dd … p@d} n| d d… dkrZd}nd}|| |ƒS )	Nr6   Z0xé   Z0bÚ0r    é   é
   )Úlower)ÚvalÚtypeÚradixr   r   r   Ú
_parse_num–  s    r—   c                 C   s
   t | tƒS r   )r—   r:   )r”   r   r   r   Ú
_parse_int£  s    r˜   Zintegerzfloating-pointÚcomplex)r:   ÚlongÚfloatr™   c                 C   sH   t | j \}}z
||ƒW S  tk
rB   ttdƒ|||f ƒ‚Y nX d S )Nzoption %s: invalid %s value: %r)Ú_builtin_cvtr•   r>   r   r0   )r,   rƒ   ÚvalueZcvtZwhatr   r   r   Úcheck_builtin«  s    
ÿrž   c                 C   s:   || j kr|S d tt| j ƒ¡}ttdƒ|||f ƒ‚d S )Nr3   z.option %s: invalid choice: %r (choose from %s))Úchoicesr4   ÚmapÚreprr   r0   )r,   rƒ   r�   rŸ   r   r   r   r   ³  s    
ÿÿ)ZNOZDEFAULTc                   @   sú   e Zd Zddddddddd	d
ddgZdZdZdZdZdZdZ	e
e
e
e
edœZdZdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ ZeeeeeeegZd+d,„ ZeZd-d.„ Zd/d0„ Zd1d2„ Zd3d4„ Zd5d6„ Z d7d8„ Z!dS )9r   Úactionr•   rp   ÚdefaultÚnargsÚconstrŸ   ÚcallbackÚcallback_argsÚcallback_kwargsrm   r‡   )
ÚstoreÚstore_constÚ
store_trueÚstore_falser{   Úappend_constÚcountr¦   rm   Úversion)r©   rª   r«   r¬   r{   r­   r®   )r©   r{   r¦   )r©   r{   )rª   r­   )Ústringr:   rš   r›   r™   Úchoice)r:   rš   r›   r™   r±   Nc                 O   sB   g | _ g | _|  |¡}|  |¡ |  |¡ | jD ]}|| ƒ q0d S r   )rŠ   r‹   Ú_check_opt_stringsÚ_set_opt_stringsÚ
_set_attrsÚCHECK_METHODS)r   r~   ÚattrsÚcheckerr   r   r   r%   4  s    



zOption.__init__c                 C   s   dd„ |D ƒ}|st dƒ‚|S )Nc                 S   s   g | ]}|r|‘qS r   r   )rv   rƒ   r   r   r   rx   K  s      z-Option._check_opt_strings.<locals>.<listcomp>z+at least one option string must be supplied)Ú	TypeError)r   r~   r   r   r   r²   G  s    zOption._check_opt_stringsc                 C   s    |D ]–}t |ƒdk r$td| | ƒ‚qt |ƒdkrd|d dkrH|d dksVtd| | ƒ‚| j |¡ q|dd… dkr€|d dksŽtd| | ƒ‚| j |¡ qd S )	Nr6   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)rz   r   rŠ   r{   r‹   )r   r~   rƒ   r   r   r   r³   P  s2    ÿþÿýÿýzOption._set_opt_stringsc                 C   sv   | j D ]F}||kr*t| ||| ƒ ||= q|dkr@t| |tƒ qt| |d ƒ q|rrt| ¡ ƒ}tdd |¡ | ƒ‚d S )Nr£   zinvalid keyword arguments: %sr3   )ÚATTRSÚsetattrrq   ÚsortedÚkeysr   r4   )r   r¶   Úattrr   r   r   r´   e  s    
þzOption._set_attrsc                 C   s2   | j d krd| _ n| j | jkr.td| j  | ƒ‚d S )Nr©   zinvalid action: %r)r¢   ÚACTIONSr   r   r   r   r   Ú_check_actionx  s    
zOption._check_actionc                 C   s’   | j d kr0| j| jkrŽ| jd k	r(d| _ qŽd| _ n^t| j t ƒrF| j j| _ | j dkrVd| _ | j | jkrrtd| j  | ƒ‚| j| jkrŽtd| j | ƒ‚d S )Nr±   r°   r*   zinvalid option type: %rz$must not supply a type for action %r)	r•   r¢   ÚALWAYS_TYPED_ACTIONSrŸ   Ú
isinstancer   ÚTYPESr   ÚTYPED_ACTIONSr   r   r   r   Ú_check_type~  s     



 ÿzOption._check_typec                 C   sr   | j dkrT| jd kr td| ƒ‚qnt| jttfƒsntdtt | jƒƒ d¡d  | ƒ‚n| jd k	rntd| j  | ƒ‚d S )Nr±   z/must supply a list of choices for type 'choice'z1choices must be a list of strings ('%s' supplied)ú'r    z#must not supply choices for type %r)r•   rŸ   r   rÃ   ÚtupleÚlistr*   Úsplitr   r   r   r   Ú_check_choice–  s$    

 ÿÿþ
 ÿzOption._check_choicec                 C   s\   | j | jkp| jd k	}| jd krX|rX| jrH| jd dd …  dd¡| _n| jd d | _d S )Nr   r6   r¹   r0   r    )r¢   ÚSTORE_ACTIONSr•   rp   r‹   rs   rŠ   )r   rˆ   r   r   r   Ú_check_dest£  s    ÿzOption._check_destc                 C   s*   | j | jkr&| jd k	r&td| j  | ƒ‚d S )Nz*'const' must not be supplied for action %r)r¢   ÚCONST_ACTIONSr¥   r   r   r   r   r   Ú_check_const²  s
    þzOption._check_constc                 C   s<   | j | jkr| jd kr8d| _n| jd k	r8td| j  | ƒ‚d S )Nr    z*'nargs' must not be supplied for action %r)r¢   rÅ   r¤   r   r   r   r   r   Ú_check_nargs¸  s    

þzOption._check_nargsc                 C   s¸   | j dkrrt| jƒs$td| j | ƒ‚| jd k	rJt| jtƒsJtd| j | ƒ‚| jd k	r´t| jtƒs´td| j | ƒ‚nB| jd k	rŒtd| j | ƒ‚| jd k	r td| ƒ‚| jd k	r´td| ƒ‚d S )Nr¦   zcallback not callable: %rz3callback_args, if supplied, must be a tuple: not %rz4callback_kwargs, if supplied, must be a dict: not %rz.callback supplied (%r) for non-callback optionz.callback_args supplied for non-callback optionz0callback_kwargs supplied for non-callback option)	r¢   Úcallabler¦   r   r§   rÃ   rÈ   r¨   Údictr   r   r   r   Ú_check_callbackÁ  sR    

 ÿ

ÿÿþ

ÿÿþ
ÿþ
 ÿ
 ÿzOption._check_callbackc                 C   s   d  | j| j ¡S )Nú/)r4   rŠ   r‹   r   r   r   r   r&   è  s    zOption.__str__c                 C   s
   | j d k	S r   )r•   r   r   r   r   rˆ   í  s    zOption.takes_valuec                 C   s   | j r| j d S | jd S d S ©Nr   )r‹   rŠ   r   r   r   r   Úget_opt_stringð  s    
zOption.get_opt_stringc                 C   s*   | j  | j¡}|d kr|S || ||ƒS d S r   )ÚTYPE_CHECKERro   r•   )r   rƒ   r�   r·   r   r   r   Úcheck_valueù  s    zOption.check_valuec                    s:   |d k	r6ˆj dkrˆ ˆ |¡S t‡ ‡fdd„|D ƒƒS d S )Nr    c                    s   g | ]}ˆ  ˆ |¡‘qS r   )rØ   )rv   Úv©rƒ   r   r   r   rx     s     z(Option.convert_value.<locals>.<listcomp>)r¤   rØ   rÈ   )r   rƒ   r�   r   rÚ   r   Úconvert_value   s    
zOption.convert_valuec                 C   s$   |   ||¡}|  | j| j||||¡S r   )rÛ   Útake_actionr¢   rp   )r   rƒ   r�   Úvaluesr8   r   r   r   Úprocess  s         ÿzOption.processc           	      C   s:  |dkrt |||ƒ �n|dkr2t ||| jƒ �n|dkrHt ||dƒ nî|dkr^t ||dƒ nØ|dkrz| |g ¡ |¡ n¼|dkr˜| |g ¡ | j¡ nž|d	krºt ||| |d
¡d ƒ n||dkrð| jpÊd}| jpÔi }| j| |||f|ž|Ž nF|dk�r| ¡  | ¡  n*|dk�r(| 	¡  | ¡  nt
d| j ƒ‚dS )Nr©   rª   r«   Tr¬   Fr{   r­   r®   r   r    r¦   r   rm   r¯   zunknown action %r)r¼   r¥   Úensure_valuer{   r§   r¨   r¦   Ú
print_helpÚexitÚprint_versionr>   r¢   )	r   r¢   rp   rƒ   r�   rÝ   r8   ÚargsÚkwargsr   r   r   rÜ     s4    





zOption.take_action)"r   r(   r)   r»   rÀ   rÌ   rÅ   rÂ   rÎ   rÄ   rž   r   r×   rµ   r%   r²   r³   r´   rÁ   rÆ   rË   rÍ   rÏ   rÐ   rÓ   r&   r   Ú__repr__rˆ   rÖ   rØ   rÛ   rÞ   rÜ   r   r   r   r   r   Á  sj   õ
ü		ú	ZSUPPRESSHELPZSUPPRESSUSAGEc                   @   s^   e Zd Zddd„Zdd„ ZeZdd„ Zdd	„ Zd
d„ Z	dd„ Z
ddd„Zddd„Zdd„ ZdS )r   Nc                 C   s&   |r"|  ¡ D ]\}}t| ||ƒ qd S r   )Úitemsr¼   )r   rn   r¿   r”   r   r   r   r%   9  s    zValues.__init__c                 C   s
   t | jƒS r   )r*   Ú__dict__r   r   r   r   r&   >  s    zValues.__str__c                 C   s2   t |tƒr| j|jkS t |tƒr*| j|kS tS d S r   )rÃ   r   rç   rÒ   ÚNotImplemented)r   Úotherr   r   r   Ú__eq__C  s
    


zValues.__eq__c                 C   s6   t | ƒD ](}||kr|| }|d k	rt| ||ƒ qd S r   )Údirr¼   )r   rÒ   r¿   Zdvalr   r   r   Ú_update_carefulK  s
    zValues._update_carefulc                 C   s   | j  |¡ d S r   )rç   Úupdate)r   rÒ   r   r   r   Ú_update_looseX  s    zValues._update_loosec                 C   s8   |dkr|   |¡ n |dkr(|  |¡ ntd| ƒ‚d S )NÚcarefulZloosezinvalid update mode: %r)rì   rî   r>   )r   rÒ   Úmoder   r   r   Ú_update`  s
    zValues._updaterï   c                 C   s&   t |ƒ tj| }|  t|ƒ|¡ d S r   )Ú
__import__ÚsysÚmodulesrñ   Úvars)r   Úmodnamerð   Úmodr   r   r   Úread_moduleh  s    
zValues.read_modulec                 C   s&   i }t t|ƒ ¡ |ƒ |  ||¡ d S r   )ÚexecÚopenÚreadrñ   )r   Úfilenamerð   rõ   r   r   r   Ú	read_filem  s    zValues.read_filec                 C   s.   t | |ƒrt| |ƒd kr$t| ||ƒ t| |ƒS r   )ÚhasattrÚgetattrr¼   )r   r¿   r�   r   r   r   rß   r  s    zValues.ensure_value)N)rï   )rï   )r   r(   r)   r%   r&   r   rå   rê   rì   rî   rñ   rø   rý   rß   r   r   r   r   r   7  s   


c                   @   sŒ   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!S )"r   c                 C   s&   |   ¡  || _|  |¡ |  |¡ d S r   )Ú_create_option_listÚoption_classÚset_conflict_handlerÚset_description)r   r  Úconflict_handlerri   r   r   r   r%   ˜  s    
zOptionContainer.__init__c                 C   s   i | _ i | _i | _d S r   ©Ú
_short_optÚ	_long_optrn   r   r   r   r   Ú_create_option_mappings£  s    z'OptionContainer._create_option_mappingsc                 C   s   |j | _ |j| _|j| _d S r   r  rM   r   r   r   Ú_share_option_mappings¬  s    z&OptionContainer._share_option_mappingsc                 C   s   |dkrt d| ƒ‚|| _d S )N)ÚerrorÚresolvez$invalid conflict_resolution value %r)r>   r  )r   Úhandlerr   r   r   r  ³  s    z$OptionContainer.set_conflict_handlerc                 C   s
   || _ d S r   ©ri   rh   r   r   r   r  ¸  s    zOptionContainer.set_descriptionc                 C   s   | j S r   r  r   r   r   r   Úget_description»  s    zOptionContainer.get_descriptionc                 C   s   | ` | `| `d S r   r  r   r   r   r   Údestroy¿  s    zOptionContainer.destroyc                 C   sò   g }|j D ]"}|| jkr
| || j| f¡ q
|jD ]"}|| jkr4| || j| f¡ q4|rî| j}|dkrŠtdd dd„ |D ƒ¡ |ƒ‚nd|dkrî|D ]V\}}| d¡r¾|j 	|¡ | j|= n|j  	|¡ | j|= |j s–|js–|j
j 	|¡ q–d S )Nr
  z conflicting option string(s): %sr3   c                 S   s   g | ]}|d  ‘qS )r   r   )rv   Úcor   r   r   rx   Ö  s     z3OptionContainer._check_conflict.<locals>.<listcomp>r  rº   )rŠ   r  r{   r‹   r  r  r   r4   Ú
startswithÚremoveÚ	containerr€   )r   r,   Zconflict_optsrƒ   r  Zc_optionr   r   r   Ú_check_conflictÈ  s2    



ÿý

zOptionContainer._check_conflictc                 O   sÜ   t |d tƒr| j||Ž}n8t|ƒdkrL|sL|d }t |tƒsTtd| ƒ‚ntdƒ‚|  |¡ | j |¡ | |_	|j
D ]}|| j|< qv|jD ]}|| j|< qŒ|jd k	rØ|jtk	rÀ|j| j|j< n|j| jkrØd | j|j< |S )Nr   r    znot an Option instance: %rúinvalid arguments)rÃ   r*   r  rz   r   r¸   r  r€   r{   r  rŠ   r  r‹   r  rp   r£   rq   rn   )r   rã   rä   r,   rƒ   r   r   r   Ú
add_optionã  s(    





zOptionContainer.add_optionc                 C   s   |D ]}|   |¡ qd S r   )r  )r   r€   r,   r   r   r   Úadd_options  s    zOptionContainer.add_optionsc                 C   s   | j  |¡p| j |¡S r   )r  ro   r  r/   r   r   r   Ú
get_option  s    
ÿzOptionContainer.get_optionc                 C   s   || j kp|| jkS r   )r  r  r/   r   r   r   Ú
has_option  s    
ÿzOptionContainer.has_optionc                 C   sn   | j  |¡}|d kr | j |¡}|d kr4td| ƒ‚|jD ]}| j |= q:|jD ]}| j|= qN|jj |¡ d S )Nzno such option %r)	r  ro   r  r>   rŠ   r‹   r  r€   r  )r   r.   r,   rƒ   r   r   r   Úremove_option  s    



zOptionContainer.remove_optionc                 C   s>   | j s
dS g }| j D ]}|jtk	r| | |¡¡ qd |¡S ©NrO   )r€   rm   r   r{   r   r4   )r   Ú	formatterr}   r,   r   r   r   Úformat_option_help  s    

z"OptionContainer.format_option_helpc                 C   s   |  |  ¡ ¡S r   )rj   r  ©r   r  r   r   r   rj   (  s    z"OptionContainer.format_descriptionc                 C   s:   g }| j r| |  |¡¡ | jr0| |  |¡¡ d |¡S )Nrf   )ri   r{   rj   r€   r  r4   ©r   r  r}   r   r   r   Úformat_help+  s    zOptionContainer.format_helpN)r   r(   r)   r%   r  r	  r  r  r  r  r  r  r  r  r  r  r  rj   r   r   r   r   r   r   x  s     			c                   @   s6   e Zd Zddd„Zdd„ Zdd„ Zdd	„ Zd
d„ ZdS )r   Nc                 C   s$   || _ t | |j|j|¡ || _d S r   )r8   r   r%   r  r  Útitle)r   r8   r!  ri   r   r   r   r%   6  s       ÿzOptionGroup.__init__c                 C   s   g | _ |  | j¡ d S r   )r€   r	  r8   r   r   r   r   r   <  s    zOptionGroup._create_option_listc                 C   s
   || _ d S r   )r!  )r   r!  r   r   r   Ú	set_title@  s    zOptionGroup.set_titlec                 C   s   t  | ¡ | `d S r   )r   r  r€   r   r   r   r   r  C  s    
zOptionGroup.destroyc                 C   s0   |  | j¡}| ¡  |t | |¡7 }| ¡  |S r   )r`   r!  rW   r   r   rX   r  r   r   r   r   J  s
    zOptionGroup.format_help)N)r   r(   r)   r%   r   r"  r  r   r   r   r   r   r   4  s
   
c                
   @   s^  e Zd Zg Zddedddddddf
dd„Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dOdd„Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd d!„ Zd"d#„ Zd$d%„ Zd&d'„ ZdPd(d)„Zd*d+„ Zd,d-„ Zd.d/„ Zd0d1„ Zd2d3„ Zd4d5„ Zd6d7„ Zd8d9„ ZdQd;d<„Z d=d>„ Z!d?d@„ Z"dRdAdB„Z#dCdD„ Z$dSdEdF„Z%dTdGdH„Z&dIdJ„ Z'dUdKdL„Z(dVdMdN„Z)dS )Wr   Nr
  Tc                 C   sr   t  | |||¡ |  |¡ |	| _|| _d| _d| _|d kr@tƒ }|| _| j 	| ¡ |
| _
| j||d� |  ¡  d S )NT)Úadd_help)r   r%   Ú	set_usageÚprogr¯   Úallow_interspersed_argsÚprocess_default_valuesr
   r  rN   rk   Ú_populate_option_listÚ_init_parsing_state)r   r]   r€   r  r¯   r  ri   r  Zadd_help_optionr%  rk   r   r   r   r%   š  s(       ÿ
ÿzOptionParser.__init__c                 C   s.   t  | ¡ | jD ]}| ¡  q| `| `| `d S r   )r   r  r‚   r€   r  )r   r„   r   r   r   r  ¼  s    


zOptionParser.destroyc                 C   s   g | _ g | _|  ¡  d S r   )r€   r‚   r  r   r   r   r   r   Î  s    z OptionParser._create_option_listc                 C   s   | j dddtdƒd� d S )Nz-hz--helprm   zshow this help message and exit©r¢   rm   ©r  r0   r   r   r   r   Ú_add_help_optionÓ  s    þzOptionParser._add_help_optionc                 C   s   | j ddtdƒd� d S )Nz	--versionr¯   z&show program's version number and exitr*  r+  r   r   r   r   Ú_add_version_optionØ  s    þz OptionParser._add_version_optionc                 C   s>   | j r|  | j ¡ |r |  |¡ | jr.|  ¡  |r:|  ¡  d S r   )Ústandard_option_listr  r¯   r-  r,  )r   r€   r#  r   r   r   r(  Ý  s    
z"OptionParser._populate_option_listc                 C   s   d | _ d | _d | _d S r   )ÚrargsÚlargsrÝ   r   r   r   r   r)  ç  s    z OptionParser._init_parsing_statec                 C   sL   |d krt dƒ| _n4|tkr$d | _n$| ¡  d¡rB|dd … | _n|| _d S )Nz%prog [options]zusage: é   )r0   r]   r   r“   r  r\   r   r   r   r$  ð  s    zOptionParser.set_usagec                 C   s
   d| _ d S )NT©r&  r   r   r   r   Úenable_interspersed_argsû  s    z%OptionParser.enable_interspersed_argsc                 C   s
   d| _ d S )NFr2  r   r   r   r   Údisable_interspersed_args  s    z&OptionParser.disable_interspersed_argsc                 C   s
   || _ d S r   )r'  )r   rÞ   r   r   r   Úset_process_default_values  s    z'OptionParser.set_process_default_valuesc                 C   s   || j |< d S r   )rn   )r   rp   r�   r   r   r   Úset_default  s    zOptionParser.set_defaultc                 K   s   | j  |¡ d S r   )rn   rí   )r   rä   r   r   r   Úset_defaults  s    zOptionParser.set_defaultsc                 C   s*   | j d d … }| jD ]}| |j ¡ q|S r   )r€   r‚   r|   )r   Zoptionsr„   r   r   r   Ú_get_all_options  s    
zOptionParser._get_all_optionsc                 C   s`   | j st| jƒS | j ¡ }|  ¡ D ]4}| |j¡}t|tƒr"| 	¡ }| 
||¡||j< q"t|ƒS r   )r'  r   rn   Úcopyr8  ro   rp   rÃ   r*   rÖ   rØ   )r   rn   r,   r£   r.   r   r   r   Úget_default_values  s    


zOptionParser.get_default_valuesc                 O   sz   t |d tƒr t| f|ž|Ž}nJt|ƒdkrb|sb|d }t |tƒsNtd| ƒ‚|j| k	rjtdƒ‚ntdƒ‚| j |¡ |S )Nr   r    znot an OptionGroup instance: %rz"invalid OptionGroup (wrong parser)r  )	rÃ   r*   r   rz   r¸   r8   r>   r‚   r{   )r   rã   rä   r„   r   r   r   Úadd_option_group+  s    


zOptionParser.add_option_groupc                 C   s0   | j  |¡p| j |¡}|r,|j| k	r,|jS d S r   )r  ro   r  r  )r   r.   r,   r   r   r   Úget_option_group;  s    
ÿzOptionParser.get_option_groupc                 C   s&   |d krt jdd … S |d d … S d S r   )ró   Úargv)r   rã   r   r   r   Ú	_get_argsE  s    zOptionParser._get_argsc              
   C   sŒ   |   |¡}|d kr|  ¡ }|| _g  | _}|| _z|  |||¡}W n4 ttfk
rv } z|  t	|ƒ¡ W 5 d }~X Y nX || }|  
||¡S r   )r>  r:  r/  r0  rÝ   Ú_process_argsr   r   r
  r*   Úcheck_values)r   rã   rÝ   r/  r0  ÚstopÚerrr   r   r   Ú
parse_argsK  s    

 zOptionParser.parse_argsc                 C   s   ||fS r   r   )r   rÝ   rã   r   r   r   r@  r  s    zOptionParser.check_valuesc                 C   sˆ   |r„|d }|dkr|d= d S |dd… dkr<|   ||¡ q |d d… dkrft|ƒdkrf|  ||¡ q | jr~| |¡ |d= q d S q d S )Nr   rº   r6   r    r¹   )Ú_process_long_optrz   Ú_process_short_optsr&  r{   )r   r0  r/  rÝ   Úargr   r   r   r?    s    

zOptionParser._process_argsc                 C   s   t || jƒS r   )Ú_match_abbrevr  )r   rƒ   r   r   r   Ú_match_long_opt²  s    zOptionParser._match_long_optc           
      C   sè   |  d¡}d|kr4| dd¡\}}| d|¡ d}n|}d}|  |¡}| j| }| ¡ r¸|j}t|ƒ|k rˆ|  t	dd|ƒ||dœ ¡ qÔ|dkrœ|  d¡}	qÔt
|d|… ƒ}	|d|…= n|rÐ|  td	ƒ| ¡ nd }	| ||	|| ¡ d S )
Nr   rT   r    TFú.%(option)s option requires %(number)d argumentú/%(option)s option requires %(number)d arguments©r,   Znumberz%s option does not take a value)ÚpoprÊ   ÚinsertrH  r  rˆ   r¤   rz   r
  r   rÈ   r0   rÞ   )
r   r/  rÝ   rF  rƒ   Znext_argZhad_explicit_valuer,   r¤   r�   r   r   r   rD  »  s6    


ýýzOptionParser._process_long_optc                 C   sø   |  d¡}d}d}|dd … D ]Ô}d| }| j |¡}|d7 }|sJt|ƒ‚| ¡ rÖ|t|ƒk rv| d||d … ¡ d}|j}	t|ƒ|	k r¦|  t	dd|	ƒ||	dœ ¡ qÚ|	dkrº|  d¡}
qÚt
|d|	… ƒ}
|d|	…= nd }
| ||
|| ¡ |r qôqd S )	Nr   Fr    r¹   TrI  rJ  rK  )rL  r  ro   r   rˆ   rz   rM  r¤   r
  r   rÈ   rÞ   )r   r/  rÝ   rF  rA  ÚiZchrƒ   r,   r¤   r�   r   r   r   rE  ß  s<    
ýýz OptionParser._process_short_optsc                 C   s&   | j d krtj tjd ¡S | j S d S rÕ   )r%  r;   ÚpathÚbasenameró   r=  r   r   r   r   Úget_prog_name  s    
zOptionParser.get_prog_namec                 C   s   |  d|  ¡ ¡S )Nz%prog)rs   rQ  )r   Úsr   r   r   Úexpand_prog_name  s    zOptionParser.expand_prog_namec                 C   s   |   | j¡S r   )rS  ri   r   r   r   r   r    s    zOptionParser.get_descriptionr   c                 C   s   |rt j |¡ t  |¡ d S r   )ró   ÚstderrÚwriterá   )r   Zstatusr#   r   r   r   rá     s    zOptionParser.exitc                 C   s(   |   tj¡ |  dd|  ¡ |f ¡ d S )Nr6   z%s: error: %s
)Úprint_usageró   rT  rá   rQ  r$   r   r   r   r
    s    zOptionParser.errorc                 C   s"   | j r| j |  | j ¡¡S dS d S r  )r]   r  r^   rS  r   r   r   r   Ú	get_usage#  s
    
ÿzOptionParser.get_usagec                 C   s   | j rt|  ¡ |d� d S ©N)Úfile)r]   ÚprintrW  ©r   rY  r   r   r   rV  *  s    	zOptionParser.print_usagec                 C   s   | j r|  | j ¡S dS d S r  )r¯   rS  r   r   r   r   Úget_version6  s    zOptionParser.get_versionc                 C   s   | j rt|  ¡ |d� d S rX  )r¯   rZ  r\  r[  r   r   r   râ   <  s    zOptionParser.print_versionc                 C   sš   |d kr| j }| | ¡ g }| | tdƒ¡¡ | ¡  | jrZ| t | |¡¡ | d¡ | j	D ]}| | 
|¡¡ | d¡ q`| ¡  d |d d… ¡S )NZOptionsrf   rO   ry   )r  r…   r{   r`   r0   rW   r€   r   r  r‚   r   rX   r4   )r   r  r}   r„   r   r   r   r  G  s    


zOptionParser.format_option_helpc                 C   s   |  | j¡S r   )rl   rk   r  r   r   r   rl   X  s    zOptionParser.format_epilogc                 C   sn   |d kr| j }g }| jr*| |  ¡ d ¡ | jrD| |  |¡d ¡ | |  |¡¡ | |  |¡¡ d |¡S re   )	r  r]   r{   rW  ri   rj   r  rl   r4   r  r   r   r   r   [  s    zOptionParser.format_helpc                 C   s    |d krt j}| |  ¡ ¡ d S r   )ró   ÚstdoutrU  r   r[  r   r   r   rà   g  s    zOptionParser.print_help)T)NN)r   N)N)N)N)N)N)*r   r(   r)   r.  r   r%   r  r   r,  r-  r(  r)  r$  r3  r4  r5  r6  r7  r8  r:  r;  r<  r>  rC  r@  r?  rH  rD  rE  rQ  rS  r  rá   r
  rW  rV  r\  râ   r  rl   r   rà   r   r   r   r   r   R  s`   Fö
"

	

'3	$)





c                    sZ   ˆ |krˆ S ‡ fdd„|  ¡ D ƒ}t|ƒdkr6|d S |sDtˆ ƒ‚n| ¡  tˆ |ƒ‚d S )Nc                    s   g | ]}|  ˆ ¡r|‘qS r   )r  )rv   Zword©rR  r   r   rx   €  s    
ÿz!_match_abbrev.<locals>.<listcomp>r    r   )r¾   rz   r   Úsortr1   )rR  Zwordmapr2   r   r^  r   rG  t  s    
rG  )&Ú__version__Ú__all__Z__copyright__ró   r;   rb   r   r   r   ÚImportErrorr0   Ú	Exceptionr   r   r   r   r   r1   r	   r
   r   r—   r˜   r›   r™   rœ   rž   r   rq   r   r   r   r   r   r   r   rG  r   r   r   r   r   Ú<module>   s€   ð 

 P



ý  uA =    &