-
-
Notifications
You must be signed in to change notification settings - Fork 125
Open
Labels
Description
Positional arguments can be made variadic as of #518, but this is not possible for named arguments.
class RootCommand(
BaseSettings,
cli_parse_args=True,
cli_implicit_flags='toggle',
):
param: list[str] = Field(default_factory=list)
def cli_cmd(self):
print('------pydantic-settings-------')
print(self)
print('------pydantic-settings help-------')
CliSettingsSource[argparse.ArgumentParser](RootCommand).root_parser.print_help()
def main(args: list[str] | None = None):
CliApp.run(RootCommand, cli_args=args)
def mainA():
print('------------argparse-------------')
parser = argparse.ArgumentParser()
parser.add_argument('--param', type=str, nargs='*')
print(parser.parse_args())
print('------------argparse help-------------')
parser.print_help()
if __name__ == '__main__':
mainA()
print('----------------------------------')
main()python app.py --param a,b
------------argparse-------------
Namespace(param=['a,b'])
------------argparse help-------------
usage: app.py [-h] [--param [PARAM ...]]
options:
-h, --help show this help message and exit
--param [PARAM ...]
----------------------------------
------pydantic-settings-------
param=['a', 'b']
------pydantic-settings help-------
usage: app.py [-h] [--param list[str]]
options:
-h, --help show this help message and exit
--param list[str] (default factory: list)
$ python app.py --param a b
------------argparse-------------
Namespace(param=['a', 'b'])
------------argparse help-------------
usage: app.py [-h] [--param [PARAM ...]]
options:
-h, --help show this help message and exit
--param [PARAM ...]
----------------------------------
usage: app.py [-h] [--param list[str]]
app.py: error: unrecognized arguments: b
Reactions are currently unavailable