o
     JAfA                     @   s   	 g d Z ddlZzddlmZ W n ey   dd ZY nw G dd deZeZg fdd	Zg fd
dZ	dd Z
dd Zdd Zdd Zedkr^ddlZeeejdd dddg dS dS ))GetoptErrorerrorgetopt
gnu_getopt    N)gettextc                 C   s   | S N )sr   r   /usr/lib/python3.10/getopt.py_)   s    r   c                   @   s&   e Zd ZdZdZdddZdd ZdS )r    c                 C   s   || _ || _t| || d S r   )msgopt	Exception__init__)selfr   r   r   r   r
   r   .   s   zGetoptError.__init__c                 C   s   | j S r   )r   )r   r   r   r
   __str__3   s   zGetoptError.__str__N)r   )__name__
__module____qualname__r   r   r   r   r   r   r   r
   r   +   s
    
r   c                 C   s   	 g }t |t dkr|g}nt|}| rp| d drp| d dkrp| d dkr3| dd  } 	 || fS | d drNt|| d dd  || dd  \}} nt|| d dd  || dd  \}} | rp| d drp| d dks"|| fS )Nr   r   ---      )typelist
startswithdo_longs	do_shorts)args	shortoptslongoptsoptsr   r   r
   r   8   s   (&	r   c                 C   s@  	 g }g }t |tr|g}nt|}|dr |dd  }d}ntjdr)d}nd}| r| d dkr@|| dd  7 }	 ||fS | d d d dkr^t|| d dd  || dd  \}} n<| d d d d	kr| d d	krt|| d dd  || dd  \}} n|r|| 7 }	 ||fS |	| d  | dd  } | s-||fS )
N+r   TZPOSIXLY_CORRECTFr   r   r   r   )

isinstancestrr   r   osenvirongetr   r   append)r   r    r!   r"   Z	prog_argsZall_options_firstr   r   r
   r   c   s:   

( (r   c                 C   s   z| d}W n ty   d }Y nw |d | ||d d  }}t||\}}|rF|d u rE|s:ttd| ||d |dd  }}n|d urSttd| || d| |p[df | |fS )N=r   zoption --%s requires argumentr   z%option --%s must not have an argumentr   r   )index
ValueErrorlong_has_argsr   r   r)   )r"   r   r!   r   ioptarghas_argr   r   r
   r      s"   r   c                    s    fdd|D }|st td    |v rd fS  d |v r&d fS t|dkr5t td   |d	 }|d}|rF|d d
 }||fS )Nc                    s   g | ]	}|  r|qS r   )r   ).0or   r   r
   
<listcomp>   s    z!long_has_args.<locals>.<listcomp>zoption --%s not recognizedFr*   Tr   zoption --%s not a unique prefixr   )r   r   lenendswith)r   r!   ZpossibilitiesZunique_matchr0   r   r3   r
   r-      s   
r-   c                 C   s   |dkrC|d |dd  }}t ||r4|dkr.|s#ttd| ||d |dd  }}|d}}nd}| d| |f |dks| |fS )Nr   r   r   zoption -%s requires argumentr   )short_has_argr   r   r)   )r"   Z	optstringr    r   r   r/   r   r   r
   r      s   
r   c                 C   sT   t t|D ]}| ||   krdkr n q|d|d   S qttd|  | )N:r   zoption -%s not recognized)ranger6   r   r   r   )r   r    r.   r   r   r
   r8      s
   r8   __main__r   za:bzalpha=beta)__all__r&   r   r   ImportErrorr   r   r   r   r   r   r-   r   r8   r   sysprintargvr   r   r   r
   <module>   s(    !+2"