@@ -1887,15 +1887,23 @@ Value for `Settings.db.user` can be passed in env variable `MY_DB__USER`.
18871887
18881888``` py
18891889from pydantic import BaseModel, SecretStr
1890- from pydantic_settings import BaseSettings, NestedSecretsSettingsSource, SettingsConfigDict
1890+
1891+ from pydantic_settings import (
1892+ BaseSettings,
1893+ NestedSecretsSettingsSource,
1894+ SettingsConfigDict,
1895+ )
1896+
18911897
18921898class AppSettings (BaseModel ):
18931899 key: SecretStr
18941900
1901+
18951902class DbSettings (BaseModel ):
18961903 user: str
18971904 passwd: SecretStr
18981905
1906+
18991907class Settings (BaseSettings ):
19001908 app: AppSettings
19011909 db: DbSettings
@@ -1934,12 +1942,57 @@ class Settings(BaseSettings):
19341942 └── 📄 passwd
19351943```
19361944``` py
1945+ from pydantic import BaseModel, SecretStr
1946+
1947+ from pydantic_settings import (
1948+ BaseSettings,
1949+ NestedSecretsSettingsSource,
1950+ SettingsConfigDict,
1951+ )
1952+
1953+
1954+ class AppSettings (BaseModel ):
1955+ key: SecretStr
1956+
1957+
1958+ class DbSettings (BaseModel ):
1959+ user: str
1960+ passwd: SecretStr
1961+
1962+
1963+ class Settings (BaseSettings ):
1964+ app: AppSettings
1965+ db: DbSettings
1966+
1967+ model_config = SettingsConfigDict(
1968+ env_prefix = ' MY_' ,
1969+ env_nested_delimiter = ' __' ,
1970+ secrets_dir = ' secrets' ,
1971+ secrets_nested_delimiter = ' _' ,
1972+ )
1973+
19371974 model_config = SettingsConfigDict(
19381975 env_prefix = ' MY_' ,
19391976 env_nested_delimiter = ' __' ,
19401977 secrets_dir = ' secrets' ,
19411978 secrets_nested_subdir = True ,
19421979 )
1980+
1981+ @ classmethod
1982+ def settings_customise_sources (
1983+ cls ,
1984+ settings_cls ,
1985+ init_settings ,
1986+ env_settings ,
1987+ dotenv_settings ,
1988+ file_secret_settings ,
1989+ ):
1990+ return (
1991+ init_settings,
1992+ env_settings,
1993+ dotenv_settings,
1994+ NestedSecretsSettingsSource(file_secret_settings),
1995+ )
19431996```
19441997
19451998### Use Case: Multiple Nested Directories
@@ -1958,12 +2011,57 @@ class Settings(BaseSettings):
19582011 └── 📄 passwd
19592012```
19602013``` py
2014+ from pydantic import BaseModel, SecretStr
2015+
2016+ from pydantic_settings import (
2017+ BaseSettings,
2018+ NestedSecretsSettingsSource,
2019+ SettingsConfigDict,
2020+ )
2021+
2022+
2023+ class AppSettings (BaseModel ):
2024+ key: SecretStr
2025+
2026+
2027+ class DbSettings (BaseModel ):
2028+ user: str
2029+ passwd: SecretStr
2030+
2031+
2032+ class Settings (BaseSettings ):
2033+ app: AppSettings
2034+ db: DbSettings
2035+
2036+ model_config = SettingsConfigDict(
2037+ env_prefix = ' MY_' ,
2038+ env_nested_delimiter = ' __' ,
2039+ secrets_dir = ' secrets' ,
2040+ secrets_nested_delimiter = ' _' ,
2041+ )
2042+
19612043 model_config = SettingsConfigDict(
19622044 env_prefix = ' MY_' ,
19632045 env_nested_delimiter = ' __' ,
19642046 secrets_dir = [' secret/default' , ' secret/override' ],
19652047 secrets_nested_subdir = True ,
19662048 )
2049+
2050+ @ classmethod
2051+ def settings_customise_sources (
2052+ cls ,
2053+ settings_cls ,
2054+ init_settings ,
2055+ env_settings ,
2056+ dotenv_settings ,
2057+ file_secret_settings ,
2058+ ):
2059+ return (
2060+ init_settings,
2061+ env_settings,
2062+ dotenv_settings,
2063+ NestedSecretsSettingsSource(file_secret_settings),
2064+ )
19672065```
19682066
19692067### Configuration Options
0 commit comments