Skip to content

Commit b3a67e9

Browse files
authored
Revert "Allow nested env var source to override nested init source." (#243)
1 parent 548532b commit b3a67e9

File tree

2 files changed

+3
-40
lines changed

2 files changed

+3
-40
lines changed

pydantic_settings/sources.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,10 @@
88
from collections import deque
99
from dataclasses import is_dataclass
1010
from pathlib import Path
11-
from typing import TYPE_CHECKING, Any, Dict, List, Mapping, Sequence, Tuple, Union, cast
11+
from typing import TYPE_CHECKING, Any, List, Mapping, Sequence, Tuple, Union, cast
1212

1313
from dotenv import dotenv_values
14-
from pydantic import AliasChoices, AliasPath, BaseModel, Json, TypeAdapter
14+
from pydantic import AliasChoices, AliasPath, BaseModel, Json
1515
from pydantic._internal._typing_extra import WithArgsTypes, origin_is_union
1616
from pydantic._internal._utils import deep_update, is_model_class, lenient_issubclass
1717
from pydantic.fields import FieldInfo
@@ -165,7 +165,7 @@ def get_field_value(self, field: FieldInfo, field_name: str) -> tuple[Any, str,
165165
return None, '', False
166166

167167
def __call__(self) -> dict[str, Any]:
168-
return TypeAdapter(Dict[str, Any]).dump_python(self.init_kwargs, by_alias=True)
168+
return self.init_kwargs
169169

170170
def __repr__(self) -> str:
171171
return f'InitSettingsSource(init_kwargs={self.init_kwargs!r})'

tests/test_settings.py

Lines changed: 0 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -647,43 +647,6 @@ def settings_customise_sources(
647647
assert s.bar == 'env setting'
648648

649649

650-
def test_env_deep_override(env):
651-
class DeepSubModel(BaseModel):
652-
v4: str
653-
654-
class SubModel(BaseModel):
655-
v1: str
656-
v2: bytes
657-
v3: int
658-
deep: DeepSubModel
659-
660-
class Settings(BaseSettings, env_nested_delimiter='__'):
661-
v0: str
662-
sub_model: SubModel
663-
664-
@classmethod
665-
def settings_customise_sources(
666-
cls, settings_cls, init_settings, env_settings, dotenv_settings, file_secret_settings
667-
):
668-
return env_settings, dotenv_settings, init_settings, file_secret_settings
669-
670-
env.set('SUB_MODEL__DEEP__V4', 'override-v4')
671-
672-
s_final = {'v0': '0', 'sub_model': {'v1': 'init-v1', 'v2': b'init-v2', 'v3': 3, 'deep': {'v4': 'override-v4'}}}
673-
674-
s = Settings(v0='0', sub_model={'v1': 'init-v1', 'v2': b'init-v2', 'v3': 3, 'deep': {'v4': 'init-v4'}})
675-
assert s.model_dump() == s_final
676-
677-
s = Settings(v0='0', sub_model=SubModel(v1='init-v1', v2=b'init-v2', v3=3, deep=DeepSubModel(v4='init-v4')))
678-
assert s.model_dump() == s_final
679-
680-
s = Settings(v0='0', sub_model=SubModel(v1='init-v1', v2=b'init-v2', v3=3, deep={'v4': 'init-v4'}))
681-
assert s.model_dump() == s_final
682-
683-
s = Settings(v0='0', sub_model={'v1': 'init-v1', 'v2': b'init-v2', 'v3': 3, 'deep': DeepSubModel(v4='init-v4')})
684-
assert s.model_dump() == s_final
685-
686-
687650
def test_config_file_settings_nornir(env):
688651
"""
689652
See https://github.com/pydantic/pydantic/pull/341#issuecomment-450378771

0 commit comments

Comments
 (0)