Edit File: fancy_getopt.cpython-36.opt-1.pyc
3 � \xE������������������@���s����d�Z�ddlZddlZddlZddlZddlT�dZejde��Zejdeef��Z e jdd�ZG�d d ��d �Z dd��Zd d��ejD��Zdd��Zdd��ZG�dd��d�Zedkr�dZx2dD�]*Zede���edjeee����e���q�W�dS�)a6��distutils.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����e�Zd�ZdZddd�Zdd��Zdd��Zd d d �Zdd��Zd d��Z dd��Z dd��Zdd��Zdd��Z d!dd�Zdd��Zd"dd�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 Nc�������������C���sN���||�_�i�|�_|�j�r|�j���i�|�_i�|�_g�|�_g�|�_i�|�_i�|�_i�|�_ g�|�_ d�S�)N)�option_table�option_index�_build_index�alias�negative_alias� short_opts� long_opts� short2long� attr_name� takes_arg�option_order)�selfr�����r����./usr/lib64/python3.6/distutils/fancy_getopt.py�__init__)���s���� zFancyGetopt.__init__c�������������C���s,���|�j�j���x|�jD�]}||�j�|d�<�qW�d�S�)Nr���)r����clearr���)r����optionr���r���r���r���Q���s���� zFancyGetopt._build_indexc�������������C���s���||�_�|�j���d�S�)N)r���r���)r���r���r���r���r����set_option_tableV���s����zFancyGetopt.set_option_tablec�������������C���s<���||�j�krtd|���n |||f}|�jj|��||�j�|<�d�S�)Nz'option conflict: already an option '%s')r����DistutilsGetoptErrorr����append)r����long_optionZshort_optionZhelp_stringr���r���r���r���� add_optionZ���s���� zFancyGetopt.add_optionc�������������C���s ���||�j�kS�)zcReturn true if the option table for this parser has an option with long name 'long_option'.)r���)r���r���r���r���r���� has_optionc���s����zFancyGetopt.has_optionc�������������C���s ���|j�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_xlate)r���r���r���r���r���� get_attr_nameh���s����zFancyGetopt.get_attr_namec�������������C���sR���xL|j���D�]@\}}||�jkr.td|||f���||�jkr td|||f���q W�d�S�)Nz(invalid %s '%s': option '%s' not definedz0invalid %s '%s': aliased option '%s' not defined)�itemsr���r���)r����aliasesZwhatr ����optr���r���r����_check_alias_dictn���s���� zFancyGetopt._check_alias_dictc�������������C���s���|�j�|d��||�_dS�)z'Set the aliases for this option parser.r ���N)r#���r ���)r���r ���r���r���r����set_aliasesx���s����zFancyGetopt.set_aliasesc�������������C���s���|�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 ���)r���r ���r���r���r����set_negative_aliases}���s����z FancyGetopt.set_negative_aliasesc�������������C���s���g�|�_�g�|�_|�jj���i�|�_�x�|�jD��]�}t|�dkrH|\}}}d}n(t|�dkrb|\}}}}ntd|f���t|t ��s�t|�dk�r�t d|���|dkp�t|t �o�t|�dks�t d |���||�j|<�|�j�j|��|d�d k�r|r�|d�}|dd��}d|�j|<�nF|�j j|�}|dk �rB|�j|��r8t d||f���||�j�d<�d|�j|<�|�jj|�}|dk �r�|�j|�|�j|�k�r�t d ||f���tj|��s�t d|���|�j|�|�j|<�|r&|�jj|��||�j|d�<�q&W�dS�)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���r���r ���r����repeatr����len� ValueError� isinstance�strr���r���r���r ����getr ���� longopt_re�matchr���r���)r���r����long�short�helpr-���Zalias_tor���r���r����_grok_option_table����s^���� � zFancyGetopt._grok_option_tablec�������������C���sr��|dkrt�jdd��}|dkr*t��}d}nd}|�j���dj|�j�}ytj|||�j�\}}W�n,�tjk r��}�zt |��W�Y�dd}~X�nX�x�|D�]�\}}t |�dkr�|d�dkr�|�j|d��}n|dd��}|�jj |�} | r�| }|�j|��s |�jj |�} | �r| }d}nd}|�j|�} |�r<|�jj | �dk �r<t|| d�d�}t|| |��|�jj||f��q�W�|�rj||fS�|S�dS�) a��Parse 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(���r���r���)�sys�argv�OptionDummyr8����joinr����getoptr����errorZDistutilsArgErrorr.���r ���r ���r2���r���r ���r���r-����getattr�setattrr���r���)r����args�objectZcreated_objectr���Zopts�msgr"����valr ����attrr���r���r���r>�������sB���� zFancyGetopt.getoptc�������������C���s���|�j�dkrtd��n|�j�S�dS�)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)r���r���r���r����get_option_order��s���� zFancyGetopt.get_option_orderc�������������C���sx��d}xV|�j�D�]L}|d�}|d�}t|�}|d�dkr<|d�}|dk rL|d�}||kr|}qW�|d�d�d�}d}||�} d|�} |r�|g}nd g}x�|�j�D�]�}|dd ��\}}}t|| �} |d�dkr�|dd��}|dk�r| ��r�|jd||| d�f���n|jd||f���n:d ||f�}| �r<|jd||| d�f���n|jd|���x$| dd��D�]}|j| |����qXW�q�W�|S�)z�Generate help text (a list of strings, one per suggested line of output) from the option table for this FancyGetopt object. r���r)���r*���N����r(����N���r9���zOption summary:r&���z --%-*s %sz --%-*s z%s (-%s)z --%-*sr,���r,���r,���)r���r.���� wrap_textr���)r����headerZmax_optr���r5���r6����lZ opt_widthZ line_widthZ text_widthZ big_indent�linesr7����textZ opt_namesr���r���r���� generate_help��sF���� zFancyGetopt.generate_helpc�������������C���s4���|d�krt�j}x |�j|�D�]}|j|d���qW�d�S�)N� )r:����stdoutrP����write)r���rL����file�liner���r���r���� print_helph��s����zFancyGetopt.print_help)N)NN)NN)N)NN)�__name__� __module__�__qualname__�__doc__r���r���r���r���r���r���r#���r$���r%���r8���r>���rH���rP���rV���r���r���r���r���r������s��� ( M = Or���c�������������C���s���t�|��}|j|��|j||�S�)N)r���r%���r>���)�optionsZnegative_optrC���rB����parserr���r���r����fancy_getopto��s���� r]���c�������������C���s���i�|�]}d�t�|��qS�)r9���)�ord)�.0Z_wscharr���r���r���� <dictcomp>u��s����r`���c�������������C���s"��|�dkrg�S�t�|��|kr|�gS�|�j��}�|�jt�}�tjd|��}dd��|D��}g�}x�|�rg�}d}xZ|r�t�|d��}||�|kr�|j|d���|d=�||�}q`|r�|d �d�dkr�|d =�P�q`W�|�r |dkr�|j|d�d|����|d�|d��|d<�|d�d�dk�r |d=�|jdj|���qPW�|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( +|-+)c�������������S���s���g�|�]}|r|�qS�r���r���)r_���Zchr���r���r���� <listcomp>���s����zwrap_text.<locals>.<listcomp>r���r)���r9�����r,���r,���)r.���� expandtabsr����WS_TRANS�re�splitr���r=���)rO����widthZchunksrN���Zcur_lineZcur_lenrM���r���r���r���rK���w��s:���� rK���c�������������C���s ���|�j�t�S�)zXConvert a long option name to a valid Python identifier by changing "-" to "_". )r���r���)r"���r���r���r����translate_longopt���s����rh���c���������������@���s���e�Zd�ZdZg�fdd�ZdS�)r<���z_Dummy class just used as a place to hold command-line option values as instance attributes.c�������������C���s���x|D�]}t�|�|d��qW�dS�)zkCreate a new OptionDummy instance. The attributes listed in 'options' will be initialized to None.N)rA���)r���r[���r"���r���r���r���r������s���� zOptionDummy.__init__N)rW���rX���rY���rZ���r���r���r���r���r���r<������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: %drQ���)rj���rk���rl���rm���)rZ���r:����stringre���r>���Zdistutils.errorsZlongopt_pat�compiler3���Zneg_alias_rer1���� maketransr���r���r]���Z whitespacerd���rK���rh���r<���rW���rO����w�printr=���r���r���r���r����<module> ���s*�����T6