Your IP : 3.14.255.58


Current Path : /opt/alt/python310/lib64/python3.10/distutils/__pycache__/
Upload File :
Current File : //opt/alt/python310/lib64/python3.10/distutils/__pycache__/fancy_getopt.cpython-310.pyc

o

6��fxE�@s�dZddlZddlZddlZddlZddlTdZe�de�Ze�deef�Z	e
�dd�ZGd	d
�d
�Z
dd�Zd
d�ejD�Zdd�Zdd�ZGdd�d�ZedkrndZdD]Zede�ed�eee���e�qXdSdS)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�Zd d	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
d dd�Zdd�Zddd�Zd dd�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
    NcCsN||_i|_|jr
|��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/python310/lib64/python3.10/distutils/fancy_getopt.py�__init__)s	
zFancyGetopt.__init__cCs(|j��|jD]	}||j|d<qdS)Nr)r�clearr)r�optionrrrr	Qs

�zFancyGetopt._build_indexcCs||_|��dSr)rr	rrrr�set_option_tableVszFancyGetopt.set_option_tablecCs:||jvrtd|��|||f}|j�|�||j|<dS)Nz'option conflict: already an option '%s')r�DistutilsGetoptErrorr�append)r�long_optionZshort_optionZhelp_stringrrrr�
add_optionZs
�
zFancyGetopt.add_optioncCs
||jvS)zcReturn true if the option table for this parser has an
        option with long name 'long_option'.)r�rrrrr�
has_optioncs
zFancyGetopt.has_optioncCs
|�t�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_xlaterrrr�
get_attr_nameh�
zFancyGetopt.get_attr_namecCs\t|t�sJ�|��D] \}}||jvrtd|||f��||jvr+td|||f��qdS)Nz(invalid %s '%s': option '%s' not definedz0invalid %s '%s': aliased option '%s' not defined)�
isinstance�dict�itemsrr)r�aliasesZwhatr
�optrrr�_check_alias_dictns
�
���zFancyGetopt._check_alias_dictcC�|�|d�||_dS)z'Set the aliases for this option parser.r
N)r*r
)rr
rrr�set_aliasesxs
zFancyGetopt.set_aliasescCr+)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)rrrrr�set_negative_aliases}s
z FancyGetopt.set_negative_aliasescCs�g|_g|_|j��i|_|jD]�}t|�dkr!|\}}}d}nt|�dkr.|\}}}}ntd|f��t|t	�r@t|�dkrFt
d|��|dus[t|t	�rUt|�dks[t
d	|��||j|<|j�|�|d
dkr~|rr|d}|dd
�}d|j|<n!|j
�|�}|dur�|j|r�t
d
||f��||jd
<d|j|<|j�|�}|dur�|j||j|kr�t
d||f��t�|�s�t
d|��|�|�|j|<|r�|j�|�||j|d<qdS)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rr�repeatr�len�
ValueErrorr%�strrrrr�getr
�
longopt_re�matchr#r)rr�long�short�helpr5Zalias_torrr�_grok_option_table�st


���

��

��

����zFancyGetopt._grok_option_tablec
Cs�|durtjdd�}|durt�}d}nd}|��d�|j�}zt�|||j�\}}Wntjy>}zt	|��d}~ww|D]y\}}t
|�dkrY|ddkrY|j|d}nt
|�dkrg|dd�d	ksiJ�|dd�}|j�
|�}	|	ry|	}|j|s�|d
ks�Jd��|j�
|�}	|	r�|	}d}nd}|j|}
|r�|j�
|
�dur�t||
d�d}t||
|�|j�||f�qA|r�||fS|S)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.
        Nr1TF� r0rrz--�zboolean option can't have value)�sys�argv�OptionDummyr?�joinr�getoptr
�errorZDistutilsArgErrorr6rr
r9rrrr5�getattr�setattrrr)r�args�objectZcreated_objectrZopts�msgr)�valr
�attrrrrrF�sJ�� 

zFancyGetopt.getoptcCs|jdur	td��|jS)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_orders
zFancyGetopt.get_option_ordercCsdd}|jD]&}|d}|d}t|�}|ddkr|d}|dur%|d}||kr+|}q|ddd}d}||}	d	|}
|rD|g}nd
g}|jD]e}|dd�\}}}t||	�}
|ddkrf|dd�}|dur�|
ry|�d|||
df�n&|�d
||f�nd||f}|
r�|�d|||
df�n|�d|�|
dd�D]	}|�|
|�q�qJ|S)z�Generate help text (a list of strings, one per suggested line of
        output) from the option table for this FancyGetopt object.
        rr1r2r3N�r0�Nr@zOption summary:r.z  --%-*s  %sz
  --%-*s  z%s (-%s)z  --%-*s)rr6�	wrap_textr)r�headerZmax_optrr<r=�lZ	opt_widthZ
line_widthZ
text_widthZ
big_indent�linesr>�textZ	opt_namesrrr�
generate_helpsL
�

��zFancyGetopt.generate_helpcCs0|durtj}|�|�D]	}|�|d�qdS)N�
)rB�stdoutrX�write)rrT�file�linerrr�
print_helphs
�zFancyGetopt.print_helpr)NN)�__name__�
__module__�__qualname__�__doc__rr	rrrr#r*r,r-r?rFrPrXr^rrrrrs 
(
	

M=

OrcCst|�}|�|�|�||�Sr)rr-rF)�optionsZnegative_optrKrJ�parserrrr�fancy_getoptos
recCsi|]}t|�d�qS)r@)�ord)�.0Z_wscharrrr�
<dictcomp>usrhcCs|durgSt|�|kr|gS|��}|�t�}t�d|�}dd�|D�}g}|r�g}d}|rZt|d�}|||krJ|�|d�|d=||}n|rW|dddkrW|d=n|s/|r�|dkru|�|dd|��|d|d�|d<|dddkr�|d=|�d�|��|s)|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)rgZchrrr�
<listcomp>�szwrap_text.<locals>.<listcomp>rr2r@rA)r6�
expandtabsr!�WS_TRANS�re�splitrrE)rW�widthZchunksrVZcur_lineZcur_lenrUrrrrSws>

��"rScCs
|�t�S)zXConvert a long option name to a valid Python identifier by
    changing "-" to "_".
    r )r)rrr�translate_longopt�r$roc@seZdZdZgfdd�ZdS)rDz_Dummy class just used as a place to hold command-line option
    values as instance attributes.cCs|D]}t||d�qdS)zkCreate a new OptionDummy instance.  The attributes listed in
        'options' will be initialized to None.N)rI)rrcr)rrrr�s�zOptionDummy.__init__N)r_r`rarbrrrrrrD�srD�__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: %drY)rbrB�stringrlrFZdistutils.errorsZlongopt_pat�compiler:Zneg_alias_rer8�	maketransr"rreZ
whitespacerkrSrorDr_rW�w�printrErrrr�<module>s0
T6�

?>