Skip to content

Commit 14ea54c

Browse files
authored
Fix error when no secret file provided for a complex field. (#118)
1 parent 5912eb0 commit 14ea54c

File tree

2 files changed

+4
-2
lines changed

2 files changed

+4
-2
lines changed

pydantic_settings/sources.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ def prepare_field_value(self, field_name: str, field: FieldInfo, value: Any, val
8383
Returns:
8484
The prepared value.
8585
"""
86-
if self.field_is_complex(field) or value_is_complex:
86+
if value is not None and (self.field_is_complex(field) or value_is_complex):
8787
return json.loads(value)
8888
return value
8989

tests/test_settings.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1161,14 +1161,16 @@ class Settings(BaseSettings):
11611161
def test_secrets_missing(tmp_path):
11621162
class Settings(BaseSettings):
11631163
foo: str
1164+
bar: List[str]
11641165

11651166
model_config = SettingsConfigDict(secrets_dir=tmp_path)
11661167

11671168
with pytest.raises(ValidationError) as exc_info:
11681169
Settings()
11691170

11701171
assert exc_info.value.errors(include_url=False) == [
1171-
{'type': 'missing', 'loc': ('foo',), 'msg': 'Field required', 'input': {}}
1172+
{'type': 'missing', 'loc': ('foo',), 'msg': 'Field required', 'input': {}},
1173+
{'input': {}, 'loc': ('bar',), 'msg': 'Field required', 'type': 'missing'},
11721174
]
11731175

11741176

0 commit comments

Comments
 (0)