Issue 32027: argparse allow_abbrev option also controls short flag combinations (original) (raw)
The allow_abbrev option (default True) currently is documented like this (https://docs.python.org/3/library/argparse.html#allow-abbrev):
Normally, when you pass an argument list to the parse_args() method of an ArgumentParser, it recognizes abbreviations of long options.
However, it also controls combinations of short options and especially the combination of flags (store_const) like -a -b
as -ab
.
Example snippet for testing:
import argparse import sys
parser = argparse.ArgumentParser( allow_abbrev=False ) parser.add_argument('-a', action='store_true') parser.add_argument('-b', action='store_true') parser.add_argument('x', nargs='*') parser.parse_args('-a -b foo bar'.split()) parser.parse_args('-ab foo bar'.split())
As you can see the 2nd parse will fail if allow_abbrev=False.
This issue is either a doc issue only or an unintended combination of long option shortening and (the way more common) flag combinations. When i deactivated this in my code, i wanted to disable the (nice to have) long option shortening, but i unintentionally also deactivated (MUST have) short flag combinations.