o
     JAfxE                     @   s   	 d dl Z d dlZd dlZd dlZd dlT dZede Zedeef Ze	
ddZG dd	 d	Zd
d Zdd ejD Zdd Zdd ZG dd dZedkrmdZdD ]Zede  edeee e  qWdS dS )    N)*z[a-zA-Z](?:[a-zA-Z0-9-]*)z^%s$z^(%s)=!(%s)$-_c                   @   s   e Zd Z	 dddZdd Zdd Zddd	Zd
d Zdd Zdd Z	dd Z
dd Zdd ZdddZdd ZdddZdddZdS ) FancyGetoptNc                 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   -/usr/lib/python3.10/distutils/fancy_getopt.py__init__)   s   	
zFancyGetopt.__init__c                 C   s(   | j   | jD ]	}|| j |d < qd S )Nr   )r   clearr   )r   optionr   r   r   r	   Q   s   

zFancyGetopt._build_indexc                 C   s   || _ |   d S r   )r   r	   r   r   r   r   set_option_tableV   s   zFancyGetopt.set_option_tablec                 C   s:   || j v rtd| |||f}| j| || j |< d S )Nz'option conflict: already an option '%s')r   DistutilsGetoptErrorr   append)r   long_optionZshort_optionZhelp_stringr   r   r   r   
add_optionZ   s   

zFancyGetopt.add_optionc                 C   s   	 || j v S r   )r   r   r   r   r   r   
has_optionc   s   
zFancyGetopt.has_optionc                 C   s   	 | tS r   	translatelongopt_xlater   r   r   r   get_attr_nameh      
zFancyGetopt.get_attr_namec                 C   sN   |  D ] \}}|| jvrtd|||f || jvr$td|||f qd S )Nz(invalid %s '%s': option '%s' not definedz0invalid %s '%s': aliased option '%s' not defined)itemsr   r   )r   aliasesZwhatr
   optr   r   r   _check_alias_dictn   s   

zFancyGetopt._check_alias_dictc                 C      	 |  |d || _d S )Nr
   )r(   r
   )r   r
   r   r   r   set_aliasesx   s   
zFancyGetopt.set_aliasesc                 C   r)   )Nznegative alias)r(   r   )r   r   r   r   r   set_negative_aliases}   s   
z FancyGetopt.set_negative_aliasesc                 C   s  	 g | _ g | _| j  i | _| jD ]}t|dkr"|\}}}d}nt|dkr/|\}}}}ntd|f t|t	rAt|dk rGt
d| |d u s\t|t	rVt|dks\t
d| || j|< | j | |d	 d
kr|rs|d }|dd	 }d| j|< n!| j|}|d ur| j| rt
d||f || j d	< d| j|< | j|}|d ur| j| | j| krt
d||f t|st
d| | || j|< |r| j| || j|d < qd S )N   r      zinvalid 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   r   r   repeatr   len
ValueError
isinstancestrr   r   r   r   getr
   
longopt_rematchr#   r   )r   r   longshorthelpr3   Zalias_tor   r   r   _grok_option_table   sv   








zFancyGetopt._grok_option_tablec              
   C   sX  	 |d u rt jdd  }|d u rt }d}nd}|   d| j}zt||| j\}}W n tjy? } zt	|d }~ww |D ]a\}}t
|dkrZ|d dkrZ| j|d  }n|dd  }| j|}	|	rj|	}| j| s~| j|}	|	r||	}d}nd}| j| }
|r| j|
d urt||
dd }t||
| | j||f qB|r||fS |S )Nr/   TF r.   r   r   )sysargvOptionDummyr>   joinr   getoptr   errorZDistutilsArgErrorr4   r   r
   r8   r   r   r   r3   getattrsetattrr   r   )r   argsobjectZcreated_objectr   Zoptsmsgr'   valr
   attrr   r   r   rD      sH   


zFancyGetopt.getoptc                 C   s   	 | j d u r
td| j S )Nz!'getopt()' hasn't been called yet)r   RuntimeError)r   r   r   r   get_option_order  s   
zFancyGetopt.get_option_orderc                 C   sf  	 d}| j D ]&}|d }|d }t|}|d dkr|d }|d ur&|d }||kr,|}q|d d d }d}|| }	d| }
|rE|g}nd	g}| j D ]e}|d d
 \}}}t||	}|d dkrg|dd }|d u r|rz|d|||d f  n&|d||f  nd||f }|r|d|||d f  n|d|  |dd  D ]	}||
|  qqK|S )Nr   r/   r0   r1      r.   N   r?   zOption summary:r,   z  --%-*s  %sz
  --%-*s  z%s (-%s)z  --%-*s)r   r4   	wrap_textr   )r   headerZmax_optr   r;   r<   lZ	opt_widthZ
line_width
text_widthZ
big_indentlinesr=   textZ	opt_namesr   r   r   generate_help  sN   


zFancyGetopt.generate_helpc                 C   s0   |d u rt j}| |D ]	}||d  qd S )N
)r@   stdoutrW   write)r   rR   fileliner   r   r   
print_helph  s
   zFancyGetopt.print_helpr   )NN)__name__
__module____qualname__r   r	   r   r   r   r#   r(   r*   r+   r>   rD   rN   rW   r]   r   r   r   r   r      s     
(
	

M=

Or   c                 C   s   t | }|| |||S r   )r   r+   rD   )optionsZnegative_optrI   rH   parserr   r   r   fancy_getopto  s   
rc   c                 C   s   i | ]}t |d qS )r?   )ord).0Z_wscharr   r   r   
<dictcomp>u  s    rf   c                 C   s  	 | d u rg S t | |kr| gS |  } | t} td| }dd |D }g }|rg }d}|r[t |d }|| |krK||d  |d= || }n|rX|d d dkrX|d= n|s0|r|dkrv||d d|  |d |d  |d< |d d dkr|d= |d| |s*|S )Nz( +|-+)c                 S   s   g | ]}|r|qS r   r   )re   Zchr   r   r   
<listcomp>  s    zwrap_text.<locals>.<listcomp>r   r0   r?    )r4   
expandtabsr!   WS_TRANSresplitr   rC   )rV   widthchunksrU   Zcur_lineZcur_lenrS   r   r   r   rQ   w  s@   

"rQ   c                 C   s   	 |  tS r   r    )r'   r   r   r   translate_longopt  r$   ro   c                   @   s   e Zd Z	 g fddZdS )rB   c                 C   s   	 |D ]}t | |d  qd S r   )rG   )r   ra   r'   r   r   r   r     s   zOptionDummy.__init__N)r^   r_   r`   r   r   r   r   r   rB     s    rB   __main__zTra-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: %drX   )r@   stringrk   rD   Zdistutils.errorsZlongopt_patcompiler9   Zneg_alias_rer7   	maketransr"   r   rc   
whitespacerj   rQ   ro   rB   r^   rV   wprintrC   r   r   r   r   <module>   s0    
  T6