NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #79 most downloaded on PyPI
Settings management using Pydantic
Last release 1 months ago
07 Aug 2026
Ships fairly regularly
a new release about every 2 months
Nearly every release is documented
notes for 34 of 36 stable releases
Nothing withdrawn
no release was ever pulled
7 years old
45 releases · first in 2019
case_sensitive now applies to init kwargs and config-file sources ( #900 ). InitSettingsSource and the JSON/TOML/YAML config sources previously ignore
case_sensitive now applies to init kwargs and config-file sources (#900). InitSettingsSource and the JSON/TOML/YAML config sources previously ignored case_sensitive. Since it defaults to False, case-insensitive matching is now the default for these sources — e.g. Settings(TeSt=...) now populates a test field where it previously did not. Nested keys are still matched case-sensitively.IncompleteFieldDefinitionWarning telling you to call model_rebuild(). If you have filterwarnings = error configured, this may surface as a new failure.ValidationError (#926) instead of a less specific error.cli_show_env_vars=True (#860), so generated --help output doubles as configuration documentation.PYDANTIC_SETTINGS_DEBUG for debugging settings resolution (#906, #913). Set it to a truthy value with DEBUG logging enabled to see each source's contribution in priority order, which source won for each value, and which env_file/secret files were probed, loaded, or skipped — the long-standing "why isn't my .env being picked up?" question.toml_table_header for regular TOML files (#882, #886, #887), letting you root settings at a nested table in any TOML file, not just pyproject.toml.Traversable support for JSON/TOML/YAML file sources (#902), so you can load config packaged inside a distribution — including files inside a zip or wheel — via importlib.resources.files(...) without casting to Path.project_id can come from an earlier settings source (#878), rather than only from the constructor or GOOGLE_CLOUD_PROJECT.case_sensitive=True (#894). Windows upper-cases os.environ keys, so fields raised Field required instead of picking up their values.AliasPath on nested model fields not JSON-decoding env values (#898).dbx_token being swallowed by a db: dict field.nested_model_default_partial_update=True corrupting discriminated unions (#876).Secret subclasses crashing when loaded from the environment (#920).Optional[Annotated[MyEnum, ...]] with env_parse_enums=True (#910).yaml_config_section now falls back to defaults instead of raising AttributeError: 'NoneType' object has no attribute 'keys' (#914).NestedSecretsSettingsSource no longer follows symlinks pointing outside secrets_dir (#889).list_secrets call when case_sensitive=True (#862), lowering the required IAM permissions to just roles/secretmanager.secretAccessor.types-boto3[secretsmanager] is no longer required at runtime (#880).Full Changelog: v2.14.1...v2.15.0
One column per quarter.
This is a security patch release.
This is a security patch release.
NestedSecretsSettingsSource from following symlinks outside secrets_dir by @hramezani in #889Fixes GHSA-4xgf-cpjx-pc3j: NestedSecretsSettingsSource with secrets_nested_subdir=True could follow a symbolic link inside secrets_dir pointing outside it, reading out-of-tree files into settings values and bypassing the secrets_dir_max_size cap. Affected versions: >= 2.12.0, < 2.14.2.
Full Changelog: v2.14.1...v2.14.2
Bump the python-packages group with 4 updates by @dependabot [bot] in #850
cls conflicting with classmethod parameter by @hramezani in #858Full Changelog: v2.14.0...v2.14.1
Fix parsing env vars into Optional Strict types by @hramezani in #792
Literal[numeric Enum] coercion for CLI and env vars by @m9810223 in #811boto3-stubs to types-boto3 by @hramezani in #831BaseSettings.__init__() by @Viicos in #842cli_ignore_unknown_args=True not working on subcommands by @hramezani in #844python -OO by falling back to json_schema_extra by @hramezani in #843Full Changelog: v2.13.1...v2.14.0
Fix regression for bool fields since 2.13.0 by @hramezani in #784
Full Changelog: v2.13.0...v2.13.1
fix: Deterministic alias selection when using validate_by_name by @chbndrhnns in #707
None for inaccessible GCP Secret Manager secrets by @zaphod72 in #712NoDecode by @tselepakis in #695NAME environment variable in WSL by @kzrnm in #747(default: …) in the help message for CliToggleFlag by @kzrnm in #740snake_case_conversion with env_prefix for Azure Key Vault source by @cstarkers in #762Full Changelog: v2.12.0...v2.13.0
Support for enum kebab case. by @kschwab in #686
Full Changelog: v2.11.0...v2.12.0
CLI Serialize Support by @kschwab in #643
CliSettingsSource.__init__. by @trygve-baerland in #656InitSettingsSource resolution deterministic by @enrico-stauss in #681Full Changelog: 2.10.1...v2.11.0
Fix UnboundLocalError error in _replace_field_names_case_insensitively by @hramezani in #639
Full Changelog: 2.10.0...2.10.1
Full Changelog: https://github.com/pydantic/pydantic-settings/compare/2.10.0...2.10.1
Fix running tests when azure-keyvault-secrets is not installed by @CyberTailor in #601
cli_shortcuts to CLI settings by @karta9821 in #624Full Changelog: v2.9.1...2.10.0
cli_shortcuts to CLI settings by @karta9821 in https://github.com/pydantic/pydantic-settings/pull/624Full Changelog: https://github.com/pydantic/pydantic-settings/compare/v2.9.1...2.10.0
fix: Expose ConfigFileSourceMixing on top level sources/__init__.py by @jbw-vtl in https://github.com/pydantic/pydantic-settings/pull/597
Full Changelog: https://github.com/pydantic/pydantic-settings/compare/v2.9.0...v2.9.1
Drop support for Python 3.8 by @Viicos in https://github.com/pydantic/pydantic-settings/pull/560
typing-inspection by @Viicos in https://github.com/pydantic/pydantic-settings/pull/556uv for Project Management by @KanchiShimono in https://github.com/pydantic/pydantic-settings/pull/547Full Changelog: https://github.com/pydantic/pydantic-settings/compare/v2.8.1...v2.9.0
Fix for init source kwarg alias resolution. by @kschwab in https://github.com/pydantic/pydantic-settings/pull/550
BaseSettings.__init__ by @Viicos in https://github.com/pydantic/pydantic-settings/pull/557object instead of Any by @Viicos in https://github.com/pydantic/pydantic-settings/pull/559Full Changelog: https://github.com/pydantic/pydantic-settings/compare/v2.8.0...v2.8.1
CLI support for optional and variadic positional args by @kschwab in https://github.com/pydantic/pydantic-settings/pull/519
Any in BaseSettings signature to avoid mypy errors by @Viicos in https://github.com/pydantic/pydantic-settings/pull/529Full Changelog: https://github.com/pydantic/pydantic-settings/compare/v2.7.1...v2.8.0
Move preferred alias resolution to private method by @kschwab in https://github.com/pydantic/pydantic-settings/pull/507
Full Changelog: https://github.com/pydantic/pydantic-settings/compare/v2.7.0...v2.7.1
Fix test_protected_namespace_defaults with -Wdefault by @CyberTailor in https://github.com/pydantic/pydantic-settings/pull/462
test_protected_namespace_defaults with -Wdefault by @CyberTailor in https://github.com/pydantic/pydantic-settings/pull/462__repr__ implementations by @dlax in https://github.com/pydantic/pydantic-settings/pull/465NoDecode and ForceDecode annotations by @hramezani in https://github.com/pydantic/pydantic-settings/pull/492Full Changelog: https://github.com/pydantic/pydantic-settings/compare/v2.6.1...v2.7.0
Add Python 3.13 support by @hramezani in https://github.com/pydantic/pydantic-settings/pull/450
Full Changelog: https://github.com/pydantic/pydantic-settings/compare/v2.6.0...v2.6.1
Fix nested model field with alias parsing by @hramezani in https://github.com/pydantic/pydantic-settings/pull/400
cli_ignore_unknown_args config option. by @kschwab in https://github.com/pydantic/pydantic-settings/pull/405cli_flag_prefix_char config option. by @kschwab in https://github.com/pydantic/pydantic-settings/pull/418Full Changelog: https://github.com/pydantic/pydantic-settings/compare/v2.5.2...v2.6.0
Second fix for the TypeError bug introduced in 2.5 by @hramezani in https://github.com/pydantic/pydantic-settings/pull/396
Full Changelog: https://github.com/pydantic/pydantic-settings/compare/v2.5.1...v2.5.2
Fix TypeError introduced in 2.5 by @hramezani in https://github.com/pydantic/pydantic-settings/pull/392
Full Changelog: https://github.com/pydantic/pydantic-settings/compare/v2.5.0...v2.5.1
Fix a bug in nested vanila dataclass by @hramezani in https://github.com/pydantic/pydantic-settings/pull/357
nested_model_default_partial_update flag and DefaultSettingsSource by @kschwab in https://github.com/pydantic/pydantic-settings/pull/348Full Changelog: https://github.com/pydantic/pydantic-settings/compare/v2.4.0...v2.5.0
Deprecate read_env_file and move it to DotEnvSettingsSource by @WarpedPixel in https://github.com/pydantic/pydantic-settings/pull/318
read_env_file and move it to DotEnvSettingsSource by @WarpedPixel in https://github.com/pydantic/pydantic-settings/pull/318Full Changelog: https://github.com/pydantic/pydantic-settings/compare/v2.3.4...v2.4.0
add in-place reloading in docs by @nrolin in https://github.com/pydantic/pydantic-settings/pull/316
pydantic docs build by @sydney-runkle in https://github.com/pydantic/pydantic-settings/pull/321Full Changelog: https://github.com/pydantic/pydantic-settings/compare/v2.3.3...v2.3.4
Fix an intriduced bug in parsing json field with discriminated union by @hramezani in https://github.com/pydantic/pydantic-settings/pull/312
Full Changelog: https://github.com/pydantic/pydantic-settings/compare/v2.3.2...v2.3.3
Initialize CLI source on demand. by @kschwab in https://github.com/pydantic/pydantic-settings/pull/305
argparse formatting problem by @scottstanie in https://github.com/pydantic/pydantic-settings/pull/307Full Changelog: https://github.com/pydantic/pydantic-settings/compare/v2.3.1...v2.3.2
Fix a regression in parsing env value for nested dict by @hramezani in https://github.com/pydantic/pydantic-settings/pull/301
Full Changelog: https://github.com/pydantic/pydantic-settings/compare/v2.3.0...v2.3.1
Add environment parsing support for enums. by @kschwab in https://github.com/pydantic/pydantic-settings/pull/252
explode_env_vars for better dict handling by @hramezani in https://github.com/pydantic/pydantic-settings/pull/261PyprojectTomlConfigSettingsSource by @ITProKyle in https://github.com/pydantic/pydantic-settings/pull/255Full Changelog: https://github.com/pydantic/pydantic-settings/compare/v2.2.1...v2.3.0
respect env_prefix when extra allowed by @zzstoatzz in https://github.com/pydantic/pydantic-settings/pull/238
env_prefix when extra allowed by @zzstoatzz in https://github.com/pydantic/pydantic-settings/pull/238Full Changelog: https://github.com/pydantic/pydantic-settings/compare/v2.2.0...v2.2.1
Fix documentation and update pydantic and pydantic-core dependancies by @Xunop in https://github.com/pydantic/pydantic-settings/pull/194
Full Changelog: https://github.com/pydantic/pydantic-settings/compare/v2.1.0...v2.2.0
Fix code for mentioned variable in Settings Management by @ikosmala in https://github.com/pydantic/pydantic-settings/pull/146
Environment variable names section by @iagorrr in https://github.com/pydantic/pydantic-settings/pull/173Full Changelog: https://github.com/pydantic/pydantic-settings/compare/v2.0.3...v2.1.0
Fix _replace_field_names_case_insensitively precondition inconsistency by @AlexVndnblcke in https://github.com/pydantic/pydantic-settings/pull/130
_replace_field_names_case_insensitively precondition inconsistency by @AlexVndnblcke in https://github.com/pydantic/pydantic-settings/pull/130Full Changelog: https://github.com/pydantic/pydantic-settings/compare/v2.0.2...v2.0.3
dotenv no error w/ an env key shorter than prefix (#106) by @jvllmr in https://github.com/pydantic/pydantic-settings/pull/107
pydantic_settings.SettingsConfigDict instead of pydantic.ConfigDict in tests by @hramezani in https://github.com/pydantic/pydantic-settings/pull/119fiel_value -> field_value) by @kkirsche in https://github.com/pydantic/pydantic-settings/pull/123Full Changelog: https://github.com/pydantic/pydantic-settings/compare/v2.0.1...v2.0.2
pydantic V2 is released by @davidhewitt in https://github.com/pydantic/pydantic-settings/pull/99
BaseSettings.model_config by @Viicos in https://github.com/pydantic/pydantic-settings/pull/97DotenvType to accept str by @hramezani in https://github.com/pydantic/pydantic-settings/pull/96PydanticBaseEnvSettingsSource.__init__ by @hramezani in https://github.com/pydantic/pydantic-settings/pull/100Full Changelog: https://github.com/pydantic/pydantic-settings/compare/v2.0.0...v2.0.1
Add mkdocs.yml to run mkdocs locally by @Kludex in https://github.com/pydantic/pydantic-settings/pull/67
mkdocs.yml to run mkdocs locally by @Kludex in https://github.com/pydantic/pydantic-settings/pull/67mkdocs.yml by @Kludex in https://github.com/pydantic/pydantic-settings/pull/70SettingsConfigDict public by @Kludex in https://github.com/pydantic/pydantic-settings/pull/75index.md by @Kludex in https://github.com/pydantic/pydantic-settings/pull/73case_sensitive and env_prefix usable as args by @Viicos in https://github.com/pydantic/pydantic-settings/pull/76assignees list to the hooky config by @hramezani in https://github.com/pydantic/pydantic-settings/pull/92Full Changelog: https://github.com/pydantic/pydantic-settings/compare/v2.0b1...v2.0.0
Nothing published for this version
Format docs for import by @tpdorsey in https://github.com/pydantic/pydantic-settings/pull/48
Full Changelog: https://github.com/pydantic/pydantic-settings/compare/v2.0a4...v2.0b1
Add Pydantic PyPI classifier by @Kludex in https://github.com/pydantic/pydantic-settings/pull/36
Full Changelog: https://github.com/pydantic/pydantic-settings/compare/v2.0a3...v2.0a4
Implement proper support for nested complex env values by @hramezani in https://github.com/pydantic/pydantic-settings/pull/22
Full Changelog: https://github.com/pydantic/pydantic-settings/compare/v2.0a1...v2.0a3
Reimplement setting source classes by @hramezani in https://github.com/pydantic/pydantic-settings/pull/15
Full Changelog: https://github.com/pydantic/pydantic-settings/commits/v2.0a1
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →