@@ -38,6 +38,7 @@ class SettingsConfigDict(ConfigDict, total=False):
38
38
env_file_encoding : str | None
39
39
env_ignore_empty : bool
40
40
env_nested_delimiter : str | None
41
+ env_nested_depth : int
41
42
env_parse_none_str : str | None
42
43
env_parse_enums : bool | None
43
44
cli_prog_name : str | None
@@ -112,6 +113,7 @@ class BaseSettings(BaseModel):
112
113
_env_file_encoding: The env file encoding, e.g. `'latin-1'`. Defaults to `None`.
113
114
_env_ignore_empty: Ignore environment variables where the value is an empty string. Default to `False`.
114
115
_env_nested_delimiter: The nested env values delimiter. Defaults to `None`.
116
+ _env_nested_depth: The nested env values maximum nesting. Defaults to `-1`, which means no limit.
115
117
_env_parse_none_str: The env string value that should be parsed (e.g. "null", "void", "None", etc.)
116
118
into `None` type(None). Defaults to `None` type(None), which means no parsing should occur.
117
119
_env_parse_enums: Parse enum field names to values. Defaults to `None.`, which means no parsing should occur.
@@ -148,6 +150,7 @@ def __init__(
148
150
_env_file_encoding : str | None = None ,
149
151
_env_ignore_empty : bool | None = None ,
150
152
_env_nested_delimiter : str | None = None ,
153
+ _env_nested_depth : int | None = None ,
151
154
_env_parse_none_str : str | None = None ,
152
155
_env_parse_enums : bool | None = None ,
153
156
_cli_prog_name : str | None = None ,
@@ -178,6 +181,7 @@ def __init__(
178
181
_env_file_encoding = _env_file_encoding ,
179
182
_env_ignore_empty = _env_ignore_empty ,
180
183
_env_nested_delimiter = _env_nested_delimiter ,
184
+ _env_nested_depth = _env_nested_depth ,
181
185
_env_parse_none_str = _env_parse_none_str ,
182
186
_env_parse_enums = _env_parse_enums ,
183
187
_cli_prog_name = _cli_prog_name ,
@@ -232,6 +236,7 @@ def _settings_build_values(
232
236
_env_file_encoding : str | None = None ,
233
237
_env_ignore_empty : bool | None = None ,
234
238
_env_nested_delimiter : str | None = None ,
239
+ _env_nested_depth : int | None = None ,
235
240
_env_parse_none_str : str | None = None ,
236
241
_env_parse_enums : bool | None = None ,
237
242
_cli_prog_name : str | None = None ,
@@ -270,6 +275,9 @@ def _settings_build_values(
270
275
if _env_nested_delimiter is not None
271
276
else self .model_config .get ('env_nested_delimiter' )
272
277
)
278
+ env_nested_depth = (
279
+ _env_nested_depth if _env_nested_depth is not None else self .model_config .get ('env_nested_depth' )
280
+ )
273
281
env_parse_none_str = (
274
282
_env_parse_none_str if _env_parse_none_str is not None else self .model_config .get ('env_parse_none_str' )
275
283
)
@@ -333,6 +341,7 @@ def _settings_build_values(
333
341
case_sensitive = case_sensitive ,
334
342
env_prefix = env_prefix ,
335
343
env_nested_delimiter = env_nested_delimiter ,
344
+ env_nested_depth = env_nested_depth ,
336
345
env_ignore_empty = env_ignore_empty ,
337
346
env_parse_none_str = env_parse_none_str ,
338
347
env_parse_enums = env_parse_enums ,
@@ -344,6 +353,7 @@ def _settings_build_values(
344
353
case_sensitive = case_sensitive ,
345
354
env_prefix = env_prefix ,
346
355
env_nested_delimiter = env_nested_delimiter ,
356
+ env_nested_depth = env_nested_depth ,
347
357
env_ignore_empty = env_ignore_empty ,
348
358
env_parse_none_str = env_parse_none_str ,
349
359
env_parse_enums = env_parse_enums ,
@@ -412,6 +422,7 @@ def _settings_build_values(
412
422
env_file_encoding = None ,
413
423
env_ignore_empty = False ,
414
424
env_nested_delimiter = None ,
425
+ env_nested_depth = - 1 ,
415
426
env_parse_none_str = None ,
416
427
env_parse_enums = None ,
417
428
cli_prog_name = None ,
0 commit comments