
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
3

  \Óë  ã               @   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y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d=ZG d3d„ dƒZd>Zd?ZG d7d„ dƒZ G d8d„ dƒZ!G d9d„ de!ƒZ"G d:d„ de!ƒZ#d;d<„ Z$eZ%dS )@z1.5.3ÚOptionÚmake_optionÚSUPPRESS_HELPÚSUPPRESS_USAGEÚValuesÚOptionContainerÚOptionGroupÚOptionParserÚHelpFormatterÚIndentedHelpFormatterÚTitledHelpFormatterÚOptParseErrorÚOptionErrorÚOptionConflictErrorÚOptionValueErrorÚ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   ú /usr/lib64/python3.6/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 )N)Úmsg)r   r   r   r   r   Ú__init__h   s    zOptParseError.__init__c             C   s   | j S )N)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 )N)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__N)r   r"   r#   r    r!   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   N)r   r"   r#   r   r   r   r   r   „   s   c               @   s   e Zd Zdd„ Zdd„ ZdS )r   c             C   s
   || _ d S )N)Úopt_str)r   r'   r   r   r   r    Ž   s    zBadOptionError.__init__c             C   s   t dƒ| j S )Nzno such option: %s)Ú_r'   )r   r   r   r   r!   ‘   s    zBadOptionError.__str__N)r   r"   r#   r    r!   r   r   r   r   r   Š   s   c               @   s   e Zd Zdd„ Zdd„ ZdS )ÚAmbiguousOptionErrorc             C   s   t j| |ƒ || _d S )N)r   r    Úpossibilities)r   r'   r*   r   r   r   r    ˜   s    zAmbiguousOptionError.__init__c             C   s   t dƒ| jdj| jƒf S )Nzambiguous option: %s (%s?)z, )r(   r'   Újoinr*   )r   r   r   r   r!   œ   s    zAmbiguousOptionError.__str__N)r   r"   r#   r    r!   r   r   r   r   r)   ”   s   r)   c               @   sˆ   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd S )!r	   Znonec             C   s¦   d | _ || _|d krLy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   r0   r:   r6   r>   r   r   r   r    Î   s$    
 zHelpFormatter.__init__c             C   s
   || _ d S )N)r/   )r   r/   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: %rz%s)rD   rE   )r5   rA   )r   Ú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ú=rE   z.invalid metavar delimiter for long options: %rz%s)rH   rE   )r5   rB   )r   rF   r   r   r   Úset_long_opt_delimiterð   s    
z$HelpFormatter.set_long_opt_delimiterc             C   s"   |  j | j7  _ |  jd7  _d S )Nr   )r;   r0   r<   )r   r   r   r   Úindentö   s    zHelpFormatter.indentc             C   s"   |  j | j8  _ |  jd8  _d S )Nr   )r;   r0   r<   )r   r   r   r   Údedentú   s    zHelpFormatter.dedentc             C   s   t dƒ‚d S )Nzsubclasses must implement)ÚNotImplementedError)r   Úusager   r   r   Úformat_usageÿ   s    zHelpFormatter.format_usagec             C   s   t dƒ‚d S )Nzsubclasses must implement)rL   )r   Úheadingr   r   r   Úformat_heading  s    zHelpFormatter.format_headingc             C   s.   t | j| j dƒ}d| j }tj||||d�S )Né   rE   )Zinitial_indentZsubsequent_indent)r8   r6   r;   ÚtextwrapZfill)r   ÚtextZ
text_widthrJ   r   r   r   Ú_format_text  s    
zHelpFormatter._format_textc             C   s   |r| j |ƒd S dS d S )NÚ
rD   )rT   )r   Údescriptionr   r   r   Úformat_description  s    z HelpFormatter.format_descriptionc             C   s   |rd| j |ƒ d S dS d S )NrU   rD   )rT   )r   Úepilogr   r   r   Úformat_epilog  s    zHelpFormatter.format_epilogc             C   sR   | j d ks| j r|jS | j jj|jƒ}|tks8|d kr>| j}|jj| jt	|ƒƒS )N)
r/   r?   ÚhelpÚdefaultsÚgetÚdestÚ
NO_DEFAULTÚNO_DEFAULT_VALUEÚreplacer$   )r   r&   Zdefault_valuer   r   r   Úexpand_default  s    zHelpFormatter.expand_defaultc                sÚ   g }ˆ j | }ˆ jˆ j d }t|ƒ|krBdˆ jd|f }ˆ j}ndˆ jd||f }d}|j|ƒ |jrºˆ j|ƒ}tj|ˆ j	ƒ}|jd|d|d f ƒ |j
‡ fdd„|dd … D ƒƒ n|d
 d	krÐ|jd	ƒ dj|ƒS )Nr-   z%*s%s
