diff --git a/pydantic_settings/sources/providers/cli.py b/pydantic_settings/sources/providers/cli.py index 8928b8d0..fefa103c 100644 --- a/pydantic_settings/sources/providers/cli.py +++ b/pydantic_settings/sources/providers/cli.py @@ -747,6 +747,7 @@ def _add_parser_args( help=subcommand_help, formatter_class=self._formatter_class, description=None if model.__doc__ is None else dedent(model.__doc__), + allow_abbrev=False, ), model=model, added_args=[], diff --git a/tests/test_source_cli.py b/tests/test_source_cli.py index bdf60476..68d3693f 100644 --- a/tests/test_source_cli.py +++ b/tests/test_source_cli.py @@ -2378,6 +2378,25 @@ class MySettings(BaseSettings): ) +def test_cli_subcommand_invalid_abbrev(): + class Child(BaseModel): + bacon: str = '' + badger: str = '' + + class MySettings(BaseSettings): + child: CliSubCommand[Child] + + with pytest.raises( + SettingsError, + match='error parsing CLI: unrecognized arguments: --bac cli abbrev are invalid for internal parser', + ): + CliApp.run( + MySettings, + cli_args=['child', '--bac', 'cli abbrev are invalid for internal parser'], + cli_exit_on_error=False, + ) + + def test_cli_submodels_strip_annotated(): class PolyA(BaseModel): a: int = 1