@@ -240,7 +240,7 @@ def __init__(
240240 _cli_kebab_case = _cli_kebab_case ,
241241 _cli_shortcuts = _cli_shortcuts ,
242242 _secrets_dir = _secrets_dir ,
243- ** values ,
243+ _init_kwargs = values ,
244244 )
245245 )
246246
@@ -300,7 +300,7 @@ def _settings_init_sources(
300300 _cli_kebab_case : bool | Literal ['all' , 'no_enums' ] | None = None ,
301301 _cli_shortcuts : Mapping [str , str | list [str ]] | None = None ,
302302 _secrets_dir : PathType | None = None ,
303- ** init_kwargs : dict [str , Any ],
303+ _init_kwargs : dict [str , Any ] | None = None ,
304304 ) -> tuple [tuple [PydanticBaseSettingsSource , ...], dict [str , Any ]]:
305305 # Determine settings config values
306306 case_sensitive = _case_sensitive if _case_sensitive is not None else cls .model_config .get ('case_sensitive' )
@@ -378,7 +378,7 @@ def _settings_init_sources(
378378 )
379379 init_settings = InitSettingsSource (
380380 cls ,
381- init_kwargs = init_kwargs ,
381+ init_kwargs = _init_kwargs if _init_kwargs is not None else {} ,
382382 nested_model_default_partial_update = nested_model_default_partial_update ,
383383 )
384384 env_settings = EnvSettingsSource (
@@ -451,7 +451,7 @@ def _settings_init_sources(
451451
452452 cls ._settings_warn_unused_config_keys (sources , cls .model_config )
453453
454- return sources , init_kwargs
454+ return sources , _init_kwargs if _init_kwargs is not None else {}
455455
456456 @classmethod
457457 def _settings_build_values (
@@ -723,19 +723,26 @@ def run(
723723 elif isinstance (cli_parse_args , (Namespace , SimpleNamespace , dict )):
724724 raise SettingsError ('Error: `cli_args` must be list[str] or None when `cli_settings_source` is not used' )
725725
726- model_init_data ['_cli_parse_args' ] = cli_parse_args
727- model_init_data ['_cli_exit_on_error' ] = cli_exit_on_error
728- model_init_data ['_cli_settings_source' ] = cli_settings
729726 if not issubclass (model_cls , BaseSettings ):
730727 base_settings_cls = CliApp ._get_base_settings_cls (model_cls )
731- sources , init_kwargs = base_settings_cls ._settings_init_sources (** model_init_data )
728+ sources , init_kwargs = base_settings_cls ._settings_init_sources (
729+ _cli_parse_args = cli_parse_args , # type: ignore[arg-type]
730+ _cli_exit_on_error = cli_exit_on_error ,
731+ _cli_settings_source = cli_settings ,
732+ _init_kwargs = model_init_data ,
733+ )
732734 model = base_settings_cls (** base_settings_cls ._settings_build_values (sources , init_kwargs ))
733735 model_init_data = {}
734736 for field_name , field_info in base_settings_cls .model_fields .items ():
735737 model_init_data [_field_name_for_signature (field_name , field_info )] = getattr (model , field_name )
736738 command = model_cls (** model_init_data )
737739 else :
738- sources , init_kwargs = model_cls ._settings_init_sources (** model_init_data )
740+ sources , init_kwargs = model_cls ._settings_init_sources (
741+ _cli_parse_args = cli_parse_args , # type: ignore[arg-type]
742+ _cli_exit_on_error = cli_exit_on_error ,
743+ _cli_settings_source = cli_settings ,
744+ _init_kwargs = model_init_data ,
745+ )
739746 command = model_cls (_build_sources = (sources , init_kwargs ))
740747
741748 subcommand_dest = ':subcommand'
0 commit comments