a �DOgxE�@s�ddlZddlZddlZddlZddlTdZe�de�Ze�deef�Ze � dd�Z Gdd �d �Z d d �Z d d �ejD�Zdd�Zdd�ZGdd�d�Zedkr�dZdD]*Zede�ed�eee���e�q�dS)�N)�*z[a-zA-Z](?:[a-zA-Z0-9-]*)z^%s$z ^(%s)=!(%s)$�-�_c@s�eZdZddd�Zdd�Zdd�Zddd �Zd d �Zd d �Zdd�Z dd�Z dd�Z dd�Z d dd�Z dd�Zd!dd�Zd"dd�ZdS)#� FancyGetoptNcCsN||_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�./usr/lib64/python3.9/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_tableVszFancyGetopt.set_option_tablecCs<||jvrtd|��n |||f}|j�|�||j|<dS)Nz'option conflict: already an option '%s')r�DistutilsGetoptErrorr�append)r� long_optionZ short_optionZ help_stringrrrr� add_optionZs �  zFancyGetopt.add_optioncCs ||jvSr)r�rrrrr� has_optioncszFancyGetopt.has_optioncCs |�t�Sr�� translate� longopt_xlaterrrr� get_attr_namehszFancyGetopt.get_attr_namecCsN|��D]@\}}||jvr,td|||f��||jvrtd|||f��qdS)Nz(invalid %s '%s': option '%s' not definedz0invalid %s '%s': aliased option '%s' not defined)�itemsrr)r�aliasesZwhatr �optrrr�_check_alias_dictns � �zFancyGetopt._check_alias_dictcCs|�|d�||_dS)Nr )r'r )rr rrr� set_aliasesxs zFancyGetopt.set_aliasescCs|�|d�||_dS)Nznegative alias)r'r )rr rrr�set_negative_aliases}s z FancyGetopt.set_negative_aliasescCs�g|_g|_|j��i|_|jD�]�}t|�dkrD|\}}}d}n(t|�dkr^|\}}}}ntd|f��t|t �r�t|�dkr�t d|��|dus�t|t �r�t|�dks�t d|��||j|<|j� |�|d d kr�|r�|d }|dd �}d|j |<nF|j �|�}|du�r:|j |�r0t d ||f��||jd <d|j |<|j�|�}|du�r�|j ||j |k�r�t d ||f��t�|��s�t d|��|�|�|j|<|r"|j� |�||j|d<q"dS)N�r�zinvalid option tuple: %r�z9invalid long option '%s': must be a string of length >= 2�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� ValueError� isinstance�strrrrr �getr � longopt_re�matchr#r)rr�long�short�helpr1Zalias_torrr�_grok_option_table�sr     �� ��         ��    �� �� zFancyGetopt._grok_option_tablec Csp|durtjdd�}|dur*t�}d}nd}|��d�|j�}zt�|||j�\}}Wn.tjy�}zt |��WYd}~n d}~00|D]�\}}t |�dkr�|ddkr�|j |d}n |dd�}|j � |�} | r�| }|j|�s |j� |�} | �r| }d}nd}|j|} |�r<|j� | �du�r�stdoutrU�write)rrP�file�linerrr� print_helphszFancyGetopt.print_help)N)NN)NN)N)NN)�__name__� __module__� __qualname__rr rrrr#r'r(r)r<rBrLrUr[rrrrrs (  M = OrcCst|�}|�|�|�||�Sr)rr)rB)�optionsZ negative_optrGrF�parserrrr� fancy_getoptos racCsi|]}t|�d�qS)r=)�ord)�.0Z_wscharrrr� u�rdcCs|dur gSt|�|kr|gS|��}|�t�}t�d|�}dd�|D�}g}|�rg}d}|r�t|d�}|||kr�|�|d�|d=||}q\|r�|dddkr�|d=q�q\|�r|dkr�|�|dd|��|d|d�|d<|dddk�r|d=|�d�|��qN|S)Nz( +|-+)cSsg|] }|r|�qSrr)rcZchrrr� �rezwrap_text..rr.r=�)r2� expandtabsr!�WS_TRANS�re�splitrrA)rT�width�chunksrSZcur_lineZcur_lenrQrrrrOws:      rOcCs |�t�Srr )r&rrr�translate_longopt�srnc@seZdZgfdd�ZdS)r@cCs|D]}t||d�qdSr)rE)rr_r&rrrr�szOptionDummy.__init__N)r\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: %drV)r>�stringrjrBZdistutils.errorsZ longopt_pat�compiler7Z neg_alias_rer5� maketransr"rra� whitespacerirOrnr@r\rT�w�printrArrrr� s( T6