o
    ;                     @   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   @/tmp/google-cloud-sdk/lib/third_party/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
rt}nd}
|krt
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|sJ |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   
