You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
importconfigargparseparser=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 derivativesparser.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 file
remainder_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.
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.
The text was updated successfully, but these errors were encountered:
Upstream removed the documentation for argparse.REMAINDER because of the issues it causes, so it is unlikely this issue will be fixed. python/cpython#18661
Example:
With
config.cfg
:config_file_option=Option from config file
remainder_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
It looks like if there is any other argument with
nargs
oraction="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.The text was updated successfully, but these errors were encountered: