Skip to content

Commit 7b3dbdd

Browse files
authored
CLI fix fox external list args. (#727)
1 parent 70e7a28 commit 7b3dbdd

File tree

2 files changed

+9
-1
lines changed

2 files changed

+9
-1
lines changed

pydantic_settings/sources/providers/cli.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
from __future__ import annotations as _annotations
44

5+
import copy
56
import json
67
import re
78
import shlex
@@ -476,7 +477,7 @@ def __call__(
476477
args = sys.argv[1:]
477478
return self._load_env_vars(parsed_args=self._parse_args(self.root_parser, args))
478479
elif parsed_args is not None:
479-
return self._load_env_vars(parsed_args=parsed_args)
480+
return self._load_env_vars(parsed_args=copy.copy(parsed_args))
480481
else:
481482
return super().__call__()
482483

tests/test_source_cli.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2947,15 +2947,22 @@ class Cfg(BaseSettings):
29472947
cli_settings = CliSettingsSource(Cfg, root_parser=parser)
29482948

29492949
parser.add_argument('-e', '--extra', dest='extra', default=0, action='count')
2950+
parser.add_argument('--num-list', action='append', default=[1])
2951+
parser.add_argument('--str-list', action='append', default=['abc'])
29502952

29512953
with monkeypatch.context() as m:
29522954
m.setattr(sys, 'argv', ['example.py', '--pet', 'dog', '-eeee'])
29532955

29542956
parsed_args = parser.parse_args()
29552957

29562958
assert parsed_args.extra == 4
2959+
assert parsed_args.num_list == [1]
2960+
assert parsed_args.str_list == ['abc']
29572961
# With parsed arguments passed to CliApp.run, the parser should not need to be called again.
29582962
assert CliApp.run(Cfg, cli_args=parsed_args, cli_settings_source=cli_settings).model_dump() == {'pet': 'dog'}
2963+
assert parsed_args.extra == 4
2964+
assert parsed_args.num_list == [1]
2965+
assert parsed_args.str_list == ['abc']
29592966

29602967

29612968
def test_cli_serialize_non_default_values():

0 commit comments

Comments
 (0)