Your IP : 18.117.184.125


Current Path : /opt/alt/python35/lib64/python3.5/distutils/__pycache__/
Upload File :
Current File : //opt/alt/python35/lib64/python3.5/distutils/__pycache__/fancy_getopt.cpython-35.pyc



��YfxE�@sHdZddlZddlZddlZddlZddlTdZejde�Zejdeef�Z	e
jdd�ZGd	d
�d
�Z
dd�Zd
d�ejD�Zdd�Zdd�ZGdd�d�ZedkrDdZxKddddfD]7Zede�edjeee���e�q	WdS)a6distutils.fancy_getopt

Wrapper around the standard getopt module that provides the following
additional features:
  * short and long options are tied together
  * options have help strings, so fancy_getopt could potentially
    create a complete usage summary
  * options set attributes of a passed-in object
�N)�*z[a-zA-Z](?:[a-zA-Z0-9-]*)z^%s$z^(%s)=!(%s)$�-�_c@s�eZdZdZddd�Zdd�Zdd�Zddd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dddd�Zdd�Zddd�Zdddd�ZdS)�FancyGetopta�Wrapper around the standard 'getopt()' module that provides some
    handy extra functionality:
      * short and long options are tied together
      * options have help strings, and help text can be assembled
        from them
      * options set attributes of a passed-in object
      * boolean options can have "negative aliases" -- eg. if
        --quiet is the "negative alias" of --verbose, then "--quiet"
        on the command line sets 'verbose' to false
    NcCsq||_i|_|jr%|j�i|_i|_g|_g|_i|_i|_i|_	g|_
dS)N)�option_table�option_index�_build_index�alias�negative_alias�
short_opts�	long_opts�
short2long�	attr_name�	takes_arg�option_order)�selfr�r�;/opt/alt/python35/lib64/python3.5/distutils/fancy_getopt.py�__init__)s				
							zFancyGetopt.__init__cCs6|jj�x"|jD]}||j|d<qWdS)Nr)r�clearr)r�optionrrrrQs
zFancyGetopt._build_indexcCs||_|j�dS)N)rr)rrrrr�set_option_tableVs	zFancyGetopt.set_option_tablecCsR||jkr"td|��n,|||f}|jj|�||j|<dS)Nz'option conflict: already an option '%s')r�DistutilsGetoptErrorr�append)r�long_optionZshort_optionZhelp_stringrrrr�
add_optionZszFancyGetopt.add_optioncCs
||jkS)zcReturn true if the option table for this parser has an
        option with long name 'long_option'.)r)rrrrr�
has_optioncszFancyGetopt.has_optioncCs
|jt�S)z�Translate long option name 'long_option' to the form it
        has as an attribute of some object: ie., translate hyphens
        to underscores.)�	translate�
longopt_xlate)rrrrr�
get_attr_namehszFancyGetopt.get_attr_namecCs�t|t�st�xj|j�D]\\}}||jkrVtd|||f��||jkr"td|||f��q"WdS)Nz(invalid %s '%s': option '%s' not definedz0invalid %s '%s': aliased option '%s' not defined)�
isinstance�dict�AssertionError�itemsrr)r�aliasesZwhatr	�optrrr�_check_alias_dictnszFancyGetopt._check_alias_dictcCs|j|d�||_dS)z'Set the aliases for this option parser.r	N)r&r	)rr	rrr�set_aliasesxszFancyGetopt.set_aliasescCs|j|d�||_dS)z�Set the negative aliases for this option parser.
        'negative_alias' should be a dictionary mapping option names to
        option names, both the key and value must already be defined
        in the option table.znegative aliasN)r&r
)rr
rrr�set_negative_aliases}sz FancyGetopt.set_negative_aliasescCsug|_g|_|jj�i|_xF|jD];}t|�dkrb|\}}}d}n:t|�dkr�|\}}}}ntd|f��t|t	�s�t|�dkr�t
d|��|dkp�t|t	�o�t|�dkst
d	|��||j|<|jj|�|dd
krh|rH|d}|dd�}d|j|<n[|j
j|�}|dk	r�|j|r�t
d||f��||jd<d|j|<|jj|�}|dk	r|j||j|krt
d
||f��tj|�s0t
d|��|j|�|j|<|r2|jj|�||j|d<q2WdS)z�Populate the various data structures that keep tabs on the
        option table.  Called by 'getopt()' before it can do anything
        worthwhile.
        �r�zinvalid option tuple: %r�z9invalid long option '%s': must be a string of length >= 2N�z:invalid short option '%s': must a single character or None�=�:z>invalid negative alias '%s': aliased option '%s' takes a valuezginvalid alias '%s': inconsistent with aliased option '%s' (one of them takes a value, the other doesn'tzEinvalid long option name '%s' (must be letters, numbers, hyphens only���r/r/)rrr
r�repeatr�len�
ValueErrorr �strrrrr
�getr	�
longopt_re�matchrr)rr�long�short�helpr0Zalias_torrr�_grok_option_table�s^		
		"
!






