o
    �X÷;  ã                   @   sv   d dl mZmZmZmZ d dl mZmZmZmZm	Z	 d dl m
Z
mZ i Zdd„ Zdd„ Zdd	d
„ZG dd„ deƒZdS )é    )ÚArgumentParserÚArgumentErrorÚSUPPRESSÚ_SubParsersAction)ÚOPTIONALÚZERO_OR_MOREÚONE_OR_MOREÚ	REMAINDERÚPARSER)Ú_get_action_nameÚ_c                 C   sv   t  | d¡}| jtttfv rdS | jtkr|dkS | jtkr dS | jdu r)|dkS t| jt	ƒs6J d| j ƒ‚|| jkS )zt Returns False if the parse would raise an error if no more arguments are given to this action, True otherwise.
    r   Té   FNú+failed to handle a possible nargs value: %r)
Ú_num_consumed_argsÚgetÚnargsr   r   r	   r   r
   Ú
isinstanceÚint©ÚactionÚnum_consumed_args© r   ú9/usr/lib/python3/dist-packages/argcomplete/my_argparse.pyÚaction_is_satisfied   s   



r   c                 C   sb   t  | d¡}| jttttfv rdS | jtks| jdu r|dkS t| jt	ƒs,J d| j ƒ‚|| jk S )zV Returns True if action could consume more arguments (i.e., its pattern is open).
    r   TNr   )
r   r   r   r   r   r
   r	   r   r   r   r   r   r   r   Úaction_is_open   s   
r   Fc                 C   s>   t  | d¡}| jr|st| ƒsdS | jtkS | jtko|dkS )z– Returns True if action will necessarily consume the next argument.
    isoptional indicates whether the argument is an optional (starts with -).
    r   Tr   )r   r   Úoption_stringsr   r   r	   )r   Ú
isoptionalr   r   r   r   Úaction_is_greedy-   s   
r   c                   @   s   e Zd ZdZdd„ ZdS )ÚIntrospectiveArgumentParserz£ The following is a verbatim copy of ArgumentParser._parse_known_args (Python 2.7.3),
    except for the lines that contain the string "Added by argcomplete".
    c                    sÒ  t  ¡  ˆˆ	_g ˆ	_ˆ	jd urˆ	 ˆ¡‰i ‰ ˆ ˆ	_ˆ	jD ])}|j}t	|jƒD ]\}}ˆ  
|g ¡}| |d |… ¡ | ||d d … ¡ q&qi ‰g }tˆƒ}	t	|	ƒD ]/\}}
|
dkrj| d¡ |	D ]}
| d¡ qaqRˆ	 |
¡}|d u rvd}n|ˆ|< d}| |¡ qRd |¡‰tƒ ‰tƒ ‰ˆˆ	_d‡ ‡‡‡‡	fdd„	‰‡‡‡‡‡	‡fd	d
„}ˆ	 ¡ ‰‡‡‡‡	‡fdd„}g ‰d‰
ˆr¿tˆƒ}nd}ˆ
|krút‡
fdd„ˆD ƒƒ}ˆ
|krá|ˆ
ƒ}|ˆ
krß|‰
qÁ|‰
ˆ
ˆvròˆˆ
|… }ˆ |¡ |‰
|ˆ
ƒ‰
ˆ
|ksÅ|ˆ
ƒ}ˆ ˆ|d … ¡ ˆ�rˆ	j ˆd ¡ ˆ	 tdƒ¡ ˆ	jD ]}|j�r4|ˆv�r4t|ƒ}ˆ	 tdƒ| ¡ �qˆ	jD ]+}|j�rc|jD ]
}|ˆv �rK n�qBdd„ |jD ƒ}tdƒ}ˆ	 |d |¡ ¡ �q9ˆˆfS )Nr   z--ú-ÚAÚOÚ c           
         sÒ   ˆ  | ¡ ˆ | |¡}|| jur1ˆ  | ¡ ˆ  | g ¡D ]}|ˆv r0tdƒ}t|ƒ}t| || ƒ‚q|tus:t| t	ƒrgz
