argparse.BooleanOptionalAction accepts and silently discards choices, metavar, and type arguments · Issue #92248 · python/cpython (original) (raw)

This is an elaboration of issue #85039.

>>> parser = ArgumentParser()
>>> parser.add_argument('--foo', action=BooleanOptionalAction,
...     choices=[1,2], metavar='FOOBAR', type=int)  # doctest: +ELLIPSIS
BooleanOptionalAction(...)

Note that the store_const, store_true, and store_false actions disallow those keyword arguments.

>>> parser.add_argument('--bar', action='store_true', choices=[1,2])
Traceback (most recent call last):
  ...
TypeError: __init__() got an unexpected keyword argument 'choices'
>>> parser.add_argument('--bar', action='store_true', metavar='FOOBAR')
Traceback (most recent call last):
  ...
TypeError: __init__() got an unexpected keyword argument 'metavar'
>>> parser.add_argument('--bar', action='store_true', type=int)
Traceback (most recent call last):
  ...
TypeError: __init__() got an unexpected keyword argument 'type'
>>> parser.add_argument('--bar', action='store_true')  # doctest: +ELLIPSIS
_StoreTrueAction(...)

Linked PRs