zFancyGetopt._grok_option_tablecCs2|dkrtjdd�}|dkr=t�}d}nd}|j�dj|j�}y"tj|||j�\}}Wn4tjk
r�}zt	|��WYdd}~XnXx_|D]W\}}t
|�dkr|ddkr|j|d}n>t
|�dkr)|dd�d	ks/t�|dd�}|j
j|�}	|	r]|	}|j|s�|d
ks�td��|jj|�}	|	r�|	}d}nd}|j|}
|r�|jj|
�dk	r�t||
d�d}t||
|�|jj||f�q�W|r*||fS|SdS)aParse command-line options in args. Store as attributes on object.

        If 'args' is None or not supplied, uses 'sys.argv[1:]'.  If
        'object' is None or not supplied, creates a new OptionDummy
        object, stores option values there, and returns a tuple (args,
        object).  If 'object' is supplied, it is modified in place and
        'getopt()' just returns 'args'; in both cases, the returned
        'args' is a modified copy of the passed-in 'args' list, which
        is left untouched.
        Nr,TF� r+rrz--�zboolean option can't have value)�sys�argv�OptionDummyr:�joinr�getoptr�errorZDistutilsArgErrorr1r
r"r	r4rr
rr0�getattr�setattrrr)r�args�objectZcreated_objectrZopts�msgr%�valr	�attrrrrrA�sF		
"".
	

zFancyGetopt.getoptcCs)|jdkrtd��n|jSdS)z�Returns the list of (option, value) tuples processed by the
        previous run of 'getopt()'.  Raises RuntimeError if
        'getopt()' hasn't been called yet.
        Nz!'getopt()' hasn't been called yet)r�RuntimeError)rrrr�get_option_orderszFancyGetopt.get_option_ordercCs�d}xs|jD]h}|d}|d}t|�}|ddkrP|d}|dk	rf|d}||kr|}qW|ddd}d}||}	d|}
|r�|g}n	d	g}x|jD]}|dd
�\}}}t||	�}
|ddkr|dd�}|dkrh|
rN|jd|||
df�q�|jd||f�nHd
||f}|
r�|jd|||
df�n|jd|�x)|
dd�D]}|j|
|�q�Wq�W|S)z�Generate help text (a list of strings, one per suggested line of
        output) from the option table for this FancyGetopt object.
        rr,r-N�r+�Nr;zOption summary:r)z  --%-*s  %sz
  --%-*s  z%s (-%s)z  --%-*sr/r/r/)rr1�	wrap_textr)r�headerZmax_optrr7r8�lZ	opt_widthZ
line_widthZ
text_widthZ
big_indent�linesr9�textZ	opt_namesrrr�
generate_helpsF






	!	zFancyGetopt.generate_helpcCsD|dkrtj}x(|j|�D]}|j|d�q%WdS)N�
)r=�stdoutrS�write)rrO�file�linerrr�
print_helphs	zFancyGetopt.print_help)�__name__�
__module__�__qualname__�__doc__rrrrrrr&r'r(r:rArKrSrYrrrrrs
(	
M=
OrcCs)t|�}|j|�|j||�S)N)rr(rA)�optionsZnegative_optrFrE�parserrrr�fancy_getoptos
r`cCsi|]}dt|��qS)r;)�ord)�.0Z_wscharrrr�
<dictcomp>us	rccCsv|dkrgSt|�|kr)|gS|j�}|jt�}tjd|�}dd�|D�}g}x|rqg}d}xq|r�t|d�}|||kr�|j|d�|d=||}q�|r�|d	ddkr�|d
=Pq�W|rX|dkr=|j|dd|��|d|d�|d<|dddkrX|d=|jdj|��qrW|S)z�wrap_text(text : string, width : int) -> [string]

    Split 'text' into multiple lines of no more than 'width' characters
    each, and return the list of strings that results.
    Nz( +|-+)cSsg|]}|r|�qSrr)rbZchrrr�
<listcomp>�s	zwrap_text.<locals>.<listcomp>rr,r;r<r/r/)r1�
expandtabsr�WS_TRANS�re�splitrr@)rR�widthZchunksrQZcur_lineZcur_lenrPrrrrNws:		
rNcCs
|jt�S)zXConvert a long option name to a valid Python identifier by
    changing "-" to "_".
    )rr)r%rrr�translate_longopt�srjc@s%eZdZdZgdd�ZdS)r?z_Dummy class just used as a place to hold command-line option
    values as instance attributes.cCs%x|D]}t||d�qWdS)zkCreate a new OptionDummy instance.  The attributes listed in
        'options' will be initialized to None.N)rD)rr^r%rrrr�s
zOptionDummy.__init__N)rZr[r\r]rrrrrr?�sr?�__main__z�Tra-la-la, supercalifragilisticexpialidocious.
How *do* you spell that odd word, anyways?
(Someone ask Mary -- she'll know [or she'll
say, "How should I know?"].)�
���(z	width: %drT)r]r=�stringrgrAZdistutils.errorsZlongopt_pat�compiler5Zneg_alias_rer3�	maketransrrr`Z
whitespacerfrNrjr?rZrR�w�printr@rrrr�<module>	s($
�S6

?>