@@ -41,6 +41,7 @@ class SettingsConfigDict(ConfigDict, total=False):
4141 env_file_encoding : str | None
4242 env_ignore_empty : bool
4343 env_nested_delimiter : str | None
44+ env_nested_max_split : int | None
4445 env_parse_none_str : str | None
4546 env_parse_enums : bool | None
4647 cli_prog_name : str | None
@@ -115,6 +116,7 @@ class BaseSettings(BaseModel):
115116 _env_file_encoding: The env file encoding, e.g. `'latin-1'`. Defaults to `None`.
116117 _env_ignore_empty: Ignore environment variables where the value is an empty string. Default to `False`.
117118 _env_nested_delimiter: The nested env values delimiter. Defaults to `None`.
119+ _env_nested_max_split: The nested env values maximum nesting. Defaults to `None`, which means no limit.
118120 _env_parse_none_str: The env string value that should be parsed (e.g. "null", "void", "None", etc.)
119121 into `None` type(None). Defaults to `None` type(None), which means no parsing should occur.
120122 _env_parse_enums: Parse enum field names to values. Defaults to `None.`, which means no parsing should occur.
@@ -143,19 +145,21 @@ class BaseSettings(BaseModel):
143145 """
144146
145147 def __init__ (
146- __pydantic_self__ ,
148+ self ,
149+ / ,
147150 _case_sensitive : bool | None = None ,
148151 _nested_model_default_partial_update : bool | None = None ,
149152 _env_prefix : str | None = None ,
150153 _env_file : DotenvType | None = ENV_FILE_SENTINEL ,
151154 _env_file_encoding : str | None = None ,
152155 _env_ignore_empty : bool | None = None ,
153156 _env_nested_delimiter : str | None = None ,
157+ _env_nested_max_split : int | None = None ,
154158 _env_parse_none_str : str | None = None ,
155159 _env_parse_enums : bool | None = None ,
156160 _cli_prog_name : str | None = None ,
157161 _cli_parse_args : bool | list [str ] | tuple [str , ...] | None = None ,
158- _cli_settings_source : CliSettingsSource [Any ] | None = None ,
162+ _cli_settings_source : CliSettingsSource [object ] | None = None ,
159163 _cli_parse_none_str : str | None = None ,
160164 _cli_hide_none_type : bool | None = None ,
161165 _cli_avoid_json : bool | None = None ,
@@ -170,9 +174,8 @@ def __init__(
170174 _secrets_dir : PathType | None = None ,
171175 ** values : Any ,
172176 ) -> None :
173- # Uses something other than `self` the first arg to allow "self" as a settable attribute
174177 super ().__init__ (
175- ** __pydantic_self__ ._settings_build_values (
178+ ** self ._settings_build_values (
176179 values ,
177180 _case_sensitive = _case_sensitive ,
178181 _nested_model_default_partial_update = _nested_model_default_partial_update ,
@@ -181,6 +184,7 @@ def __init__(
181184 _env_file_encoding = _env_file_encoding ,
182185 _env_ignore_empty = _env_ignore_empty ,
183186 _env_nested_delimiter = _env_nested_delimiter ,
187+ _env_nested_max_split = _env_nested_max_split ,
184188 _env_parse_none_str = _env_parse_none_str ,
185189 _env_parse_enums = _env_parse_enums ,
186190 _cli_prog_name = _cli_prog_name ,
@@ -235,6 +239,7 @@ def _settings_build_values(
235239 _env_file_encoding : str | None = None ,
236240 _env_ignore_empty : bool | None = None ,
237241 _env_nested_delimiter : str | None = None ,
242+ _env_nested_max_split : int | None = None ,
238243 _env_parse_none_str : str | None = None ,
239244 _env_parse_enums : bool | None = None ,
240245 _cli_prog_name : str | None = None ,
@@ -273,6 +278,11 @@ def _settings_build_values(
273278 if _env_nested_delimiter is not None
274279 else self .model_config .get ('env_nested_delimiter' )
275280 )
281+ env_nested_max_split = (
282+ _env_nested_max_split
283+ if _env_nested_max_split is not None
284+ else self .model_config .get ('env_nested_max_split' )
285+ )
276286 env_parse_none_str = (
277287 _env_parse_none_str if _env_parse_none_str is not None else self .model_config .get ('env_parse_none_str' )
278288 )
@@ -336,6 +346,7 @@ def _settings_build_values(
336346 case_sensitive = case_sensitive ,
337347 env_prefix = env_prefix ,
338348 env_nested_delimiter = env_nested_delimiter ,
349+ env_nested_max_split = env_nested_max_split ,
339350 env_ignore_empty = env_ignore_empty ,
340351 env_parse_none_str = env_parse_none_str ,
341352 env_parse_enums = env_parse_enums ,
@@ -347,6 +358,7 @@ def _settings_build_values(
347358 case_sensitive = case_sensitive ,
348359 env_prefix = env_prefix ,
349360 env_nested_delimiter = env_nested_delimiter ,
361+ env_nested_max_split = env_nested_max_split ,
350362 env_ignore_empty = env_ignore_empty ,
351363 env_parse_none_str = env_parse_none_str ,
352364 env_parse_enums = env_parse_enums ,
@@ -415,6 +427,7 @@ def _settings_build_values(
415427 env_file_encoding = None ,
416428 env_ignore_empty = False ,
417429 env_nested_delimiter = None ,
430+ env_nested_max_split = None ,
418431 env_parse_none_str = None ,
419432 env_parse_enums = None ,
420433 cli_prog_name = None ,
0 commit comments