Skip to content

Commit 3f613ae

Browse files
authored
Use config values as default in PydanticBaseEnvSettingsSource.__init__ (#100)
1 parent 3c4613d commit 3f613ae

File tree

2 files changed

+21
-2
lines changed

2 files changed

+21
-2
lines changed

pydantic_settings/sources.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,8 +117,8 @@ def __init__(
117117
self, settings_cls: type[BaseSettings], case_sensitive: bool | None = None, env_prefix: str | None = None
118118
) -> None:
119119
super().__init__(settings_cls)
120-
self.case_sensitive = case_sensitive if case_sensitive is not None else False
121-
self.env_prefix = env_prefix if env_prefix is not None else ''
120+
self.case_sensitive = case_sensitive if case_sensitive is not None else self.config.get('case_sensitive', False)
121+
self.env_prefix = env_prefix if env_prefix is not None else self.config.get('env_prefix', '')
122122

123123
def _apply_case_sensitive(self, value: str) -> str:
124124
return value.lower() if not self.case_sensitive else value

tests/test_settings.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
InitSettingsSource,
3333
PydanticBaseSettingsSource,
3434
SecretsSettingsSource,
35+
SettingsConfigDict,
3536
)
3637
from pydantic_settings.sources import SettingsError, read_env_file
3738

@@ -1698,3 +1699,21 @@ class Settings(BaseSettings):
16981699
'input': 'bar',
16991700
}
17001701
]
1702+
1703+
1704+
def test_custom_env_source_default_values_from_config():
1705+
class CustomEnvSettingsSource(EnvSettingsSource):
1706+
pass
1707+
1708+
class Settings(BaseSettings):
1709+
foo: str = 'test'
1710+
1711+
model_config = SettingsConfigDict(env_prefix='prefix_', case_sensitive=True)
1712+
1713+
s = Settings()
1714+
assert s.model_config['env_prefix'] == 'prefix_'
1715+
assert s.model_config['case_sensitive'] is True
1716+
1717+
c = CustomEnvSettingsSource(Settings)
1718+
assert c.env_prefix == 'prefix_'
1719+
assert c.case_sensitive is True

0 commit comments

Comments
 (0)