| ˆˆ||ƒ W d S    t| t	ƒrf| j
|d  j}t|ƒ ¡ D ]
\}}	tˆ||	ƒ q[‚ d S )Nznot allowed with argument %sr   )ÚaddÚ_get_valuesÚdefaultr   r   r   r   r   r   r   Ú_name_parser_mapÚ_argcomplete_namespaceÚvarsÚitemsÚsetattr)
r   Úargument_stringsÚoption_stringÚargument_valuesÚconflict_actionÚmsgÚaction_nameÚsubnamespaceÚkeyÚvalue)Úaction_conflictsÚ	namespaceÚseen_actionsÚseen_non_default_actionsÚselfr   r   Útake_actiont   s,   


ýÿ
òzBIntrospectiveArgumentParser._parse_known_args.<locals>.take_actionc                    sª  ˆ|  }|\}}}ˆj }g }	 |d u rˆ ˆ |  ¡ | d S |d ur†||dƒ}ˆj}|dkrg|d |vrg| |g |f¡ |d }	|	|d  }|dd … pMd }
ˆj}||v r\|| }|
}ndtdƒ}t||| ƒ‚|dkr{| d }|g}| |||f¡ nFtdƒ}t||| ƒ‚| d }ˆ|d … }|gˆ_dt|< |||ƒ}|| }ˆ ||… }t|ƒt|< t	|ƒs·ˆj 
|¡ | |||f¡ nq|sÅJ ‚|D ]\}}}ˆ|||ƒ qÇ|S )NTr   r    r   zignored explicit argument %r)Ú_match_argumentÚappendÚprefix_charsÚ_option_string_actionsr   r   Úactive_actionsr   Úlenr   Úremove)Ústart_indexÚoption_tupler   r,   Úexplicit_argÚmatch_argumentÚaction_tuplesÚ	arg_countÚcharsÚcharÚnew_explicit_argÚoptionals_mapr/   ÚstopÚargsÚstartÚselected_patterns)Úarg_stringsÚarg_strings_patternÚextrasÚoption_string_indicesr8   r9   r   r   Úconsume_optional–   s\   


ÀDzGIntrospectiveArgumentParser._parse_known_args.<locals>.consume_optionalc                    sš   ˆj }ˆ| d … }|ˆ|ƒ}tˆ|ƒD ]
\}}ˆj |¡ qtˆ|ƒD ]\}}ˆ | | | … }| |7 } t|ƒt|< ˆ||ƒ q#ˆt|ƒd … ˆd d …< | S ©N)Ú_match_arguments_partialÚzipr>   r;   r?   r   )rA   Úmatch_partialÚselected_patternÚ
arg_countsr   rF   rL   )rO   rP   Úpositionalsr8   r9   r   r   Úconsume_positionalsî   s   
zJIntrospectiveArgumentParser._parse_known_args.<locals>.consume_positionalsr   éÿÿÿÿc                    s   g | ]}|ˆ kr|‘qS r   r   )Ú.0Úindex)rA   r   r   Ú
<listcomp>  s
    þzAIntrospectiveArgumentParser._parse_known_args.<locals>.<listcomp>ztoo few argumentszargument %s is requiredc                 S   s   g | ]}|j turt|ƒ‘qS r   )Úhelpr   r   )r]   r   r   r   r   r_   D  s
    
þz#one of the arguments %s is requiredú rT   )r   Úclearr'   r>   Úfromfile_prefix_charsÚ_read_args_from_filesÚ_action_conflictsÚ_mutually_exclusive_groupsÚ_group_actionsÚ	enumerateÚ
setdefaultÚextendÚiterr;   Ú_parse_optionalÚjoinÚsetÚ_seen_non_default_actionsÚ_get_positional_actionsÚmaxÚminÚerrorr   Ú_actionsÚrequiredr   )r8   rO   r5   Úmutex_groupÚgroup_actionsÚiÚmutex_actionÚ	conflictsÚarg_string_pattern_partsÚarg_strings_iterÚ
arg_stringrB   ÚpatternrS   r[   Úmax_option_string_indexÚnext_option_string_indexÚpositionals_end_indexÚstringsÚ
stop_indexr   ÚnameÚgroupÚnamesr/   r   )r4   rO   rP   rQ   r5   rR   rZ   r6   r7   r8   rA   r9   r   Ú_parse_known_args@   s¤   


ý
ÿ

"U
þ
æ

€


ÿÿ€z-IntrospectiveArgumentParser._parse_known_argsN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r‡   r   r   r   r   r   ;   s    r   N)F)Úargparser   r   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   Ú<module>   s   
