o inh?@sUddlmZmZmZmZmZmZmZmZm Z m Z m Z ddl m Z ddl mZmZmZmZiZeeefed<ddZddZdd d ZGd d d e ZdS)) ONE_OR_MOREOPTIONALPARSER REMAINDERSUPPRESS ZERO_OR_MOREAction ArgumentErrorArgumentParser_get_action_name_SubParsersAction)gettext)DictListSetTuple_num_consumed_argscCsvt|d}|jtttfvrdS|jtkr|dkS|jtkr dS|jdur)|dkSt|jt s6Jd|j||jkS)znReturns False if the parse would raise an error if no more arguments are given to this action, True otherwise.rTFN+failed to handle a possible nargs value: %r) rgetnargsrrrrr isinstanceintactionnum_consumed_argsrI/usr/local/lib/python3.10/dist-packages/argcomplete/packages/_argparse.pyaction_is_satisfieds     rcCsbt|d}|jttttfvrdS|jtks|jdur|dkSt|jt s,Jd|j||jkS)zPReturns True if action could consume more arguments (i.e., its pattern is open).rTNr) rrrrrrrrrrrrrraction_is_open.s  rFcCs>t|d}|jr|st|sdS|jtkS|jtko|dkS)zReturns True if action will necessarily consume the next argument. isoptional indicates whether the argument is an optional (starts with -). rTr)rroption_stringsrrr)r isoptionalrrrraction_is_greedy;s   r"c@seZdZdZdddZdS)IntrospectiveArgumentParserzThe 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". Fc st _g _ jdur i _ jD])}|j}t |jD]\}} |g} | |d|| ||ddq&qig} t } t | D]/\}} | dkrj| d| D]} | dqaqR | } | durvd}n| |<d}| |qRd| tt _d fdd  fd d }  fd d }gd rt}nd} |krt fddD} |kr| }| kr| q| vr |} || |  |ks| } |dr j d  td jD]}|jr4|vr4t|} td|q jD]+}|jrc|jD] }|vrKnqBdd|jD}td} |d|q9fS)Nrz---AOc s|||}||jur1||gD]}|vr0td}t|}t|||q|tus:t|t rkz |||WdSt yjt|t ri|j |dj }t |D] \}} t|| q^wdS)Nznot allowed with argument %sr)add _get_valuesdefaultrr r r rrr BaseException_name_parser_map_argcomplete_namespacevarsitemssetattr) rargument_strings option_stringargument_valuesconflict_actionmsg action_name subnamespacekeyvalue)action_conflicts namespace seen_actionsseen_non_default_actionsselfrr take_actions*      zBIntrospectiveArgumentParser._parse_known_args..take_actioncs|}t|tr |d}t|dkr|\}}}n|\}}}}j}g} |dur4||dS|dur||d}j} |dkr}|d| vr}||g|f|d} | |d}|ddpcd} j} || vrr| |}| }ndtd} t|| ||dkr|d}|g}||||fnFtd} t|| ||d}|d}|g_ dt |<|||}||}||}t|t |<t |s͈j |||||fnq%|sJ|D] \}}}|||q|S)NrTrr%zignored explicit argument %r) rlistlen_match_argumentappend prefix_chars_option_string_actionsr r active_actionsrrremove) start_index option_tuplerr2 explicit_arg_match_argument action_tuples arg_countcharscharnew_explicit_arg optionals_mapr5stopargsstartselected_patterns) arg_stringsarg_strings_patternextrasoption_string_indicesr>r?rrconsume_optionalsd           CzGIntrospectiveArgumentParser._parse_known_args..consume_optionalcsj}|d}||}t|D] \}}j|qt|D]\}}|||}||7}t|t|<||q#t|ddd<|SN)_match_arguments_partialziprGrDrBr)rI match_partialselected_pattern arg_countsrrOrU)rXrY positionalsr>r?rrconsume_positionalss    zJIntrospectiveArgumentParser._parse_known_args..consume_positionalsrcsg|]}|kr|qSrr).0index)rIrr szAIntrospectiveArgumentParser._parse_known_args..ztoo few argumentszargument %s is requiredcSs"g|] }|jturtt|qSr)helprstrr )rfrrrrrhOsz#one of the arguments %s is required r])rclearr-rGfromfile_prefix_chars_read_args_from_files_action_conflicts_mutually_exclusive_groups_group_actions enumerate setdefaultextenditerrD_parse_optionaljoinset_seen_non_default_actions_get_positional_actionsmaxminerrorr _actionsrequiredr )r>rXr; intermixedkwargs mutex_group group_actionsi mutex_action conflictsarg_string_pattern_partsarg_strings_iter arg_stringrJpatternr\rdmax_option_string_indexnext_option_string_indexpositionals_end_indexstrings stop_indexrnamegroupnamesr5r) r:rXrYrZr;r[rcr<r=r>rIr?r_parse_known_argsNs         !X        z-IntrospectiveArgumentParser._parse_known_argsNF)__name__ __module__ __qualname____doc__rrrrrr#Isr#Nr)argparserrrrrrrr r r r r typingrrrrrr__annotations__rrr"r#rrrrs6