Skip to content

Commit

Permalink
Revert "Allow nested env var source to override nested init source." (#…
Browse files Browse the repository at this point in the history
  • Loading branch information
hramezani authored Feb 19, 2024
1 parent 548532b commit b3a67e9
Show file tree
Hide file tree
Showing 2 changed files with 3 additions and 40 deletions.
6 changes: 3 additions & 3 deletions pydantic_settings/sources.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,10 @@
from collections import deque
from dataclasses import is_dataclass
from pathlib import Path
from typing import TYPE_CHECKING, Any, Dict, List, Mapping, Sequence, Tuple, Union, cast
from typing import TYPE_CHECKING, Any, List, Mapping, Sequence, Tuple, Union, cast

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

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

def __repr__(self) -> str:
return f'InitSettingsSource(init_kwargs={self.init_kwargs!r})'
Expand Down
37 changes: 0 additions & 37 deletions tests/test_settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -647,43 +647,6 @@ def settings_customise_sources(
assert s.bar == 'env setting'


def test_env_deep_override(env):
class DeepSubModel(BaseModel):
v4: str

class SubModel(BaseModel):
v1: str
v2: bytes
v3: int
deep: DeepSubModel

class Settings(BaseSettings, env_nested_delimiter='__'):
v0: str
sub_model: SubModel

@classmethod
def settings_customise_sources(
cls, settings_cls, init_settings, env_settings, dotenv_settings, file_secret_settings
):
return env_settings, dotenv_settings, init_settings, file_secret_settings

env.set('SUB_MODEL__DEEP__V4', 'override-v4')

s_final = {'v0': '0', 'sub_model': {'v1': 'init-v1', 'v2': b'init-v2', 'v3': 3, 'deep': {'v4': 'override-v4'}}}

s = Settings(v0='0', sub_model={'v1': 'init-v1', 'v2': b'init-v2', 'v3': 3, 'deep': {'v4': 'init-v4'}})
assert s.model_dump() == s_final

s = Settings(v0='0', sub_model=SubModel(v1='init-v1', v2=b'init-v2', v3=3, deep=DeepSubModel(v4='init-v4')))
assert s.model_dump() == s_final

s = Settings(v0='0', sub_model=SubModel(v1='init-v1', v2=b'init-v2', v3=3, deep={'v4': 'init-v4'}))
assert s.model_dump() == s_final

s = Settings(v0='0', sub_model={'v1': 'init-v1', 'v2': b'init-v2', 'v3': 3, 'deep': DeepSubModel(v4='init-v4')})
assert s.model_dump() == s_final


def test_config_file_settings_nornir(env):
"""
See https://github.com/pydantic/pydantic/pull/341#issuecomment-450378771
Expand Down

0 comments on commit b3a67e9

Please sign in to comment.