rD   z	%*s%-*s  r   c                s   g | ]}d ˆ j d|f ‘qS )z%*s%s
rD   )r9   )Ú.0Úline)r   r   r   ú
<listcomp>E  s   z/HelpFormatter.format_option.<locals>.<listcomp>r   rU   éÿÿÿÿ)r@   r9   r;   ÚlenÚappendrZ   ra   rR   Zwrapr=   Úextendr+   )r   r&   ÚresultÚoptsZ	opt_widthZindent_firstZ	help_textZ
help_linesr   )r   r   Úformat_option(  s$    



zHelpFormatter.format_optionc             C   sÎ   | j ƒ  d}x6|jD ],}| j|ƒ}|| j|< t|t|ƒ| j ƒ}qW | j ƒ  xF|jD ]<}x6|jD ],}| j|ƒ}|| j|< t|t|ƒ| j ƒ}q`W qTW | jƒ  | jƒ  t	|d | j
ƒ| _t| j| j dƒ| _d S )Nr   r-   rQ   )rJ   Úoption_listÚformat_option_stringsr@   r8   rf   r;   Úoption_groupsrK   r7   r:   r9   r6   r=   )r   r/   Zmax_lenÚoptZstringsÚgroupr   r   r   Ústore_option_stringsK  s     



z"HelpFormatter.store_option_stringsc                st   |j ƒ rF|jp|jjƒ ‰ ‡ ‡fdd„|jD ƒ}‡ ‡fdd„|jD ƒ}n|j}|j}ˆjrb|| }n|| }dj|ƒS )Nc                s   g | ]}ˆj |ˆ f ‘qS r   )rA   )rb   Zsopt)Úmetavarr   r   r   rd   a  s   z7HelpFormatter.format_option_strings.<locals>.<listcomp>c                s   g | ]}ˆj |ˆ f ‘qS r   )rB   )rb   Zlopt)rr   r   r   r   rd   c  s   z, )Útakes_valuerr   r]   ÚupperÚ_short_optsÚ
_long_optsr>   r+   )r   r&   Z
short_optsZ	long_optsrj   r   )rr   r   r   rm   ]  s    

z#HelpFormatter.format_option_stringsN)r   r"   r#   r_   r    rC   rG   rI   rJ   rK   rN   rP   rT   rW   rY   ra   rk   rq   rm   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
   r-   é   Nr   c             C   s   t j| ||||ƒ d S )N)r	   r    )r   r0   r:   r6   r>   r   r   r   r    t  s    zIndentedHelpFormatter.__init__c             C   s   t dƒ| S )Nz
Usage: %s
)r(   )r   rM   r   r   r   rN   |  s    z"IndentedHelpFormatter.format_usagec             C   s   d| j d|f S )Nz%*s%s:
rD   )r;   )r   rO   r   r   r   rP     s    z$IndentedHelpFormatter.format_heading)r-   rw   Nr   )r   r"   r#   r    rN   rP   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   rw   Nc             C   s   t j| ||||ƒ d S )N)r	   r    )r   r0   r:   r6   r>   r   r   r   r    ‡  s    zTitledHelpFormatter.__init__c             C   s   d| j tdƒƒ|f S )Nz%s  %s
ZUsage)rP   r(   )r   rM   r   r   r   rN   �  s    z TitledHelpFormatter.format_usagec             C   s   d|d| j  t|ƒ f S )Nz%s
%s
z=-)r<   rf   )r   rO   r   r   r   rP   ’  s    z"TitledHelpFormatter.format_heading)r   rw   Nr   )r   r"   r#   r    rN   rP   r   r   r   r   r   ƒ  s      
c             C   sh   | d d… j ƒ dkrd}nD| d d… j ƒ dkrDd}| dd … p@d} n| d d… dkrZd}nd}|| |ƒS )	Nr-   Z0xé   Z0bÚ0r   é   é
   )Úlower)ÚvalÚtypeÚradixr   r   r   Ú
_parse_num–  s    r€   c             C   s
   t | tƒS )N)r€   r1   )r}   r   r   r   Ú
_parse_int£  s    r�   Zintegerzfloating-pointÚcomplex)r1   ÚlongÚfloatr‚   c             C   sF   t | j \}}y||ƒS  tk
r@   ttdƒ|||f ƒ‚Y nX d S )Nzoption %s: invalid %s value: %r)Ú_builtin_cvtr~   r5   r   r(   )r&   ro   ÚvalueZcvtZwhatr   r   r   Úcheck_builtin«  s    r‡   c             C   s:   || j kr|S djtt| j ƒƒ}ttdƒ|||f ƒ‚d S )Nz, z.option %s: invalid choice: %r (choose from %s))Úchoicesr+   ÚmapÚreprr   r(   )r&   ro   r†   rˆ   r   r   r   r   ³  s    
ÚNOÚDEFAULTc               @   sú   e Zd Zddddddddd	d
ddgZdAZdBZdCZdDZdEZdFZ	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/d0„ Zd1d2„ ZeeeeeeegZd3d4„ ZeZd5d6„ Zd7d8„ Zd9d:„ Zd;d<„ Zd=d>„ Z d?d@„ Z!dS )Gr   Úactionr~   r]   ÚdefaultÚnargsÚconstrˆ   ÚcallbackÚcallback_argsÚcallback_kwargsrZ   rr   ÚstoreÚstore_constÚ
store_trueÚstore_falserg   Úappend_constÚcountÚversionÚstringr1   rƒ   r„   r‚   Úchoice)r1   rƒ   r„   r‚   rœ   Nc             O   sF   g | _ g | _| j|ƒ}| j|ƒ | j|ƒ x| jD ]}|| ƒ q2W d S )N)ru   rv   Ú_check_opt_stringsÚ_set_opt_stringsÚ
_set_attrsÚCHECK_METHODS)r   rj   Ú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   )rb   ro   r   r   r   rd   K  s    z-Option._check_opt_strings.<locals>.<listcomp>z+at least one option string must be supplied)Ú	TypeError)r   rj   r   r   r   r�   G  s    zOption._check_opt_stringsc             C   s¤   xž|D ]–}t |ƒdk r&td| | ƒ‚qt |ƒdkrf|d dkoH|d dksXtd| | ƒ‚| jj|ƒ q|dd… dko€|d dks�td| | ƒ‚| jj|ƒ qW d S )	Nr-   z>invalid option string %r: must be at least two characters longr   ú-r   zMinvalid short option string %r: must be of the form -x, (x any non-dash char)z--zGinvalid long option string %r: must start with --, followed by non-dash)rf   r   ru   rg   rv   )r   rj   ro   r   r   r   rž   P  s$    
zOption._set_opt_stringsc             C   sz   xP| j D ]F}||kr,t| ||| ƒ ||= q|dkrBt| |tƒ qt| |d ƒ qW |rvt|jƒ ƒ}tddj|ƒ | ƒ‚d S )NrŽ   zinvalid keyword arguments: %sz, )ÚATTRSÚsetattrr^   ÚsortedÚkeysr   r+   )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_ACTIONS)r   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ƒƒ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$   Úsplit)r   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 … jddƒ| _n| jd d | _d S )Nr   r-   r¤   r(   r   )r�   ÚSTORE_ACTIONSr~   r]   rv   r`   ru   )r   rs   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rvt| jƒs$td| j | ƒ‚| jd k	rLt| jtƒ rLtd| j | ƒ‚| jd k	r¸t| jtƒ r¸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“   Údict)r   r   r   r   Ú_check_callbackÁ  s0    






