class RootCommand(
BaseSettings,
cli_parse_args=True,
cli_implicit_flags='toggle',
enable_decoding=False,
):
# param: list[str] = Field(default_factory=list)
pos: CliPositionalArg[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('pos', type=str, nargs='*')
parser.add_argument('--param', type=str, nargs='*')
print(parser.parse_known_args()[0])
print('------------argparse help-------------')
parser.print_help()
if __name__ == '__main__':
mainA()
print('----------------------------------')
main()
$ python app.py a b
------------argparse-------------
Namespace(pos=['a', 'b'], param=None)
------------argparse help-------------
usage: app.py [-h] [--param [PARAM ...]] [pos ...]
positional arguments:
pos
options:
-h, --help show this help message and exit
--param [PARAM ...]
----------------------------------
Traceback (most recent call last):
File "/home/kzrnm/workspace/forks/pydantic-settings/app.py", line 57, in <module>
main()
File "/home/kzrnm/workspace/forks/pydantic-settings/app.py", line 41, in main
CliApp.run(RootCommand, cli_args=args)
File "/home/kzrnm/workspace/forks/pydantic-settings/pydantic_settings/main.py", line 682, in run
return CliApp._run_cli_cmd(model_cls(**model_init_data), cli_cmd_method_name, is_required=False)
File "/home/kzrnm/workspace/forks/pydantic-settings/pydantic_settings/main.py", line 198, in __init__
super().__init__(
File "/home/kzrnm/workspace/forks/pydantic-settings/.venv/lib/python3.10/site-packages/pydantic/main.py", line 250, in __init__
validated_self = self.__pydantic_validator__.validate_python(data, self_instance=self)
pydantic_core._pydantic_core.ValidationError: 1 validation error for RootCommand
pos
Input should be a valid list [type=list_type, input_value='a,b', input_type=str]
For further information visit https://errors.pydantic.dev/2.12/v/list_type
As shown below, variadic arguments do not work correctly when
enable_decoding=False.