diff options
| author | Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> | 2019-07-13 22:59:56 -0700 |
|---|---|---|
| committer | Petr Viktorin <pviktori@redhat.com> | 2019-07-14 07:59:56 +0200 |
| commit | b1e4d1b6032d4c82b549233fa08a2c7cfe7e818b (patch) | |
| tree | baa898fbe2437237f4c303a93985c373e03e5fbd /Lib/argparse.py | |
| parent | b815669c833c543b0f6696c3121a179f6b2383a6 (diff) | |
| download | cpython-git-b1e4d1b6032d4c82b549233fa08a2c7cfe7e818b.tar.gz | |
bpo-26967: fix flag grouping with allow_abbrev=False (GH-14316) (GH-14759)
The `allow_abbrev` option for ArgumentParser is documented and intended to disable support for unique prefixes of --options, which may sometimes be ambiguous due to deferred parsing.
However, the initial implementation also broke parsing of grouped short flags, such as `-ab` meaning `-a -b` (or `-a=b`). Checking the argument for a leading `--` before rejecting it fixes this.
This was prompted by pytest-dev/pytestGH-5469, so a backport to at least 3.8 would be great :smile:
And this is my first PR to CPython, so please let me know if I've missed anything!
https://bugs.python.org/issue26967
(cherry picked from commit dffca9e925ee5c3072663cbe8d4d4768406d5307)
Co-authored-by: Zac Hatfield-Dodds <Zac-HD@users.noreply.github.com>
Diffstat (limited to 'Lib/argparse.py')
| -rw-r--r-- | Lib/argparse.py | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/Lib/argparse.py b/Lib/argparse.py index 9a67b41ae0..5820d0d8ca 100644 --- a/Lib/argparse.py +++ b/Lib/argparse.py @@ -2132,7 +2132,7 @@ class ArgumentParser(_AttributeHolder, _ActionsContainer): action = self._option_string_actions[option_string] return action, option_string, explicit_arg - if self.allow_abbrev: + if self.allow_abbrev or not arg_string.startswith('--'): # search through all possible prefixes of the option string # and all actions in the parser for possible interpretations option_tuples = self._get_option_tuples(arg_string) |