zOption._check_callbackc             C   s   dj | j| j ƒS )Nú/)r+   ru   rv   )r   r   r   r   r!   è  s    zOption.__str__c             C   s
   | j d k	S )N)r~   )r   r   r   r   rs   í  s    zOption.takes_valuec             C   s   | j r| j d S | jd S d S )Nr   )rv   ru   )r   r   r   r   Úget_opt_stringð  s    
zOption.get_opt_stringc             C   s*   | j j| jƒ}|d kr|S || ||ƒS d S )N)ÚTYPE_CHECKERr\   r~   )r   ro   r†   r¢   r   r   r   Úcheck_valueù  s    zOption.check_valuec                s:   |d k	r6ˆj dkrˆjˆ |ƒS t‡ ‡fdd„|D ƒƒS d S )Nr   c                s   g | ]}ˆj ˆ |ƒ‘qS r   )rÁ   )rb   Úv)ro   r   r   r   rd     s    z(Option.convert_value.<locals>.<listcomp>)r�   rÁ   r²   )r   ro   r†   r   )ro   r   r   Úconvert_value   s    
zOption.convert_valuec             C   s$   | j ||ƒ}| j| j| j||||ƒS )N)rÃ   Útake_actionr�   r]   )r   ro   r†   Úvaluesr/   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|j|g ƒj|ƒ n¼|dkr˜|j|g ƒj| jƒ nž|d	krºt |||j|d
ƒd ƒ n||dkrð| jpÊf }| jpÔi }| j| |||f|ž|Ž nF|dk�r|jƒ  |jƒ  n*|dk�r(|j	ƒ  |jƒ  nt
d| j ƒ‚dS )Nr”   r•   r–   Tr—   Frg   r˜   r™   r   r   r‘   rZ   rš   zunknown action %r)r¦   r�   Úensure_valuerg   r’   r“   r‘   Ú
print_helpÚexitÚprint_versionr5   r�   )	r   r�   r]   ro   r†   rÅ   r/   ÚargsÚkwargsr   r   r   rÄ     s4    





