Skip to content

Commit 1ffbd95

Browse files
authored
fix: a second level of environment nesting expected a dict (#281)
1 parent 2d2f94f commit 1ffbd95

File tree

2 files changed

+6
-1
lines changed

2 files changed

+6
-1
lines changed

pydantic_settings/sources.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -620,7 +620,8 @@ def explode_env_vars(self, field_name: str, field: FieldInfo, env_vars: Mapping[
620620
target_field: FieldInfo | None = field
621621
for key in keys:
622622
target_field = self.next_field(target_field, key)
623-
env_var = env_var.setdefault(key, {})
623+
if isinstance(env_var, dict):
624+
env_var = env_var.setdefault(key, {})
624625

625626
# get proper field with last_key
626627
target_field = self.next_field(target_field, last_key)

tests/test_settings.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2602,5 +2602,9 @@ class Settings(BaseSettings):
26022602
'nested__foo__bar',
26032603
'this should not be evaluated, since foo is a string by annotation and not a dict',
26042604
)
2605+
env.set(
2606+
'nested__foo__bar__baz',
2607+
'one more',
2608+
)
26052609
s = Settings()
26062610
assert s.model_dump() == {'nested': {'foo': 'string'}}

0 commit comments

Comments
 (0)