From 67573d44c4583446450c6524b2534addea483a82 Mon Sep 17 00:00:00 2001 From: Kyle Schwab Date: Tue, 12 Nov 2024 06:53:23 -0700 Subject: [PATCH] Disable abbreviations on internal parser. --- pydantic_settings/sources.py | 1 + tests/test_source_cli.py | 14 ++++++++++++++ 2 files changed, 15 insertions(+) diff --git a/pydantic_settings/sources.py b/pydantic_settings/sources.py index fb32095a..dad37dd5 100644 --- a/pydantic_settings/sources.py +++ b/pydantic_settings/sources.py @@ -1165,6 +1165,7 @@ def __init__( description=None if settings_cls.__doc__ is None else dedent(settings_cls.__doc__), formatter_class=formatter_class, prefix_chars=self.cli_flag_prefix_char, + allow_abbrev=False, ) if root_parser is None else root_parser diff --git a/tests/test_source_cli.py b/tests/test_source_cli.py index 9cc374b5..d9288c42 100644 --- a/tests/test_source_cli.py +++ b/tests/test_source_cli.py @@ -2223,3 +2223,17 @@ class SettingsInvalidReqCircleReqField(BaseModel): with pytest.raises(ValueError, match='mutually exclusive arguments must be optional'): CliApp.run(SettingsInvalidReqCircleReqField) + + +def test_cli_invalid_abbrev(): + class MySettings(BaseSettings): + bacon: str = '' + badger: str = '' + + with pytest.raises( + SettingsError, + match='error parsing CLI: unrecognized arguments: --bac cli abbrev are invalid for internal parser', + ): + CliApp.run( + MySettings, cli_args=['--bac', 'cli abbrev are invalid for internal parser'], cli_exit_on_error=False + )