zOption.take_action)
r”   r•   r–   r—   rg   r˜   r™   r‘   rZ   rš   )r”   r•   r–   r—   rg   r˜   r™   )r”   rg   r‘   )r”   rg   )r•   r˜   )r›   r1   rƒ   r„   r‚   rœ   )"r   r"   r#   r¥   rª   r¶   r¯   r¬   r¸   r®   r‡   r   rÀ   r    r    r�   rž   rŸ   r«   r°   rµ   r·   r¹   rº   r½   r!   r   Ú__repr__rs   r¿   rÁ   rÃ   rÆ   rÄ   r   r   r   r   r   Á  sŠ                      			ZSUPPRESSZHELPZUSAGEc               @   s^   e Zd Zddd„Zdd„ ZeZdd„ Zdd	„ Zd
d„ Z	dd„ Z
ddd„Zddd„Zdd„ ZdS )r   Nc             C   s*   |r&x |j ƒ D ]\}}t| ||ƒ qW d S )N)Úitemsr¦   )r   r[   r©   r}   r   r   r   r    9  s    zValues.__init__c             C   s
   t | jƒS )N)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 )N)r­   r   rÏ   r¼   ÚNotImplemented)r   Úotherr   r   r   Ú__eq__C  s
    


zValues.__eq__c             C   s:   x4t | ƒD ](}||kr
|| }|d k	r
t| ||ƒ q
W d S )N)Údirr¦   )r   r¼   r©   Zdvalr   r   r   Ú_update_carefulK  s
    zValues._update_carefulc             C   s   | j j|ƒ d S )N)rÏ   Úupdate)r   r¼   r   r   r   Ú_update_looseX  s    zValues._update_loosec             C   s8   |dkr| j |ƒ n |dkr(| j|ƒ ntd| ƒ‚d S )NÚcarefulZloosezinvalid update mode: %r)rÔ   rÖ   r5   )r   r¼   Úmoder   r   r   Ú_update`  s
    zValues._updater×   c             C   s&   t |ƒ tj| }| jt|ƒ|ƒ d S )N)Ú
__import__ÚsysÚmodulesrÙ   Úvars)r   ÚmodnamerØ   Úmodr   r   r   Úread_moduleh  s    
zValues.read_modulec             C   s&   i }t t|ƒjƒ |ƒ | j||ƒ d S )N)ÚexecÚopenÚreadrÙ   )r   ÚfilenamerØ   rÝ   r   r   r   Ú	read_filem  s    zValues.read_filec             C   s0   t | |ƒ st| |ƒd kr&t| ||ƒ t| |ƒS )N)Ú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&   | j ƒ  || _| j|ƒ | j|ƒ d S )N)Ú_create_option_listÚoption_classÚset_conflict_handlerÚset_description)r   ré   Úconflict_handlerrV   r   r   r   r    ˜  s    
zOptionContainer.__init__c             C   s   i | _ i | _i | _d S )N)Ú
_short_optÚ	_long_optr[   )r   r   r   r   Ú_create_option_mappings£  s    z'OptionContainer._create_option_mappingsc             C   s   |j | _ |j| _|j| _d S )N)rí   rî   r[   )r   r/   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ò   )r5   rì   )r   Úhandlerr   r   r   rê   ³  s    z$OptionContainer.set_conflict_handlerc             C   s
   || _ d S )N)rV   )r   rV   r   r   r   rë   ¸  s    zOptionContainer.set_descriptionc             C   s   | j S )N)rV   )r   r   r   r   Úget_description»  s    zOptionContainer.get_descriptionc             C   s   | ` | `| `d S )N)rí   rî   r[   )r   r   r   r   Údestroy¿  s    zOptionContainer.destroyc             C   sþ   g }x,|j D ]"}|| jkr|j|| j| fƒ qW x,|jD ]"}|| jkr:|j|| j| fƒ q:W |rú| j}|dkr’tddjdd„ |D ƒƒ |ƒ‚nh|dkrúx^|D ]V\}}|jdƒrÈ|jj	|ƒ | j|= n|j j	|ƒ | j|= |j pæ|js |j
