-
Notifications
You must be signed in to change notification settings - Fork 122
Open
Description
Example:
import configargparse
parser = configargparse.ArgParser()
parser.add_argument("--config", is_config_file_arg=True, default="config.cfg")
parser.add_argument('--config_file_option', nargs="*", default=None) # also happens with action="append" and any of its derivatives
parser.add_argument("remainder_option", nargs=argparse.REMAINDER, default=None)
args = ["test"]
options = parser.parse_args(args)With config.cfg:
config_file_option=Option from config fileremainder_option should be ["test"], but it swallows the config file and becomes ["test", "--config_file_option=Option from config file"], which results in all config file options not being set.
I believe it is due to these lines:
ConfigArgParse/configargparse.py
Lines 948 to 955 in ee77f44
| if (action and action.nargs or | |
| isinstance(action, argparse._AppendAction)): | |
| nargs = True | |
| if nargs: | |
| args = args + config_args | |
| else: | |
| args = config_args + args |
It looks like if there is any other argument with nargs or action="append", then it will put all config options after the remainder option instead of before.
Changing it to args = config_args + args fixes this, but will probably break #144.
Metadata
Metadata
Assignees
Labels
No labels