Setting up Python's ArgumentParser with two mutually excluding flags where one flag has optional additional flags -


i define following using python's argumentparser:

--mutually_exclusive_flag_a stringparameter  --mutually_exclusive_flag_b stringparameter     --optional_b_flag_one     --optional_b_flag_two 

one can use either mutually_exclusive_flag_a or mutually_exclusive_flag_b, not both.

if 1 uses mutually_exclusive_flag_b, 1 can use optional_b_flag_one , optional_b_flag_two.

optional_b_flag_one , optional_b_flag_two boolean flags.

i see add_mutally_exclusive_group handle selecting mutually_exclusive_flag_a or mutually_exclusive_flag_b. however, not sure how declare if use mutually_exclusive_flag_b, optional_b_flag_one , optional_b_flag_two valid flags.

it seems may able use subparsers feature , turn mutually_exclusive_flag_a , mutually_exclusive_flag_b commands.

what best option?

argparse can't handle complex of test. mutually exclusive groups can't nested, , don't handle other kinds of logic (only xor, not and , or). i've explored such expansion in python bug/issue, it's not trivial addition.

the best choice own testing after parsing.

the primary purpose of argparse figure out user wants. checking validity, , issuing nice error message plus, not central parsing task.

one of problems expanding mechanism write meaningful usage message general combinations. have thought how you'd explain requirement users?


Comments

Popular posts from this blog

serialization - Convert Any type in scala to Array[Byte] and back -

matplotlib support failed in PyCharm on OSX -

python - Matplotlib: TypeError: 'AxesSubplot' object is not callable -