jj	|ƒ q W d S )Nrñ   z conflicting option string(s): %sz, c             S   s   g | ]}|d  ‘qS )r   r   )rb   Úcor   r   r   rd   Ö  s    z3OptionContainer._check_conflict.<locals>.<listcomp>rò   z--)ru   rí   rg   rv   rî   rì   r   r+   Ú
startswithÚremoveÚ	containerrl   )r   r&   Zconflict_optsro   ró   Zc_optionr   r   r   Ú_check_conflictÈ  s.    



zOptionContainer._check_conflictc             O   sæ   t |d tƒr| j||Ž}n:t|ƒdkrN| rN|d }t |tƒsVtd| ƒ‚ntdƒ‚| j|ƒ | jj|ƒ | |_	x|j
D ]}|| j|< qzW x|jD ]}|| j|< q”W |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: %rzinvalid arguments)r­   r$   ré   rf   r   r£   rú   rl   rg   rù   ru   rí   rv   rî   r]   rŽ   r^   r[   )r   rË   rÌ   r&   ro   r   r   r   Ú
add_optionã  s(    



zOptionContainer.add_optionc             C   s   x|D ]}| j |ƒ qW d S )N)rû   )r   rl   r&   r   r   r   Úadd_options  s    
zOptionContainer.add_optionsc             C   s   | j j|ƒp| jj|ƒS )N)rí   r\   rî   )r   r'   r   r   r   Ú
get_option  s    zOptionContainer.get_optionc             C   s   || j kp|| jkS )N)rí   rî   )r   r'   r   r   r   Ú
has_option  s    
zOptionContainer.has_optionc             C   sv   | j j|ƒ}|d kr | jj|ƒ}|d kr4td| ƒ‚x|jD ]}| j |= q<W x|jD ]}| j|= qTW |jjj|ƒ d S )Nzno such option %r)	rí   r\   rî   r5   ru   rv   rù   rl   rø   )r   r'   r&   ro   r   r   r   Úremove_option  s    zOptionContainer.remove_optionc             C   sB   | j s
dS g }x(| j D ]}|jtk	r|j|j|ƒƒ qW dj|ƒS )NrD   )rl   rZ   r   rg   rk   r+   )r   Ú	formatterri   r&   r   r   r   Úformat_option_help  s    
z"OptionContainer.format_option_helpc             C   s   |j | jƒ ƒS )N)rW   rô   )r   r   r   r   r   rW   (  s    z"OptionContainer.format_descriptionc             C   s:   g }| j r|j| j|ƒƒ | jr0|j| j|ƒƒ dj|ƒS )NrU   )rV   rg   rW   rl   r  r+   )r   r   ri   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  rW   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|j|ƒ || _d S )N)r/   r   r    ré   rì   Útitle)r   r/   r  rV   r   r   r   r    6  s    zOptionGroup.__init__c             C   s   g | _ | j| jƒ d S )N)rl   rð   r/   )r   r   r   r   rè   <  s    zOptionGroup._create_option_listc             C   s
   || _ d S )N)r  )r   r  r   r   r   Ú	set_title@  s    zOptionGroup.set_titlec             C   s   t j| ƒ | `d S )N)r   rõ   rl   )r   r   r   r   rõ   C  s    
zOptionGroup.destroyc             C   s0   |j | jƒ}|jƒ  |tj| |ƒ7 }|jƒ  |S )N)rP   r  rJ   r   r  rK   )r   r   ri   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 j| |||ƒ | j|ƒ |	| _|| _d| _d| _|d kr@tƒ }|| _| jj	| ƒ |
| _
| j||d� | jƒ  d S )NT)Úadd_help)r   r    Ú	set_usageÚprogrš   Úallow_interspersed_argsÚprocess_default_valuesr
   r   rC   rX   Ú_populate_option_listÚ_init_parsing_state)r   rM   rl   ré   rš   rì   rV   r   Zadd_help_optionr  rX   r   r   r   r    š  s    
zOptionParser.__init__c             C   s2   t j| ƒ x| jD ]}|jƒ  qW | `| `| `d S )N)r   rõ   rn   rl   r   )r   rp   r   r   r   rõ   ¼  s    
zOptionParser.destroyc             C   s   g | _ g | _| jƒ  d S )N)rl   rn   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--helprZ   zshow this help message and exit)r�   rZ   )rû   r(   )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 exit)r�   rZ   )rû   r(   )r   r   r   r   Ú_add_version_optionØ  s    z OptionParser._add_version_optionc             C   s>   | j r| j| j ƒ |r | j|ƒ | jr.| jƒ  |r:| jƒ  d S )N)Ústandard_option_listrü   rš   r  r  )r   rl   r  r   r   r   r
  Ý  s    
