[issue21208] Change default behavior of arguments with type bool when options are specified

Karl Richter report at bugs.python.org
Sat Apr 12 23:58:04 CEST 2014


New submission from Karl Richter:

As arguments with type bool are the only ones whose values can be manipulated without passing an option to the argument on CLI, the default behavior for those should be changed from ignoring options to failing when options are specified. Consider the following example:
<code>

import argparse

cache_size_default=1000
cache_size_option = "c"
cache_size_option_long = "cache-size"
start_db_default = False
start_db_option = "t"
start_db_option_long = "start-db"


parser = argparse.ArgumentParser(description='Process some integers.')               
parser.add_argument("-%s" % start_db_option, "--%s" % start_db_option_long, default=start_db_default, type=bool, nargs='?',
                   help='@TODO', dest=start_db_option_long)
parser.add_argument("-%s" % cache_size_option, "--%s" % cache_size_option_long, type=int, nargs='?', default=cache_size_default, 
                   help='size of osm2pgsql cache', dest=cache_size_option_long)

def osm_postgis_transform(cache_size=cache_size_default, start_db=start_db_default):
    print(start_db, cache_size)

if __name__ == "__main__":
    args = vars(parser.parse_args())
    osm_postgis_transform(cache_size=args[cache_size_option_long], start_db=args[start_db_option_long])
</code>

When the script is invoked with 
<code>
python issue-argparse.py --start-db False --cache-size 2000
</code>
The value for start-db is True which is not really intuitive. Changing the default behavior to either fail at argument parsing or overwrite the argument value would be an improvement in my opinion.

----------
components: Library (Lib)
messages: 215983
nosy: krichter
priority: normal
severity: normal
status: open
title: Change default behavior of arguments with type bool when options are specified
type: behavior
versions: Python 3.4

_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue21208>
_______________________________________


More information about the Python-bugs-list mailing list