o
    8f<                     @   sb  d dl m Z  d dlZd dlZG dd deZG dd deZG dd deZG d	d
 d
eZ	G dd deZ
G dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/d0 ZG d1d2 d2eZej d3d d4dfd5d6Z!dS )7    )copyNc                   @   s   e Zd ZdZdS )DocoptLanguageErrorz4Error in construction of usage-message by developer.N)__name__
__module____qualname____doc__ r   r   G/var/www/html/humari/django-venv/lib/python3.10/site-packages/docopt.pyr      s    r   c                   @   s   e Zd ZdZdZdddZdS )
DocoptExitz;Exit in case user invoked program with incorrect arguments. c                 C   s   t | |d | j   d S )N
)
SystemExit__init__usagestrip)selfmessager   r   r	   r         zDocoptExit.__init__N)r   )r   r   r   r   r   r   r   r   r   r	   r
      s    r
   c                   @   s^   e Zd Zdd Zdd Zdd Zdd Zed	d
 Zdd Z	dddZ
dd Zedd ZdS )Patternc                 G   s   t || _d S Nlistchildren)r   r   r   r   r	   r      s   zPattern.__init__c                 C   s   t | t |kS r   repr)r   otherr   r   r	   __eq__      zPattern.__eq__c                 C   s   t t| S r   )hashr   r   r   r   r	   __hash__   s   zPattern.__hash__c                 C   s"   d| j jddd | jD f S )Nz%s(%s), c                 s   s    | ]}t |V  qd S r   r   .0ar   r   r	   	<genexpr>"       z#Pattern.__repr__.<locals>.<genexpr>)	__class__r   joinr   r   r   r   r	   __repr__    s   zPattern.__repr__c                 C   s&   t | ds| gS tdd | jD g S )Nr   c                 S   s   g | ]}|j qS r   )flatr#   cr   r   r	   
<listcomp>(   s    z Pattern.flat.<locals>.<listcomp>)hasattrsumr   r   r   r   r	   r*   $   s   
zPattern.flatc                 C   s   |    |   | S r   )fix_identitiesfix_list_argumentsr   r   r   r	   fix*   s   zPattern.fixNc                 C   sv   t | ds| S |dkrtt| jn|}t| jD ]\}}t |ds3||v s(J ||| | j|< q|| qdS )z>Make pattern-tree tips point to same object if they are equal.r   N)r.   r   setr*   	enumerater   indexr0   )r   uniqir,   r   r   r	   r0   /   s   

zPattern.fix_identitiesc                    sL   dd | j jD }|D ]  fdd D  dd  D D ]}g |_qq| S )z:Find arguments that should accumulate values and fix them.c                 S   s   g | ]}t |jqS r   r   r+   r   r   r	   r-   =       z.Pattern.fix_list_arguments.<locals>.<listcomp>c                    s   g | ]}  |d kr|qS )   )countr+   caser   r	   r-   ?   s    c                 S   s   g | ]
}t |tkr|qS r   typeArgumentr#   er   r   r	   r-   @       )eitherr   value)r   rC   r$   r   r;   r	   r1   ;   s   zPattern.fix_list_argumentsc           
      C   sj  t | dstt| S g }| gg}|r|d}dd |D }t|v rCdd |D d }||| |jD ]
}||g|  q7ngt|v rcdd |D d }||| |t|j|  nGt|v rdd |D d }||| |t|j|  n't	|v rdd |D d }	|||	 |t|	jd	 |  n|| |std
d |D  S )zATransform pattern into an equivalent, with only top-level Either.r   r   c                 S   s   g | ]}t |qS r   )r>   r+   r   r   r	   r-   P       z"Pattern.either.<locals>.<listcomp>c                 S      g | ]
}t |tu r|qS r   )r>   Eitherr+   r   r   r	   r-   R   rB   c                 S   rF   r   )r>   Requiredr+   r   r   r	   r-   W   rB   c                 S   rF   r   )r>   Optionalr+   r   r   r	   r-   [   rB   c                 S   rF   r   )r>   	OneOrMorer+   r   r   r	   r-   _   rB      c                 S   s   g | ]}t | qS r   )rH   r@   r   r   r	   r-   d   rE   )
r.   rG   rH   popr5   r   appendr   rI   rJ   )
r   retgroupsr   typesrC   r,   requiredoptional	oneormorer   r   r	   rC   D   s8   