z"OptionParser._populate_option_listc             C   s   d | _ d | _d | _d S )N)ÚrargsÚlargsrÅ   )r   r   r   r   r  ç  s    z OptionParser._init_parsing_statec             C   sL   |d krt dƒ| _n4|tkr$d | _n$|jƒ jdƒrB|dd … | _n|| _d S )Nz%prog [options]zusage: é   )r(   rM   r   r|   r÷   )r   rM   r   r   r   r  ð  s    zOptionParser.set_usagec             C   s
   d| _ d S )NT)r  )r   r   r   r   Úenable_interspersed_argsû  s    z%OptionParser.enable_interspersed_argsc             C   s
   d| _ d S )NF)r  )r   r   r   r   Údisable_interspersed_args  s    z&OptionParser.disable_interspersed_argsc             C   s
   || _ d S )N)r	  )r   rÆ   r   r   r   Úset_process_default_values  s    z'OptionParser.set_process_default_valuesc             C   s   || j |< d S )N)r[   )r   r]   r†   r   r   r   Úset_default  s    zOptionParser.set_defaultc             K   s   | j j|ƒ d S )N)r[   rÕ   )r   rÌ   r   r   r   Úset_defaults  s    zOptionParser.set_defaultsc             C   s.   | j d d … }x| jD ]}|j|j ƒ qW |S )N)rl   rn   rh   )r   Zoptionsrp   r   r   r   Ú_get_all_options  s    zOptionParser._get_all_optionsc             C   sd   | j st| jƒS | jjƒ }x@| jƒ D ]4}|j|jƒ}t|tƒr$|j	ƒ }|j
