Edit File: fancy_getopt.cpython-38.opt-1.pyc
U ����@��dxE����������������������@���s����d�Z�ddlZddlZddlZddlZddlT�dZe�de��Ze�deef��Z e �dd�ZG�d d ��d �Z dd��Zd d��ejD��Zdd��Zdd��ZG�dd��d�Zedkr�dZdD�]*Zede���ed�eee����e���q�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|�����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����;/opt/alt/python38/lib64/python3.8/distutils/fancy_getopt.py�__init__)���s���� zFancyGetopt.__init__c�����������������C���s(���|�j�����|�jD�]}||�j�|d�<�qd�S�)Nr���)r����clearr���)r����optionr���r���r���r ���Q���s���� zFancyGetopt._build_indexc�����������������C���s���||�_�|�����d�S�r���)r���r ���r���r���r���r����set_option_tableV���s����zFancyGetopt.set_option_tablec�����������������C���s<���||�j�krtd|���n |||f}|�j�|��||�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 ���|��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_xlater���r���r���r���� get_attr_nameh���s����zFancyGetopt.get_attr_namec�����������������C���sN���|����D�]@\}}||�jkr,td|||f���||�jkrtd|||f���qd�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���|���|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���|���|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�|�_|�j����i�|�_|�jD��]�}t|�dkrD|\}}}d}n(t|�dkr^|\}}}}ntd|f���t|t �r�t|�dk�r�t d|���|dks�t|t �r�t|�dks�t d |���||�j|<�|�j��|��|d �dkr�|r�|d�}|dd ��}d|�j|<�nF|�j �|�}|dk �r:|�j|��r0t d ||f���||�j�d <�d|�j|<�|�j�|�}|dk �r�|�j|�|�j|�k�r�t d||f���t�|��s�t d|���|��|�|�j|<�|r"|�j�|��||�j|d�<�q"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����repeatr����len� ValueError� isinstance�strr���r���r���r����getr ���� longopt_re�matchr#���r���)r���r����long�short�helpr1���Zalias_tor���r���r����_grok_option_table����st���� �� �� � �� �� ��zFancyGetopt._grok_option_tablec�������������� ���C���sn��|dkrt�jdd��}|dkr*t��}d}nd}|�����d�|�j�}zt�|||�j�\}}W�n,�tjk r��}�zt |��W�5�d}~X�Y�nX�|D�]�\}}t |�dkr�|d�dkr�|�j|d��}n|dd��}|�j� |�} | r�| }|�j|��s|�j� |�} | �r| }d}nd}|�j|�} |�r:|�j� | �dk �r:t|| d�d�}t|| |��|�j�||f��q�|�rf||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�OptionDummyr<����joinr����getoptr ����errorZDistutilsArgErrorr2���r���r ���r6���r���r���r���r1����getattr�setattrr���r���)r����args�objectZcreated_objectr���Zopts�msgr&����valr ����attrr���r���r���rB�������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���sj��d}|�j�D�]L}|d�}|d�}t|�}|d�dkr:|d�}|dk rJ|d�}||kr |}q |d�d�d�}d}||�} d |�} |r�|g}nd g}|�j�D�]�}|dd��\}}}t|| �} |d�dkr�|dd��}|dk�r| r�|�d||| d�f���n|�d ||f���n:d||f�}| �r4|�d||| d�f���n|�d|���| dd��D�]}|�| |����qNq�|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.���r/���N����r,����N���r=���zOption summary:r*���z --%-*s %sz --%-*s z%s (-%s)z --%-*s)r���r2���� wrap_textr���)r����headerZmax_optr���r9���r:����lZ opt_widthZ line_widthZ text_widthZ big_indent�linesr;����textZ opt_namesr���r���r���� generate_help��sH���� �zFancyGetopt.generate_helpc�����������������C���s0���|d�krt�j}|��|�D�]}|�|d���qd�S�)N� )r>����stdoutrT����write)r���rP����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)���r<���rB���rL���rT���rZ���r���r���r���r���r������s��� ( M = Or���c�����������������C���s���t�|��}|�|��|�||�S�r���)r���r)���rB���)�optionsZnegative_optrG���rF����parserr���r���r����fancy_getopto��s���� ra���c�����������������C���s���i�|�]}t�|�d��qS�)r=���)�ord)�.0Z_wscharr���r���r���� <dictcomp>u��s������rd���c�����������������C���s��|�dkrg�S�t�|��|kr|�gS�|����}�|��t�}�t�d|��}dd��|D��}g�}|�rg�}d}|r�t�|d��}||�|kr�|�|d���|d=�||�}q\|r�|d�d�dkr�|d=�q�q\|�r|dkr�|�|d�d|����|d�|d��|d<�|d�d�dk�r|d=�|�d�|���qN|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���)rc���Zchr���r���r���� <listcomp>���s������zwrap_text.<locals>.<listcomp>r���r.���r=�����)r2���� expandtabsr!����WS_TRANS�re�splitr���rA���)rS����widthZchunksrR���Zcur_lineZcur_lenrQ���r���r���r���rO���w��s:���� rO���c�����������������C���s ���|���t�S�)zXConvert a long option name to a valid Python identifier by changing "-" to "_". r ���)r&���r���r���r����translate_longopt���s����rl���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���|D�]}t�|�|d��qdS�)zkCreate a new OptionDummy instance. The attributes listed in 'options' will be initialized to None.N)rE���)r���r_���r&���r���r���r���r������s����zOptionDummy.__init__N)r[���r\���r]���r^���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: %drU���)r^���r>����stringri���rB���Zdistutils.errorsZlongopt_pat�compiler7���Zneg_alias_rer5���� maketransr"���r���ra���Z whitespacerh���rO���rl���r@���r[���rS����w�printrA���r���r���r���r����<module>���s*��� ��T6