Skip to content

Commit 8215eac

Browse files
authored
Revert "fix: Respect 'cli_parse_args' from model_config with settings_customise_sources (#611)" (#655)
1 parent 50dedf7 commit 8215eac

File tree

2 files changed

+7
-36
lines changed

2 files changed

+7
-36
lines changed

pydantic_settings/sources/providers/cli.py

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -168,9 +168,6 @@ def __init__(
168168
self.cli_prog_name = (
169169
cli_prog_name if cli_prog_name is not None else settings_cls.model_config.get('cli_prog_name', sys.argv[0])
170170
)
171-
self.cli_parse_args = (
172-
cli_parse_args if cli_parse_args is not None else settings_cls.model_config.get('cli_parse_args', None)
173-
)
174171
self.cli_hide_none_type = (
175172
cli_hide_none_type
176173
if cli_hide_none_type is not None
@@ -259,14 +256,15 @@ def __init__(
259256
add_subparsers_method=add_subparsers_method,
260257
formatter_class=formatter_class,
261258
)
262-
if self.cli_parse_args not in (None, False):
263-
if self.cli_parse_args is True:
264-
self.cli_parse_args = sys.argv[1:]
265-
elif not isinstance(self.cli_parse_args, (list, tuple)):
259+
260+
if cli_parse_args not in (None, False):
261+
if cli_parse_args is True:
262+
cli_parse_args = sys.argv[1:]
263+
elif not isinstance(cli_parse_args, (list, tuple)):
266264
raise SettingsError(
267-
f'cli_parse_args must be a list or tuple of strings, received {type(self.cli_parse_args)}'
265+
f'cli_parse_args must be a list or tuple of strings, received {type(cli_parse_args)}'
268266
)
269-
self._load_env_vars(parsed_args=self._parse_args(self.root_parser, self.cli_parse_args))
267+
self._load_env_vars(parsed_args=self._parse_args(self.root_parser, cli_parse_args))
270268

271269
@overload
272270
def __call__(self) -> dict[str, Any]: ...

tests/test_source_cli.py

Lines changed: 0 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -2531,33 +2531,6 @@ class Options(BaseSettings):
25312531
assert CliApp.run(Options, cli_args=['--nested.foo=5']).model_dump() == {'nested': {'foo': 5, 'bar': 2}}
25322532

25332533

2534-
def test_cli_parse_args_from_model_config_is_respected_with_settings_customise_sources(
2535-
monkeypatch: pytest.MonkeyPatch,
2536-
):
2537-
class MySettings(BaseSettings):
2538-
model_config = SettingsConfigDict(cli_parse_args=True)
2539-
2540-
foo: str
2541-
2542-
@classmethod
2543-
def settings_customise_sources(
2544-
cls,
2545-
settings_cls: type[BaseSettings],
2546-
init_settings: PydanticBaseSettingsSource,
2547-
env_settings: PydanticBaseSettingsSource,
2548-
dotenv_settings: PydanticBaseSettingsSource,
2549-
file_secret_settings: PydanticBaseSettingsSource,
2550-
) -> tuple[PydanticBaseSettingsSource, ...]:
2551-
return (CliSettingsSource(settings_cls),)
2552-
2553-
with monkeypatch.context() as m:
2554-
m.setattr(sys, 'argv', ['example.py', '--foo', 'bar'])
2555-
2556-
cfg = CliApp.run(MySettings)
2557-
2558-
assert cfg.model_dump() == {'foo': 'bar'}
2559-
2560-
25612534
def test_cli_shortcuts_on_flat_object():
25622535
class Settings(BaseSettings):
25632536
option: str = Field(default='foo')

0 commit comments

Comments
 (0)