B
    u9aA                 @   s   d dddgZ ddlZyddlmZ W n ek
r@   dd ZY nX 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rddlZeeejdd dddg dS )GetoptErrorerrorgetopt
gnu_getopt    N)gettextc             C   s   | S )N )sr   r   /usr/lib/python3.7/getopt.py_)       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 )N)msgopt	Exception__init__)selfr   r   r   r   r	   r   .   s    zGetoptError.__init__c             C   s   | j S )N)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   
c             C   s   g }t |t dkr|g}nt|}x| r| d dr| d dkr| d dkr^| dd  } P | d drt|| d dd  || dd  \}} q&t|| d dd  || dd  \}} q&W || fS )Nr   r   -z--      )typelist
startswithdo_longs	do_shorts)args	shortoptslongoptsoptsr   r   r	   r   8   s     (*c             C   s6  g }g }t |tr|g}nt|}|dr>|dd  }d}ntjdrPd}nd}x| r,| d dkrz|| dd  7 }P | d d d dkrt|| d dd  || dd  \}} qV| d d d d	kr| d d	krt|| d dd  || dd  \}} qV|r|| 7 }P qV|	| d  | dd  } qVW ||fS )
N+r   TZPOSIXLY_CORRECTFr   z--r   r   )

isinstancestrr   r   osenvirongetr   r   append)r   r   r    r!   Z	prog_argsZall_options_firstr   r   r	   r   c   s2    

( (c             C   s   y| d}W n tk
r&   d }Y n X |d | ||d d   }}t||\}}|r|d kr|svttd| ||d |dd   }}n|d k	rttd| || d| |pdf | |fS )N=r   zoption --%s requires argumentr   z%option --%s must not have an argumentz--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    |kr8d fS  d |krLd fS t|dkrjt td   |d	 }|d}|r|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_matchr/   r   )r   r	   r,      s    
r,   c             C   s   x|dkr|d |dd   }}t ||rj|dkr^|sHttd| ||d |dd   }}|d }}nd}| d| |f qW | |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   sX   x@t t|D ]0}| ||   kr*dkrn q|d|d S qW ttd|  | d S )N:r   zoption -%s not recognized)ranger4   r   r   r
   )r   r   r-   r   r   r	   r6      s    r6   __main__r   za:bzalpha=Zbeta)__all__r%   r   r
   ImportErrorr   r   r   r   r   r   r,   r   r6   r   sysprintargvr   r   r   r	   <module>"   s    +2