||ƒ||j< q$W t|ƒS )N)r	  r   r[   Úcopyr  r\   r]   r­   r$   r¿   rÁ   )r   r[   r&   rŽ   r'   r   r   r   Úget_default_values  s    


zOptionParser.get_default_valuesc             O   s|   t |d tƒr t| f|ž|Ž}nLt|ƒdkrd| rd|d }t |tƒsPtd| ƒ‚|j| k	rltdƒ‚ntdƒ‚| jj|ƒ |S )Nr   r   znot an OptionGroup instance: %rz"invalid OptionGroup (wrong parser)zinvalid arguments)	r­   r$   r   rf   r£   r/   r5   rn   rg   )r   rË   rÌ   rp   r   r   r   Úadd_option_group+  s    


zOptionParser.add_option_groupc             C   s0   | j j|ƒp| jj|ƒ}|r,|j| k	r,|jS d S )N)rí   r\   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 )Nr   )rÛ   Úargv)r   rË   r   r   r   Ú	_get_argsE  s    zOptionParser._get_argsc             C   sŒ   | j |ƒ}|d kr| jƒ }|| _g  | _}|| _y| j|||ƒ}W n4 ttfk
rv } z| jt	|ƒƒ W Y d d }~X nX || }| j
||ƒS )N)r  r  r  r  rÅ   Ú_process_argsr   r   rñ   r$   Úcheck_values)r   rË   rÅ   r  r  ÚstopÚerrr   r   r   Ú
parse_argsK  s    

 zOptionParser.parse_argsc             C   s   ||fS )Nr   )r   rÅ   rË   r   r   r   r  r  s    zOptionParser.check_valuesc             C   sŒ   x†|r†|d }|dkr |d= d S |dd… dkr>| j ||ƒ q|d d… dkrht|ƒdkrh| j||ƒ q| jr€|j|ƒ |d= qd S qW d S )Nr   z--r-   r   r¤   )Ú_process_long_optrf   Ú_process_short_optsr  rg   )r   r  r  rÅ   Úargr   r   r   r    s    

zOptionParser._process_argsc             C   s   t || jƒS )N)Ú_match_abbrevrî   )r   ro   r   r   r   Ú_match_long_opt²  s    zOptionParser._match_long_optc       
      C   sè   |j dƒ}d|kr4|jddƒ\}}|jd|ƒ d}n|}d}| j|ƒ}| j| }|jƒ r¸|j}t|ƒ|k rˆ| jt	dd|ƒ||dœ ƒ qÔ|dkrœ|j dƒ}	qÔt
|d|… ƒ}	|d|…= n|rÐ| jtd	ƒ| ƒ nd }	|j||	|| ƒ d S )
Nr   rH   r   TFz.%(option)s option requires %(number)d argumentz/%(option)s option requires %(number)d arguments)r&   Únumberz%s option does not take a value)Úpopr´   Úinsertr'  rî   rs   r�   rf   rñ   r   r²   r(   rÆ   )
r   r  rÅ   r%  ro   Znext_argZhad_explicit_valuer&   r�   r†   r   r   r   r#  »  s0    


