Upgrading pydantic-settings 1 to 2
Breaking1.99 → 2.16.2Breaking11Security4Platform7Deprecated1New81Changed61Fixed191Other125
BreakingUpgrade verdict
11 breaking changes and 7 platform requirement changes and 2 security fixes.
In plain terms
- Config files are now always read as UTF-8 unless you set an explicit encoding, so results no longer depend on your system locale.
- Settings passed directly to the constructor or read from JSON, TOML, or YAML files now ignore letter case in key names by default, so `TeSt` fills a `test` field.
- Removes parsing of command line arguments from CliSettingsSource.__init__.
- TOML files are now read with a different library, and the setting that controlled their encoding is gone.
Must act Top 5 of 21 that need code or config changes
Python requirement changed in 2.16.0: >=3.7 → >=3.11.
Adds typing-extensions >=4.0.0, typing-inspection >=0.4.0.
Installs 6 packages in all (was 5).
What you must change
Breaking11
JSON and YAML config files are read as UTF-8 by default instead of the locale encoding.
json_file_encodingyaml_file_encodingcase_sensitive now applies to init kwargs and config-file sources, making case-insensitive matching the default for them.case_sensitiveInitSettingsSourceRemoves parsing of command line arguments from CliSettingsSource.__init__.
CliSettingsSource.__init__Replaces tomlkit with tomli and removes the
toml_file_encoding config option.toml_file_encodingtomlkittomliAliases are ignored in every source when validate_by_alias=False; only field names are used.
validate_by_aliasextra_forbiddenvalidation_alias now takes precedence over alias, so file and CLI values that were silently ignored now load.
validation_aliasaliasCliApp.serializeWith case_sensitive=False, CLI case-insensitivity only lowercases registered options; args after -- and CliUnknownArgs keep their case.
case_sensitiveCliUnknownArgsFields with unresolved forward references now emit
IncompleteFieldDefinitionWarning instead of failing silently.IncompleteFieldDefinitionWarningmodel_rebuild()Non-JSON env values for strict fields now raise
ValidationError instead of a less specific error.ValidationErrorReverts respecting 'cli_parse_args' from model_config with settings_customise_sources.
cli_parse_argssettings_customise_sourcesAdopts pydantic-settings with Pydantic V2.
Security2
Requires python-dotenv>=1.2.2 to pick up the fix for CVE-2026-28684.
python-dotenvFixes GHSA-4xgf-cpjx-pc3j: with secrets_nested_subdir=True, symlinks inside secrets_dir could read out-of-tree files and bypass secrets_dir_max_size.
NestedSecretsSettingsSourcesecrets_nested_subdirsecrets_dirsecrets_dir_max_sizeModerate · CVSS 5.3Platform7
Drops Python 3.10 support; pydantic-settings now requires Python 3.11+, and the tomli fallback is replaced by stdlib tomllib.
tomlitomllibtomlDrops support for Python 3.10.
Adds support for Python 3.15.
Drops support for Python 3.8.
Adds Python 3.13 support.
Confirms Python 3.12 support.
Drops Python 3.7 support.
Deprecations to plan for
Deprecated1
Deprecates
read_env_file and moves it to DotEnvSettingsSource.read_env_fileDotEnvSettingsSourceAPI changes
Generated by DepDelta from published Python source. Not mixed with prose notes.
- added:
export AWSSecretsManagerSettingsSource - added:
export AWSSystemsManagerSettingsSource - added:
export AzureKeyVaultSettingsSource - added:
export CLI_SUPPRESS - added:
export CliApp - added:
export CliDualFlag - added:
export CliExplicitFlag - added:
export CliImplicitFlag - added:
export CliMutuallyExclusiveGroup - added:
export CliPositionalArg - added:
export CliSettingsSource - added:
export CliSubCommand - added:
export CliSuppress - added:
export CliToggleFlag - added:
export CliUnknownArgs - added:
export CliVariadicArg - added:
export ForceDecode - added:
export GoogleSecretManagerSettingsSource - added:
export IncompleteFieldDefinitionWarning - added:
export JsonConfigSettingsSource - added:
export NestedSecretsSettingsSource - added:
export NoDecode - added:
export PyprojectTomlConfigSettingsSource - added:
export SettingsConfigDict - added:
export SettingsError - added:
export TomlConfigSettingsSource - added:
export YamlConfigSettingsSource - added:
export get_subcommand
- added:
class IncompleteFieldDefinitionWarning(UserWarning) - added:
class SettingsError(ValueError)
- removed:
variable env_file_sentinel: DotenvType - changed:
constructor BaseSettings(_env_file: Optional[DotenvType]=…, _env_file_encoding: Optional[str]=…, _env_nested_delimiter: Optional[str]=…, _secrets_dir: Optional[Union[str, Path]]=…, **values: Any) -> None → constructor BaseSettings(_case_sensitive: bool | None=…, _nested_model_default_partial_update: bool | None=…, _env_prefix: str | None=…, _env_prefix_target: EnvPrefixTarget | None=…, _env_file: DotenvType | None=…, _env_file_encoding: str | None=…, _env_file_depth: int | None=…, _env_ignore_empty: bool | None=…, _env_nested_delimiter: str | None=…, _env_nested_max_split: int | None=…, _env_parse_… - changed:
field BaseSettings.model_config → field BaseSettings.model_config: ClassVar[SettingsConfigDict] - changed:
field SettingsConfigDict.env_file: Optional[DotenvType] → field SettingsConfigDict.env_file: DotenvType | None - changed:
field SettingsConfigDict.env_file_encoding: Optional[str] → field SettingsConfigDict.env_file_encoding: str | None - changed:
field SettingsConfigDict.env_nested_delimiter: Optional[str] → field SettingsConfigDict.env_nested_delimiter: str | None - changed:
field SettingsConfigDict.secrets_dir: Optional[Union[str, Path]] → field SettingsConfigDict.secrets_dir: PathType | None - changed:
static method BaseSettings.settings_customise_sources(settings_cls: Type[BaseSettings], init_settings: PydanticBaseSettingsSource, env_settings: PydanticBaseSettingsSource, dotenv_settings: PydanticBaseSettingsSource, file_secret_settings: PydanticBaseSettingsSource) -> Tuple[PydanticBaseSettingsSource, ...] → static method BaseSettings.settings_customise_sources(settings_cls: type[BaseSettings], init_settings: PydanticBaseSettingsSource, env_settings: PydanticBaseSettingsSource, dotenv_settings: PydanticBaseSettingsSource, file_secret_settings: PydanticBaseSettingsSource) -> tuple[PydanticBaseSettingsSource, ...] - added:
class CliApp - added:
field SettingsConfigDict.cli_avoid_json: bool - added:
field SettingsConfigDict.cli_enforce_required: bool - added:
field SettingsConfigDict.cli_exit_on_error: bool - added:
field SettingsConfigDict.cli_flag_prefix_char: str - added:
field SettingsConfigDict.cli_hide_none_type: bool - added:
field SettingsConfigDict.cli_ignore_unknown_args: bool | None - added:
field SettingsConfigDict.cli_implicit_flags: bool | Literal['dual', 'toggle'] | None - added:
field SettingsConfigDict.cli_kebab_case: bool | Literal['all', 'no_enums'] | None - added:
field SettingsConfigDict.cli_parse_args: bool | list[str] | tuple[str, ...] | None - added:
field SettingsConfigDict.cli_parse_none_str: str | None - added:
field SettingsConfigDict.cli_prefix: str - added:
field SettingsConfigDict.cli_prog_name: str | None - added:
field SettingsConfigDict.cli_shortcuts: Mapping[str, str | list[str]] | None - added:
field SettingsConfigDict.cli_show_env_vars: bool - added:
field SettingsConfigDict.cli_use_class_docs_for_groups: bool - added:
field SettingsConfigDict.dotenv_filtering: DotenvFiltering | None - added:
field SettingsConfigDict.enable_decoding: bool - added:
field SettingsConfigDict.env_file_depth: int - added:
field SettingsConfigDict.env_ignore_empty: bool - added:
field SettingsConfigDict.env_nested_max_split: int | None - added:
field SettingsConfigDict.env_parse_enums: bool | None - added:
field SettingsConfigDict.env_parse_none_str: str | None - added:
field SettingsConfigDict.env_prefix_target: EnvPrefixTarget - added:
field SettingsConfigDict.json_file: ConfigFileSourceType | None - added:
field SettingsConfigDict.json_file_encoding: str | None - added:
field SettingsConfigDict.nested_model_default_partial_update: bool | None - added:
field SettingsConfigDict.pyproject_toml_depth: int - added:
field SettingsConfigDict.pyproject_toml_table_header: tuple[str, ...] - added:
field SettingsConfigDict.secrets_case_sensitive: bool | None - added:
field SettingsConfigDict.secrets_dir_max_size: int | None - added:
field SettingsConfigDict.secrets_dir_missing: Literal['ok', 'warn', 'error'] | None - added:
field SettingsConfigDict.secrets_nested_delimiter: str | None - added:
field SettingsConfigDict.secrets_nested_subdir: bool | None - added:
field SettingsConfigDict.secrets_prefix: str | None - added:
field SettingsConfigDict.toml_file: ConfigFileSourceType | None - added:
field SettingsConfigDict.toml_table_header: tuple[str, ...] - added:
field SettingsConfigDict.yaml_config_section: str | None - added:
field SettingsConfigDict.yaml_file: ConfigFileSourceType | None - added:
field SettingsConfigDict.yaml_file_encoding: str | None - added:
static method BaseSettings.settings_cached() -> Self - added:
static method BaseSettings.settings_clear_cache() -> None - added:
static method CliApp.format_help(model: PydanticModel | type[T], cli_settings_source: CliSettingsSource[Any] | None=…, strip_ansi_color: bool=…) -> str - added:
static method CliApp.print_help(model: PydanticModel | type[T], cli_settings_source: CliSettingsSource[Any] | None=…, file: TextIO | None=…, strip_ansi_color: bool=…) -> None - added:
static method CliApp.run(model_cls: type[T], cli_args: list[str] | Namespace | SimpleNamespace | dict[str, Any] | None=…, cli_settings_source: CliSettingsSource[Any] | None=…, cli_exit_on_error: bool | None=…, cli_show_env_vars: bool | None=…, cli_cmd_method_name: str=…, **model_init_data: Any) -> T - added:
static method CliApp.run_subcommand(model: PydanticModel, cli_exit_on_error: bool | None=…, cli_show_env_vars: bool | None=…, cli_cmd_method_name: str=…) -> PydanticModel - added:
static method CliApp.serialize(model: PydanticModel, list_style: Literal['json', 'argparse', 'lazy']=…, dict_style: Literal['json', 'env']=…, positionals_first: bool=…) -> list[str] - added:
variable T
- removed:
class DotEnvSettingsSource(EnvSettingsSource) - removed:
class EnvSettingsSource(PydanticBaseEnvSettingsSource) - removed:
class InitSettingsSource(PydanticBaseSettingsSource) - removed:
class PydanticBaseEnvSettingsSource(PydanticBaseSettingsSource) - removed:
class PydanticBaseSettingsSource(ABC) - removed:
class SecretsSettingsSource(PydanticBaseEnvSettingsSource) - removed:
class SettingsError(ValueError) - removed:
constructor DotEnvSettingsSource(settings_cls: Type[BaseSettings], env_file: Optional[DotenvType], env_file_encoding: Optional[str], env_nested_delimiter: Optional[str]=…, env_prefix_len: int=…) - removed:
constructor EnvSettingsSource(settings_cls: Type[BaseSettings], env_nested_delimiter: Optional[str]=…, env_prefix_len: int=…) - removed:
constructor InitSettingsSource(settings_cls: Type[BaseSettings], init_kwargs: Dict[str, Any]) - removed:
constructor PydanticBaseSettingsSource(settings_cls: Type[BaseSettings]) - removed:
constructor SecretsSettingsSource(settings_cls: Type[BaseSettings], secrets_dir: Optional[Union[str, Path]]) - removed:
function find_case_path(dir_path: Path, file_name: str, case_sensitive: bool) -> Optional[Path] - removed:
function read_env_file(file_path: Path, *, encoding: str=…, case_sensitive: bool=…) -> Dict[str, Optional[str]] - removed:
method EnvSettingsSource.explode_env_vars(field_name: str, field: FieldInfo, env_vars: Mapping[str, Optional[str]]) -> Dict[str, Any] - removed:
method EnvSettingsSource.get_field_value(field: FieldInfo, field_name: str) -> Tuple[Any, str, bool] - removed:
method EnvSettingsSource.prepare_field_value(field_name: str, field: FieldInfo, value: Any, value_is_complex: bool) -> Any - removed:
method InitSettingsSource.get_field_value(field: FieldInfo, field_name: str) -> Tuple[Any, str, bool] - removed:
method PydanticBaseSettingsSource.field_is_complex(field: FieldInfo) -> bool - removed:
method PydanticBaseSettingsSource.get_field_value(field: FieldInfo, field_name: str) -> Tuple[Any, str, bool] - removed:
method PydanticBaseSettingsSource.prepare_field_value(field_name: str, field: FieldInfo, value: Any, value_is_complex: bool) -> Any - removed:
method SecretsSettingsSource.get_field_value(field: FieldInfo, field_name: str) -> Tuple[Any, str, bool] - removed:
static method SecretsSettingsSource.find_case_path(dir_path: Path, file_name: str, case_sensitive: bool) -> Optional[Path] - removed:
variable DotenvType - added:
export AWSSecretsManagerSettingsSource - added:
export AWSSystemsManagerSettingsSource - added:
export AzureKeyVaultSettingsSource - added:
export CLI_SUPPRESS - added:
export CliDualFlag - added:
export CliExplicitFlag - added:
export CliImplicitFlag - added:
export CliMutuallyExclusiveGroup - added:
export CliPositionalArg - added:
export CliSettingsSource - added:
export CliSubCommand - added:
export CliSuppress - added:
export CliToggleFlag - added:
export CliUnknownArgs - added:
export CliVariadicArg - added:
export ConfigFileSourceMixin - added:
export ConfigFileSourceType - added:
export DEFAULT_PATH - added:
export DefaultSettingsSource - added:
export DotEnvSettingsSource - added:
export DotenvFiltering - added:
export DotenvType - added:
export ENV_FILE_SENTINEL - added:
export EnvPrefixTarget - added:
export EnvSettingsSource - added:
export ForceDecode - added:
export GoogleSecretManagerSettingsSource - added:
export InitSettingsSource - added:
export JsonConfigSettingsSource - added:
export NestedSecretsSettingsSource - added:
export NoDecode - added:
export PathType - added:
export PydanticBaseEnvSettingsSource - added:
export PydanticBaseSettingsSource - added:
export PydanticModel - added:
export PyprojectTomlConfigSettingsSource - added:
export SecretsSettingsSource - added:
export TomlConfigSettingsSource - added:
export YamlConfigSettingsSource - added:
export get_subcommand - added:
export read_env_file
- added:
class ConfigFileSourceMixin(ABC) - added:
class DefaultSettingsSource(PydanticBaseSettingsSource) - added:
class InitSettingsSource(PydanticBaseSettingsSource) - added:
class PydanticBaseEnvSettingsSource(PydanticBaseSettingsSource) - added:
class PydanticBaseSettingsSource(ABC) - added:
constructor DefaultSettingsSource(settings_cls: type[BaseSettings], nested_model_default_partial_update: bool | None=…, _init_state: InitState | None=…) - added:
constructor InitSettingsSource(settings_cls: type[BaseSettings], init_kwargs: dict[str, Any], nested_model_default_partial_update: bool | None=…, _init_state: InitState | None=…) - added:
constructor PydanticBaseEnvSettingsSource(settings_cls: type[BaseSettings], case_sensitive: bool | None=…, env_prefix: str | None=…, env_prefix_target: EnvPrefixTarget | None=…, env_ignore_empty: bool | None=…, env_parse_none_str: str | None=…, env_parse_enums: bool | None=…, _init_state: InitState | None=…) -> None - added:
constructor PydanticBaseSettingsSource(settings_cls: type[BaseSettings], _init_state: InitState | None=…) - added:
export SettingsError - added:
method DefaultSettingsSource.get_field_value(field: FieldInfo, field_name: str) -> tuple[Any, str, bool] - added:
method InitSettingsSource.get_field_value(field: FieldInfo, field_name: str) -> tuple[Any, str, bool] - added:
method PydanticBaseSettingsSource.decode_complex_value(field_name: str, field: FieldInfo, value: Any) -> Any - added:
method PydanticBaseSettingsSource.field_is_complex(field: FieldInfo) -> bool - added:
method PydanticBaseSettingsSource.get_field_value(field: FieldInfo, field_name: str) -> tuple[Any, str, bool] - added:
method PydanticBaseSettingsSource.prepare_field_value(field_name: str, field: FieldInfo, value: Any, value_is_complex: bool) -> Any - added:
property PydanticBaseSettingsSource.current_state -> dict[str, Any] - added:
property PydanticBaseSettingsSource.settings_sources_data -> dict[str, dict[str, Any]]
- added:
export AWSSecretsManagerSettingsSource - added:
export AWSSystemsManagerSettingsSource - added:
export AzureKeyVaultSettingsSource - added:
export CliDualFlag - added:
export CliExplicitFlag - added:
export CliImplicitFlag - added:
export CliMutuallyExclusiveGroup - added:
export CliPositionalArg - added:
export CliSettingsSource - added:
export CliSubCommand - added:
export CliSuppress - added:
export CliToggleFlag - added:
export CliVariadicArg - added:
export DotEnvSettingsSource - added:
export EnvSettingsSource - added:
export GoogleSecretManagerSettingsSource - added:
export JsonConfigSettingsSource - added:
export PyprojectTomlConfigSettingsSource - added:
export SecretsSettingsSource - added:
export TomlConfigSettingsSource - added:
export YamlConfigSettingsSource
- added:
class AWSSecretsManagerSettingsSource(EnvSettingsSource) - added:
class AWSSystemsManagerSettingsSource(EnvSettingsSource) - added:
constructor AWSSecretsManagerSettingsSource(settings_cls: type[BaseSettings], secret_id: str, region_name: str | None=…, endpoint_url: str | None=…, case_sensitive: bool | None=…, env_prefix: str | None=…, env_nested_delimiter: str | None=…, env_parse_none_str: str | None=…, env_parse_enums: bool | None=…, version_id: str | None=…, _init_state: InitState | None=…) -> None - added:
constructor AWSSystemsManagerSettingsSource(settings_cls: type[BaseSettings], ssm_path: str=…, region_name: str | None=…, endpoint_url: str | None=…, case_sensitive: bool | None=…, env_prefix: str | None=…, env_nested_delimiter: str | None=…, env_parse_none_str: str | None=…, env_parse_enums: bool | None=…, _init_state: InitState | None=…) -> None
- added:
class AzureKeyVaultMapping(Mapping[str, str | None]) - added:
class AzureKeyVaultSettingsSource(EnvSettingsSource) - added:
constructor AzureKeyVaultMapping(secret_client: SecretClient, case_sensitive: bool, snake_case_conversion: bool, env_prefix: str | None, env_parse_none_str: str | None=…) -> None - added:
constructor AzureKeyVaultSettingsSource(settings_cls: type[BaseSettings], url: str, credential: TokenCredential, dash_to_underscore: bool=…, case_sensitive: bool | None=…, snake_case_conversion: bool=…, env_prefix: str | None=…, env_parse_none_str: str | None=…, env_parse_enums: bool | None=…, _init_state: InitState | None=…) -> None - added:
method AzureKeyVaultSettingsSource.explode_env_vars(field_name: str, field: FieldInfo, env_vars: Mapping[str, str | None]) -> dict[str, Any]
- added:
class CliMutuallyExclusiveGroup(BaseModel) - added:
class CliSettingsSource(EnvSettingsSource, Generic[T]) - added:
constructor CliSettingsSource(settings_cls: type[BaseSettings], cli_prog_name: str | None=…, cli_parse_args: bool | list[str] | tuple[str, ...] | None=…, cli_parse_none_str: str | None=…, cli_hide_none_type: bool | None=…, cli_avoid_json: bool | None=…, cli_enforce_required: bool | None=…, cli_use_class_docs_for_groups: bool | None=…, cli_show_env_vars: bool | None=…, cli_exit_on_error: bool | No… - added:
property CliSettingsSource.env_var_names -> Mapping[str, tuple[str, ...]] - added:
property CliSettingsSource.root_parser -> T - added:
variable CLI_SUPPRESS - added:
variable CliDualFlag - added:
variable CliExplicitFlag - added:
variable CliImplicitFlag - added:
variable CliPositionalArg - added:
variable CliSubCommand - added:
variable CliSuppress - added:
variable CliToggleFlag - added:
variable CliUnknownArgs - added:
variable CliVariadicArg - added:
variable T
- added:
class DotEnvSettingsSource(EnvSettingsSource) - added:
constructor DotEnvSettingsSource(settings_cls: type[BaseSettings], env_file: DotenvType | None=…, env_file_encoding: str | None=…, dotenv_filtering: DotenvFiltering | None=…, case_sensitive: bool | None=…, env_prefix: str | None=…, env_prefix_target: EnvPrefixTarget | None=…, env_nested_delimiter: str | None=…, env_nested_max_split: int | None=…, env_ignore_empty: bool | None=…, env_parse_none_st… - added:
function read_env_file(file_path: Path, *, encoding: str | None=…, case_sensitive: bool=…, ignore_empty: bool=…, parse_none_str: str | None=…) -> Mapping[str, str | None]
- added:
class EnvSettingsSource(PydanticBaseEnvSettingsSource) - added:
constructor EnvSettingsSource(settings_cls: type[BaseSettings], case_sensitive: bool | None=…, env_prefix: str | None=…, env_prefix_target: EnvPrefixTarget | None=…, env_nested_delimiter: str | None=…, env_nested_max_split: int | None=…, env_ignore_empty: bool | None=…, env_parse_none_str: str | None=…, env_parse_enums: bool | None=…, _init_state: InitState | None=…) -> None - added:
method EnvSettingsSource.explode_env_vars(field_name: str, field: FieldInfo, env_vars: Mapping[str, str | None]) -> dict[str, Any] - added:
method EnvSettingsSource.get_field_value(field: FieldInfo, field_name: str) -> tuple[Any, str, bool] - added:
method EnvSettingsSource.next_field(field: FieldInfo | Any | None, key: str, case_sensitive: bool | None=…) -> FieldInfo | None - added:
method EnvSettingsSource.prepare_field_value(field_name: str, field: FieldInfo, value: Any, value_is_complex: bool) -> Any
- added:
class GoogleSecretManagerMapping(Mapping[str, str | None]) - added:
class GoogleSecretManagerSettingsSource(EnvSettingsSource) - added:
constructor GoogleSecretManagerMapping(secret_client: SecretManagerServiceClient, project_id: str, case_sensitive: bool, env_parse_none_str: str | None=…) -> None - added:
constructor GoogleSecretManagerSettingsSource(settings_cls: type[BaseSettings], credentials: Credentials | None=…, project_id: str | None=…, env_prefix: str | None=…, env_parse_none_str: str | None=…, env_parse_enums: bool | None=…, secret_client: SecretManagerServiceClient | None=…, case_sensitive: bool | None=…, project_id_field: str=…, _init_state: InitState | None=…) -> None - added:
method GoogleSecretManagerSettingsSource.get_field_value(field: FieldInfo, field_name: str) -> tuple[Any, str, bool]
- added:
class JsonConfigSettingsSource(InitSettingsSource, ConfigFileSourceMixin) - added:
constructor JsonConfigSettingsSource(settings_cls: type[BaseSettings], json_file: ConfigFileSourceType | None=…, json_file_encoding: str | None=…, deep_merge: bool=…, _init_state: InitState | None=…)
- added:
class NestedSecretsSettingsSource(EnvSettingsSource) - added:
constructor NestedSecretsSettingsSource(file_secret_settings: PydanticBaseSettingsSource | SecretsSettingsSource, secrets_dir: Optional[PathType]=…, secrets_dir_missing: Literal['ok', 'warn', 'error'] | None=…, secrets_dir_max_size: int | None=…, secrets_case_sensitive: bool | None=…, secrets_prefix: str | None=…, secrets_nested_delimiter: str | None=…, secrets_nested_subdir: bool | None=…, case_… - added:
function first_not_none(*objs: Any) -> Any - added:
method NestedSecretsSettingsSource.validate_secrets_path(path: Path) -> None - added:
static method NestedSecretsSettingsSource.load_secrets(path: Path) -> dict[str, str] - added:
variable SECRETS_DIR_MAX_SIZE
- added:
class PyprojectTomlConfigSettingsSource(TomlConfigSettingsSource) - added:
constructor PyprojectTomlConfigSettingsSource(settings_cls: type[BaseSettings], toml_file: Path | None=…, _init_state: InitState | None=…) -> None
- added:
class SecretsSettingsSource(PydanticBaseEnvSettingsSource) - added:
constructor SecretsSettingsSource(settings_cls: type[BaseSettings], secrets_dir: PathType | None=…, case_sensitive: bool | None=…, env_prefix: str | None=…, env_prefix_target: EnvPrefixTarget | None=…, env_ignore_empty: bool | None=…, env_parse_none_str: str | None=…, env_parse_enums: bool | None=…, _init_state: InitState | None=…) -> None - added:
method SecretsSettingsSource.get_field_value(field: FieldInfo, field_name: str) -> tuple[Any, str, bool] - added:
static method SecretsSettingsSource.find_case_path(dir_path: Path, file_name: str, case_sensitive: bool) -> Path | None
- added:
class TomlConfigSettingsSource(InitSettingsSource, ConfigFileSourceMixin) - added:
constructor TomlConfigSettingsSource(settings_cls: type[BaseSettings], toml_file: ConfigFileSourceType | None=…, toml_table_header: tuple[str, ...] | None=…, deep_merge: bool=…, _init_state: InitState | None=…) - added:
function import_toml() -> None - added:
variable tomllib
- added:
class YamlConfigSettingsSource(InitSettingsSource, ConfigFileSourceMixin) - added:
constructor YamlConfigSettingsSource(settings_cls: type[BaseSettings], yaml_file: ConfigFileSourceType | None=…, yaml_file_encoding: str | None=…, yaml_config_section: str | None=…, deep_merge: bool=…, _init_state: InitState | None=…)
- added:
class EnvNoneType(str) - added:
class ForceDecode - added:
class NoDecode - added:
class SecretVersion - added:
class _CliDualFlag(_CliImplicitFlag) - added:
class _CliExplicitFlag - added:
class _CliImplicitFlag - added:
class _CliPositionalArg - added:
class _CliSubCommand - added:
class _CliToggleFlag(_CliImplicitFlag) - added:
class _CliUnknownArgs - added:
class _CliVariadicArg - added:
constructor SecretVersion(version: str) -> None - added:
variable ConfigFileSourceType - added:
variable DEFAULT_PATH: PathType - added:
variable DotenvFiltering - added:
variable DotenvType - added:
variable ENV_FILE_SENTINEL: DotenvType - added:
variable EnvPrefixTarget - added:
variable PathType - added:
variable PydanticModel
- added:
class InitState(TypedDict) - added:
field InitState.field_info_ids: set[int] - added:
function _annotation_contains_types(annotation: Any, types: tuple[Any, ...], is_include_origin: bool=…, is_strip_annotated: bool=…, is_instance: bool=…, collect: set[Any] | None=…, is_subtype: bool=…, _seen_aliases: tuple[Any, ...]=…) -> bool - added:
function _annotation_enum_name_to_val(annotation: Any, name: Any) -> Any - added:
function _annotation_enum_val_to_name(annotation: Any, value: Any) -> str | None - added:
function _annotation_is_complex(annotation: Any, metadata: list[Any], init_state: InitState | None=…) -> bool - added:
function _annotation_is_complex_inner(annotation: type[Any] | None) -> bool - added:
function _get_alias_names(field_name: str, field_info: FieldInfo, alias_path_args: dict[str, int | None] | None=…, case_sensitive: bool=…, populate_by_name: bool=…, validate_by_alias: bool=…) -> tuple[tuple[str, ...], bool] - added:
function _get_env_var_key(key: str, case_sensitive: bool=…) -> str - added:
function _get_model_fields(model_cls: type[Any]) -> dict[str, FieldInfo] - added:
function _get_union_members(annotation: Any) -> tuple[Any, ...] - added:
function _is_function(obj: Any) -> bool - added:
function _literal_has_numeric_enum(annotation: type[Any] | None) -> bool - added:
function _parse_env_none_str(value: str | None, parse_none_str: str | None=…) -> str | EnvNoneType | None - added:
function _resolve_config_file(file: str | os.PathLike[str], depth: int=…, *, allow_fifo: bool=…) -> Path | None - added:
function _resolve_type_alias(annotation: Any) -> Any - added:
function _strip_annotated(annotation: Any) -> Any - added:
function _union_has_strict_types(annotation: type[Any] | None) -> bool - added:
function _union_is_complex(annotation: type[Any] | None, metadata: list[Any], init_state: InitState | None=…, _seen: tuple[Any, ...]=…) -> bool - added:
function _warn_if_field_info_incomplete(field_info: FieldInfo, field_name: str, init_state: InitState) -> None - added:
function parse_env_vars(env_vars: Mapping[str, str | None], case_sensitive: bool=…, ignore_empty: bool=…, parse_none_str: str | None=…) -> Mapping[str, str | None]
- removed:
variable path_type_labels - added:
variable logger