zPattern.eitherr   )r   r   r   r   r   r    r)   propertyr*   r2   r0   r1   rC   r   r   r   r	   r      s    

	r   c                   @   s(   e Zd ZdddZdddZdd ZdS )	r?   Nc                 C      || _ || _d S r   namerD   r   rW   rD   r   r   r	   r   i      
zArgument.__init__c                    s   |d u rg n|}dd |D }t |sd||fS ||d  t jtur5d||t j|d jg fS  fdd|D }t |rT|d  j|d jg7  _d||fS d||t j|d jgg fS )Nc                 S   rF   r   r=   r#   lr   r   r	   r-   o   rB   z"Argument.match.<locals>.<listcomp>Fr   Tc                    s(   g | ]}t |tu r|j jkr|qS r   )r>   r?   rW   r"   r   r   r	   r-   u   s    )lenremover>   rD   r   r?   rW   )r   left	collectedargs	same_namer   r   r	   matchm   s   



zArgument.matchc                 C      d| j | jf S )NzArgument(%r, %r)rV   r   r   r   r	   r)   ~   r   zArgument.__repr__r   r   r   r   r   rb   r)   r   r   r   r	   r?   g   s    

r?   c                   @   s(   e Zd Zd	ddZd
ddZdd ZdS )CommandFc                 C   rU   r   rV   rX   r   r   r	   r      rY   zCommand.__init__Nc                 C   sf   |d u rg n|}dd |D }t |r|d j| jkr d||fS ||d  d||t| jdg fS )Nc                 S   rF   r   r=   rZ   r   r   r	   r-      rB   z!Command.match.<locals>.<listcomp>r   FT)r\   rD   rW   r]   re   )r   r^   r_   r`   r   r   r	   rb      s   
zCommand.matchc                 C   rc   )NzCommand(%r, %r)rV   r   r   r   r	   r)      r   zCommand.__repr__)Fr   rd   r   r   r   r	   re      s    

re   c                   @   s@   e Zd ZdddZedd Zddd	Zed
d Zdd Z	dS )OptionNr   Fc                 C   sH   |dv sJ ||| _ | _||| _| _|dkr|rd | _d S || _d S )N)r   r9   FshortlongargcountrD   )r   rh   ri   rj   rD   r   r   r	   r      s    zOption.__init__c                 C   s   d\}}}}|  d\}}}|dddd}| D ]}	|	dr(|	}q|	dr0|	}qd}q|rFtjd	|tjd
}
|
rD|
d nd }| ||||S )NNNr   Fz  , =---r9   z\[default: (.*)\])flagsr   )r   	partitionreplacesplit
startswithrefindallI)class_option_descriptionrh   ri   rj   rD   options_descriptionsmatchedr   r   r	   parse   s   

zOption.parsec                 C   sZ   |d u rg n|}g }|D ]}t |tu r | j| jf|j|jfks%|| q||k||fS r   )r>   rf   rh   ri   rM   )r   r^   r_   left_r[   r   r   r	   rb      s   
zOption.matchc                 C   s   | j p| jS r   )ri   rh   r   r   r   r	   rW      s   zOption.namec                 C   s   d| j | j| j| jf S )NzOption(%r, %r, %r, %r)rg   r   r   r   r	   r)      s   
zOption.__repr__rk   r   )
r   r   r   r   classmethodr   rb   rT   rW   r)   r   r   r   r	   rf      s    




rf   c                   @      e Zd ZdddZdS )
AnyOptionsNc                 C   s,   |d u rg n|}dd |D }||k||fS )Nc                 S   s   g | ]
}t |tks|qS r   r>   rf   rZ   r   r   r	   r-      rB   z$AnyOptions.match.<locals>.<listcomp>r   )r   r^   r_   r   r   r   r	   rb      s   zAnyOptions.matchr   r   r   r   rb   r   r   r   r	   r          r   c                   @   r   )rH   Nc                 C   sZ   |d u rg n|}t |}t |}| jD ]}|||\}}}|s'd||f  S qd||fS )NFTr   r   rb   )r   r^   r_   r[   r,   pr   r   r   r	   rb      s   

zRequired.matchr   r   r   r   r   r	   rH      r   rH   c                   @   r   )rI   Nc                 C   s@   |d u rg n|}t |}| jD ]}|||\}}}qd||fS )NTr   )r   r^   r_   r   mr   r   r	   rb      s
   

zOptional.matchr   r   r   r   r   r	   rI      r   rI   c                   @   r   )rJ   Nc                 C   s   t | jdks	J |d u rg n|}t|}t|}d }d}d}|r@| jd ||\}}}||r2dnd7 }||kr:nt|}|s!|dkrId||fS d||fS )Nr9   Tr   F)r\   r   r   rb   )r   r^   r_   r[   r,   l_r   timesr   r   r	   rb      s"   

zOneOrMore.matchr   r   r   r   r   r	   rJ      r   rJ   c                   @   r   )rG   Nc                 C   sj   |d u rg n|}g }| j D ]}|t|t| \}}}}|r%|| q|r0t|dd dS d||fS )Nc                 S   s   t | d S )Nr9   r\   )outcomer   r   r	   <lambda>   s    zEither.match.<locals>.<lambda>)keyF)r   rb   r   rM   min)r   r^   r_   outcomesr   r   r|   r   r   r   r	   rb      s   


zEither.matchr   r   r   r   r   r	   rG      r   rG   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )TokenStreamc                 C   s&   | t |tu r| n|7 } || _d S r   )r>   strrt   error)r   sourcer   r   r   r	   r     s   
zTokenStream.__init__c                 C   s   t | r	| dS d S Nr   )r\   rL   r   r   r   r	   move	  s   zTokenStream.movec                 C   s   t | r| d S d S r   r   r   r   r   r	   current  s   zTokenStream.currentN)r   r   r   r   r   r   r   r   r   r	   r     s    r   c                    s,  |   d\ }}||  krdkrn nd n|} fdd|D }t|dk rI| jtu r5| d  td  |dkr>dnd}|| |gS t|dkr`| d d	d
d |D f t|d }|j	dkr|d u r| 
 d u r}| d|j |   }n|d ur| d|j |pd|_|gS )Nrn   r   c                    s"   g | ]}|j r|j  r|qS r   )ri   ru   r#   orawr   r	   r-     s   " zparse_long.<locals>.<listcomp>r9   z%s is not recognizedr   z%s is not a unique prefix: %s?r!   c                 s   s    | ]}d |j  V  qdS )z%sN)ri   r   r   r   r	   r%     s    zparse_long.<locals>.<genexpr>z%s requires argumentz%s must not have an argumentT)r   rr   r\   r   r
   rf   rM   r(   r   rj   r   rW   rD   )tokensr{   eqrD   optr   r   r   r	   
parse_long  s0    



r   c                    s.  |   dd   g } dkr fdd|D }t|dkr*| d d t|f t|dk rX| jtu r>| d d  td d  d }|| ||  dd   q
t|d } dd   |jdkrld	}n dkr|  d u r| d
|j	d  |     d} ||_
||  dks|S )Nr9   r   c                    s,   g | ]}|j r|j d  d r|qS )rp   r   )rh   lstripru   r   r   r   r	   r-   .  s
    