zOptionParser._process_long_optc             C   sú   |j dƒ}d}d}xâ|dd … D ]Ò}d| }| jj|ƒ}|d7 }|sLt|ƒ‚|jƒ rØ|t|ƒk rx|jd||d … ƒ d}|j}	t|ƒ|	k r¨| jt	dd|	ƒ||	dœ ƒ qÜ|	dkr¼|j dƒ}
qÜt
|d|	… ƒ}
|d|	…= nd }
|j||
|| ƒ |r P q W d S )	Nr   Fr   r¤   Tz.%(option)s option requires %(number)d argumentz/%(option)s option requires %(number)d arguments)r&   r(  )r)  rí   r\   r   rs   rf   r*  r�   rñ   r   r²   rÆ   )r   r  rÅ   r%  r   ÚiZchro   r&   r�   r†   r   r   r   r$  ß  s6    
z OptionParser._process_short_optsc             C   s&   | j d krtjjtjd ƒS | j S d S )Nr   )r  r2   ÚpathÚbasenamerÛ   r  )r   r   r   r   Úget_prog_name  s    
zOptionParser.get_prog_namec             C   s   |j d| jƒ ƒS )Nz%prog)r`   r.  )r   Úsr   r   r   Úexpand_prog_name  s    zOptionParser.expand_prog_namec             C   s   | j | jƒS )N)r0  rV   )r   r   r   r   rô     s    zOptionParser.get_descriptionr   c             C   s   |rt jj|ƒ t j|ƒ d S )N)rÛ   ÚstderrÚwriterÉ   )r   Zstatusr   r   r   r   rÉ     s    zOptionParser.exitc             C   s(   | j tjƒ | jdd| jƒ |f ƒ d S )Nr-   z%s: error: %s
)Úprint_usagerÛ   r1  rÉ   r.  )r   r   r   r   r   rñ     s    zOptionParser.errorc             C   s"   | j r| jj| j| j ƒƒS dS d S )NrD   )rM   r   rN   r0  )r   r   r   r   Ú	get_usage#  s    zOptionParser.get_usagec             C   s   | j rt| jƒ |d� d S )N)Úfile)rM   Úprintr4  )r   r5  r   r   r   r3  *  s    	zOptionParser.print_usagec             C   s   | j r| j| j ƒS dS d S )NrD   )rš   r0  )r   r   r   r   Úget_version6  s    zOptionParser.get_versionc             C   s   | j rt| jƒ |d� d S )N)r5  )rš   r6  r7  )r   r5  r   r   r   rÊ   <  s    zOptionParser.print_versionc             C   sž   |d kr| j }|j| ƒ g }|j|jtdƒƒƒ |jƒ  | jrZ|jtj| |ƒƒ |jdƒ x(| j	D ]}|j|j
|ƒƒ |jdƒ qbW |jƒ  dj|d d… ƒS )NZOptionsrU   rD   r   re   )r   rq   rg   rP   r(   rJ   rl   r   r  rn   r  rK   r+   )r   r   ri   rp   r   r   r   r  G  s    

zOptionParser.format_option_helpc             C   s   |j | jƒS )N)rY   rX   )r   r   r   r   r   rY   X  s    zOptionParser.format_epilogc             C   sn   |d kr| j }g }| jr*|j| jƒ d ƒ | jrD|j| j|ƒd ƒ |j| j|ƒƒ |j| j|ƒƒ dj|ƒS )NrU   rD   )	r   rM   rg   r4  rV   rW   r  rY   r+   )r   r   ri   r   r   r   r  [  s    zOptionParser.format_helpc             C   s    |d krt j}|j| jƒ ƒ d S )N)rÛ   Ústdoutr2  r  )r   r5  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  r  r  r  r  r  r  r  r  r  r  r"  r  r  r'  r#  r$  r.  r0  rô   rÉ   rñ   r4  r3  r7  rÊ   r  rY   r  rÈ   r   r   r   r   r   R  s^   F

	

'3	$)





c                sZ   ˆ |krˆ S ‡ fdd„|j ƒ D ƒ}t|ƒdkr6|d S |sDtˆ ƒ‚n|jƒ  tˆ |ƒ‚d S )Nc                s   g | ]}|j ˆ ƒr|‘qS r   )r÷   )rb   Zword)r/  r   r   rd   €  s    z!_match_abbrev.<locals>.<listcomp>r   r   )r¨   rf   r   Úsortr)   )r/  Zwordmapr*   r   )r/  r   r&  t  s    
r&  )r‹   rŒ   ZSUPPRESSHELPZSUPPRESSUSAGE)&Ú__version__Ú__all__Z__copyright__rÛ   r2   rR   r   r   r   ÚImportErrorr(   Ú	Exceptionr   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   Ú<module>   s|    

 P


  uA =    &