mirror of
https://github.com/python/cpython.git
synced 2025-09-10 18:58:35 +00:00
[3.13] gh-53780: Ignore the first "--" (double dash) between an option and command in argparse (GH-124275) (GH-125073)
(cherry picked from commit c578271366
)
Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
This commit is contained in:
parent
a380dc6836
commit
db3ccd8b62
3 changed files with 23 additions and 4 deletions
|
@ -2097,11 +2097,15 @@ class ArgumentParser(_AttributeHolder, _ActionsContainer):
|
|||
# and add the Positional and its args to the list
|
||||
for action, arg_count in zip(positionals, arg_counts):
|
||||
args = arg_strings[start_index: start_index + arg_count]
|
||||
# Strip out the first '--' if it is not in PARSER or REMAINDER arg.
|
||||
if (action.nargs not in [PARSER, REMAINDER]
|
||||
and arg_strings_pattern.find('-', start_index,
|
||||
# Strip out the first '--' if it is not in REMAINDER arg.
|
||||
if action.nargs == PARSER:
|
||||
if arg_strings_pattern[start_index] == '-':
|
||||
assert args[0] == '--'
|
||||
args.remove('--')
|
||||
elif action.nargs != REMAINDER:
|
||||
if (arg_strings_pattern.find('-', start_index,
|
||||
start_index + arg_count) >= 0):
|
||||
args.remove('--')
|
||||
args.remove('--')
|
||||
start_index += arg_count
|
||||
if args and action.deprecated and action.dest not in warned:
|
||||
self._warning(_("argument '%(argument_name)s' is deprecated") %
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue