�PNG  IHDR��;���IDATx��ܻn�0���K�� �)(�pA��� ���7�LeG{�� �§㻢|��ذaÆ 6lذaÆ 6lذaÆ 6lom��$^�y���ذag�5bÆ 6lذaÆ 6lذa{���� 6lذaÆ �`����}H�Fkm�,�m����Ӫ���ô�ô!� �x�|'ܢ˟;�E:���9�&ᶒ�}�{�v]�n&�6� �h��_��t�ڠ͵-ҫ���Z;��Z$�.�P���k�ž)�!��o���>}l�eQfJ�T��u і���چ��\��X=8��Rن4`Vw�l�>����n�G�^��i�s��"ms�$�u��i��?w�bs[m�6�K4���O���.�4��%����/����b�C%��t ��M�ז� �-l�G6�mrz2���s�%�9��s@���-�k�9�=���)������k�B5����\��+͂�Zsٲ ��Rn��~G���R���C����� �wIcI��n7jJ���hۛNCS|���j0��8y�iHKֶۛ�k�Ɉ+;Sz������L/��F�*\��Ԕ�#"5��m�2��[S��������=�g��n�a�P�e�ғ�L�� lذaÆ 6l�^k��̱aÆ 6lذaÆ 6lذa;���� �_��ذaÆ 6lذaÆ 6lذaÆ ���R���IEND�B` 3 \xE�@s�dZddlZddlZddlZddlZddlTdZejde�Zejdeef�Z e j dd�Z Gd d �d �Z d d �Zd d�ejD�Zdd�Zdd�ZGdd�d�Zedkr�dZx2dD]*Zede�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�Zd d d �Zd d �Zd d�Z dd�Z dd�Z dd�Z dd�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 NcCsN||_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�$/usr/lib64/python3.6/fancy_getopt.py�__init__)s zFancyGetopt.__init__cCs,|jj�x|jD]}||j|d<�qWdS)Nr)r�clearr)r�optionrrrrQs  zFancyGetopt._build_indexcCs||_|j�dS)N)rr)rrrrr�set_option_tableVszFancyGetopt.set_option_tablecCs<�||jkrtd|��n |||f}|jj|�||j|<�dS)Nz'option conflict: already an option '%s')r�DistutilsGetoptErrorr�append)r� long_optionZ short_optionZ help_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�xL|j�D]@\}}||jkr= 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� ValueErrorr �strrrrr �getr � longopt_re�matchrr)rr�long�short�helpr0Zalias_torrr�_grok_option_table�s^                   zFancyGetopt._grok_option_tablec Cs�|dkrtjdd�}|dkr*t�}d}nd}|j�dj|j�}ytj|||j�\}}Wn,tjk r�}zt |��WYdd}~XnX�x|D�]�\}}t |�dkr�|ddkr�|j |d}n,t |�dkr�|dd�d ks�t �|dd�}|j j|�} | �r| }|j|�sB|d k�s"t d ��|jj|�} | �r>| }d}nd}|j|} |�rt|jj| �dk �rtt|| 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_objectr Zopts�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_orders  zFancyGetopt.get_option_ordercCsxd}xV|jD]L}|d}|d}t|�}|ddkr<|d}|dk rL|d}||kr |}q W|ddd}d}||} d|} |r�|g} nd g} x�|jD]�}|dd �\}}} t| | �} |ddkr�|dd�}|dk�r| �r�| jd ||| df�n| jd ||f�n:d ||f}| �r<| jd ||| df�n| jd|�x$| dd�D]}| j| |��qXWq�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_helpcCs4|dkrtj}x |j|�D]}|j|d�qWdS)N� )r=�stdoutrS�write)rrO�file�linerrr� print_helphszFancyGetopt.print_help)N)NN)NN)N)NN)�__name__� __module__� __qualname__�__doc__rrrrrrr&r'r(r:rArKrSrYrrrrrs  (  M = OrcCst|�}|j|�|j||�S)N)rr(rA)�optionsZ negative_optrFrE�parserrrr� fancy_getoptos r`cCsi|]}dt|��qS)r;)�ord)�.0Z_wscharrrr� usrccCs"|dkr gSt|�|kr|gS|j�}|jt�}tjd|�}dd�|D�}g}x�|�rg}d}xZ|r�t|d�}|||kr�|j|d�|d=||}q`|r�|d ddkr�|d =Pq`W|�r |dkr�|j|dd|��|d|d�|d<�|dddk�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( +|-+)cSsg|] }|r|�qSrr)rbZchrrr� �szwrap_text..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@seZdZdZgfdd�ZdS)r?z_Dummy class just used as a place to hold command-line option values as instance attributes.cCsx|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?�sr?�__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)rlrmrnro)r]r=�stringrgrAZdistutils.errorsZ longopt_pat�compiler5Z neg_alias_rer3� maketransrrr`Z whitespacerfrNrjr?rZrR�w�printr@rrrr� s* T6