bw2 / ConfigArgParse

A drop-in replacement for argparse that allows options to also be set via config files and/or environment variables.
MIT License
719 stars 121 forks source link

Positional config file arguments do not work when config file arg is not first #265

Open benjamin-fenker opened 2 years ago

benjamin-fenker commented 2 years ago

Perhaps an odd situation, but if I use positional arguments AND my config file is not the first argument, the file is not opened. For example:

main.py

import configargparse

p = configargparse.get_argument_parser()
p.add_argument("first_argument")
p.add_argument("config", is_config_file=True)
p.add_argument("--option")
arguments = p.parse_known_args() # or parse_args()

print(arguments)

config.ini

option = yes

And execute it with

python main.py first config.ini:

usage: mwe-fails.py [-h] [--option OPTION] first_argument config
mwe-fails.py: error: Unable to open config file: first. Error: No such file or directory

However, if I switch the order of arguments and modify the command appropriately, I get the expected behavior

bw2 commented 1 year ago

If other users have this issue, please post here. My initial sense is that this is a rare / unusual use case.