z parse_shorts.<locals>.<listcomp>z%-%s is specified ambiguously %d timesr   z-%s is not recognizedrp   Tz-%s requires argument)r   r\   r   r
   rf   rM   r   rj   r   rh   rD   )r   r{   parsedr   r   rD   r   r   r	   parse_shorts*  s:   





r   c                 C   sF   t tdd| t}t||}| d ur|dd| t| S )Nz([\[\]\(\)\|]|\.\.\.)z \1 zunexpected ending: %rrm   )	r   rv   subr   
parse_exprr   r   r(   rH   )r   r{   r   resultr   r   r	   parse_patternK  s   
r   c                 C   s   t | |}|  dkr|S t|dkrt| gn|}|  dkr>|   t | |}|t|dkr5t| gn|7 }|  dks t|dkrIt| gS |S )zexpr ::= seq , ( '|' seq )* ;|r9   )	parse_seqr   r\   rH   r   rG   )r   r{   seqr   r   r   r	   r   T  s   

r   c                 C   sP   g }|   dvr&t| |}|   dkrt| g}|   ||7 }|   dvs|S )zseq ::= ( atom [ '...' ] )* ;)N])r   z...)r   
parse_atomrJ   r   )r   r{   r   atomr   r   r	   r   d  s   

r   c                 C   s  |   }g }|dkr#|   tt| | g}|  dkr!| d|S |dkrQ|   |   dkr<tt g}|   ntt| | g}|  dkrO| d|S |dr_|dkr_t| |S |d	rm|d
vrmt	| |S |drw|
ds{| rt|  gS t|  gS )zxatom ::= '(' expr ')' | '[' expr ']' | '[' 'options' ']' | '--'
             | long | shorts | argument | command ;
    (r   zUnmatched '('[r{   r   zUnmatched '['ro   rp   )rp   ro   <>)r   r   rH   r   r   rI   r   ru   r   r   endswithisupperr?   re   )r   r{   tokenr   r   r   r	   r   p  s0   




r   c                 C   s   t | t}t|}g }| d urT| dkr |dd |D  S | dr/|t||7 }n| drD| dkrD|t||7 }n
|td |	  | d us|S )Nro   c                 S   s   g | ]}t d |qS r   )r?   )r#   vr   r   r	   r-     r8   zparse_args.<locals>.<listcomp>rp   )
r   r
   r   r   ru   r   r   rM   r?   r   )r   r{   r   r   r   r   r	   
parse_args  s   
	r   c                 C   s   dd t d| dd  D S )Nc                 S   s   g | ]	}t d | qS )rp   )rf   r   r#   r~   r   r   r	   r-     s    z%parse_doc_options.<locals>.<listcomp>z	^ *-|
 *-r9   )rv   rt   )docr   r   r	   parse_doc_options  r   r   c                 C   sV   t d| }t|dk rtdt|dkrtdt dd|dd  d  S )	Nz([Uu][Ss][Aa][Gg][Ee]:)   z&"usage:" (case-insensitive) not found.z*More than one "usage:" (case-insensitive).z\n\s*\nr   r9   r   )rv   rt   r\   r   r(   r   )r   usage_splitr   r   r	   printable_usage  s   "r   c                    s0   |   dd   d fdd dd  D S )Nr9   rm   c                 3   s$    | ]}| d  krdn|V  qdS )r   r   Nr   r   pur   r	   r%     s   " zformal_usage.<locals>.<genexpr>)rt   r(   )r   r   r   r	   formal_usage  s    r   c                 C   sX   | rt dd |D rt|  t  |r(t dd |D r*t| t  d S d S d S )Nc                 s   s     | ]}|j d v o|jV  qdS ))z-hz--helpNrV   r   r   r   r	   r%         zextras.<locals>.<genexpr>c                 s   s     | ]}|j d ko|jV  qdS )z	--versionNrV   r   r   r   r	   r%     r   )anyprintr   exit)helpversionr{   r   r   r   r	   extras  s   
r   c                   @   s   e Zd Zdd ZdS )Dictc                 C   s    dd dd t|  D  S )Nz{%s}z,
 c                 s   s    | ]}d | V  qdS )z%r: %rNr   )r#   r7   r   r   r	   r%     r&   z Dict.__repr__.<locals>.<genexpr>)r(   sorteditemsr   r   r   r	   r)     s    zDict.__repr__N)r   r   r   r)   r   r   r   r	   r     s    r   r9   Tc                 C   s   t |  t_ t_}t| }tt||d}t||d}t||||  |	 
|\}}}	|rQ|g krQdd |D }
dd |jD }tdd ||
 | |	 D S t )N)r{   c                 S   rF   r   r   r   r   r   r	   r-     rB   zdocopt.<locals>.<listcomp>c                 S   s    g | ]}t |ttfv r|qS r   )r>   r?   re   r"   r   r   r	   r-     s    c                 s   s    | ]	}|j |jfV  qd S r   rV   r"   r   r   r	   r%     s    zdocopt.<locals>.<genexpr>)r   r
   r   docoptr   r   r   r   r   r2   rb   r*   r   )r   argvr   r   r   pot_optionsformal_patternr   r^   	argumentsr{   pot_argumentsr   r   r	   r     s   r   )"r   sysrv   	Exceptionr   r   r
   objectr   r?   re   rf   r   rH   rI   rJ   rG   r   r   r   r   r   r   r   r   r   r   r   r   r   dictr   r   r   r   r   r   r	   <module>   s8    
R,
!	 		