Skip to content

fix(deps): update dependency pydantic-settings to ~=2.16.2 - #476

Open
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/pydantic-settings-2.x
Open

renovate[bot] wants to merge 1 commit into
mainfrom
renovate/pydantic-settings-2.x

Conversation

@renovate

@renovate renovate Bot commented Aug 18, 2026 •

Copy link
Copy Markdown
Contributor

This PR contains the following updates:

Package Change Age Confidence
pydantic-settings (changelog) ~=2.14.0 → ~=2.16.2 age confidence

Release Notes

pydantic/pydantic-settings (pydantic-settings)

v2.16.2

Compare Source

v2.16.1

Compare Source

Highlights

This patch release fixes two CLI regressions introduced in 2.16.0.

Bug fixes

CLI

  • Fixed-length tuple positionals such as CliPositionalArg[tuple[int, int]] and NamedTuples are single-valued again (#​1069). Since 2.16.0 they were treated as variadic, so a CLI either refused to start with a SettingsError or put the wrong argument into the tuple. Variable-length tuples (tuple[int, ...] and bare Tuple) are still variadic.
  • A field typed as an alias of a list of dicts, e.g. type ListOfDict = list[dict[str, int]], accepts a JSON list again (#​1049). Since 2.16.0, --xx '[{"a":1},{"b":2}]' was merged into the single dict {"a": 1, "b": 2} and failed validation.
All changes (including dependency bumps and internal maintenance)

What's Changed

Full Changelog: pydantic/pydantic-settings@v2.16.0...v2.16.1

v2.16.0

Compare Source

Highlights

Breaking changes and behavior changes
  • Python 3.10 is no longer supported (#​1003). pydantic-settings now requires Python 3.11+, since 3.10 reaches end of life this month. The tomli fallback is gone in favor of stdlib tomllib; the toml extra is kept as an empty extra so pip install pydantic-settings[toml] keeps working.
  • python-dotenv>=1.2.2 is now required (#​971) to pick up the fix for CVE-2026-28684.
  • Aliases are ignored in every source when validate_by_alias=False (#​1033). Env vars, secrets, CLI flags and defaults now use only field names, matching pydantic. An env var named after the alias is now ignored instead of raising extra_forbidden, and the CLI exposes --apple rather than --pomo.
  • validation_alias takes precedence over alias (#​1038). When the two differ, values from JSON/YAML/TOML files and the CLI were silently ignored; they now load. CLI help lists the validation_alias flag first, and CliApp.serialize emits it.
  • CLI case-insensitivity only lowercases registered options (#​1036). With case_sensitive=False, args after -- and those captured by CliUnknownArgs keep their case (-Xmx4G no longer becomes -xmx4g). Unrecognized options are now reported as typed (--NOPE instead of --nope).
  • JSON and YAML config files are read as UTF-8 by default (#​955) instead of the locale encoding, completing the secrets-file fix from 2.15.0. json_file_encoding/yaml_file_encoding still override it.
  • Discriminated union defaults are partially updated again (#​997). This reverts the 2.15.0 regression with nested_model_default_partial_update=True: the default is only dropped when the incoming value selects a different union member.
New features
  • Python 3.15 and pydantic 2.14 support (#​1026, #​1029, #​1022). pydantic 2.14 broke CliApp.run and validate_by_alias=False handling; both are fixed.
  • Cached settings instances via Settings.settings_cached() and Settings.settings_clear_cache() (#​952). These give you a process-local singleton per settings class without hand-rolling lru_cache wrappers. Calling the class directly still builds a fresh instance.
  • AWS Systems Manager Parameter Store source — AWSSystemsManagerSettingsSource (#​941). It recursively reads every parameter under an ssm_path, with / mapping onto nested models. Install it with the new aws-systems-manager extra.
  • env_file_depth (#​940) lets a relative env_file be found in parent directories, mirroring pyproject_toml_depth. This is useful when scripts run from a subdirectory of a monorepo. It defaults to 0, which keeps the current behavior.
  • CliVariadicArg for named variadic options (#​949, #​958). It accepts --param a b c in addition to repeated --param a --param b. Required fields need at least one value.
Bug fixes

CLI

  • CliApp.serialize output now round-trips through CliApp.run for enums, tuples, dates and Decimals (#​988), explicit None values (#​981), empty containers (#​1008), CliVariadicArg values (#​976) and populated CliUnknownArgs fields, which previously raised IndexError (#​992).
  • Empty JSON arrays (--items []) now give an empty list instead of [''] (#​994).
  • Tuples, frozenset, MutableSequence and other collection subtypes are now treated as repeatable/variadic options (#​972), and so are named collection type aliases such as TypeAliasType('Addrs', list[IPvAnyAddress]) (#​1032).
  • cli_exit_on_error=False is now honored in CliSubCommand parsers, which raise SettingsError instead of exiting (#​977).
  • CliSubCommand aliases keep their case with case_sensitive=False (#​989).
  • Each CliUnknownArgs field now receives only its own subcommand's leftover args (#​1004).
  • CliApp.format_help no longer crashes when cli_prefix is set in model_config (#​945).

Type aliases and parsing

  • Named union type aliases (TypeAliasType('V', list[int] | str)) now decode like their inline equivalents in env and dotenv sources, including under Optional, Annotated and custom validation aliases (#​1006, #​1030, #​1041).
  • Resolving a named Annotated type alias no longer mutates shared FieldInfo metadata, which made validators run twice on subclasses or after model_rebuild() (#​979).
  • A bare single-segment AliasPath('SOME_KEY') no longer tries to JSON-decode plain string values (#​980).
  • collections.abc.Set/MutableSet/typing.AbstractSet fields now JSON-decode env values (#​973).
  • A bare typing.Dict field with env_nested_delimiter no longer raises IndexError, which was a regression in 2.13.0 (#​1009).
  • Case-insensitive matching now works for nested pydantic dataclasses (#​1010).

Dotenv, secrets and config files

  • With extra='allow', a non-lowercase env_prefix is now stripped from dotenv extras (#​959, #​968).
  • secrets_case_sensitive=True is now honored on Windows (#​1001).
  • An empty JSON config file is treated as an empty mapping instead of crashing (#​947), matching YAML and TOML.
  • TOML table headers: ~ paths are now expanded when checking that the file exists (#​1034), and an explicit toml_table_header=() now overrides the model config to read the file root (#​1027).

Cloud sources

  • Azure Key Vault and GCP Secret Manager now honor env_parse_none_str (#​1019, #​1040).
  • Azure Key Vault: dash_to_underscore=True now works for nested model fields (#​1025).
  • NestedSecretsSettingsSource now validates its specific constructor arguments (#​975).
  • DotenvFiltering is exported from pydantic_settings.sources.types (#​944).
Documentation
  • Document that runtime validation arguments (strict, extra, context) passed to model_validate() are not applied to BaseSettings, and give a workaround (#​1017).
  • Explain why extra='forbid' doesn't reject misspelled top-level env vars (#​986).
  • Clarify alias plus nested model env lookup with populate_by_name (#​933), and add a nested model example for env_prefix_target (#​953).
  • Fix assorted typos (#​942, #​964).
All changes (including dependency bumps and internal maintenance)

What's Changed

New Contributors

Full Changelog: pydantic/pydantic-settings@v2.15.0...v2.16.0

v2.15.0

Compare Source

Highlights

Behavior changes
  • 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.
  • Fields with unresolved forward references now emit a warning (#​901). Settings sources can silently fail to resolve such fields; they now raise IncompleteFieldDefinitionWarning telling you to call model_rebuild(). If you have filterwarnings = error configured, this may surface as a new failure.
  • Non-JSON env values for strict fields now raise ValidationError (#​926) instead of a less specific error.
New features
  • Show environment variable names in CLI help via 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.
  • GCP: project_id can come from an earlier settings source (#​878), rather than only from the constructor or GOOGLE_CLOUD_PROJECT.
Bug fixes
  • Fix env vars not loading on Windows with case_sensitive=True (#​894). Windows upper-cases os.environ keys, so fields raised Field required instead of picking up their values.
  • Read secret files as UTF-8 instead of the platform locale encoding (#​917). On Windows code pages such as cp1252 this silently corrupted non-ASCII secrets.
  • Fix AliasPath on nested model fields not JSON-decoding env values (#​898).
  • Fix case-insensitive matching for optional nested models (#​905).
  • Fix dotenv extras being wrongly claimed by a complex field sharing a name prefix (#​912) — e.g. dbx_token being swallowed by a db: dict field.
  • Fix nested_model_default_partial_update=True corrupting discriminated unions (#​876).
  • Fix Secret subclasses crashing when loaded from the environment (#​920).
  • Fix enum names not parsing through nested annotations such as Optional[Annotated[MyEnum, ...]] with env_parse_enums=True (#​910).
  • An empty 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).
  • GCP: skip the list_secrets call when case_sensitive=True (#​862), lowering the required IAM permissions to just roles/secretmanager.secretAccessor.
  • AWS: types-boto3[secretsmanager] is no longer required at runtime (#​880).
Documentation
  • Document JSON parsing of complex env values, plus a comma-separated-values recipe (#​919).
  • Recommend an async settings loading pattern (#​908).
  • Clarify behavior when an unprefixed value is present in a dotenv file (#​895).
  • Clarify environment variable helper descriptions (#​867) and fix assorted typos (#​904).
All changes (including dependency bumps and internal maintenance)

What's Changed

New Contributors

Full Changelog: pydantic/pydantic-settings@v2.14.1...v2.15.0


Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate
renovate Bot force-pushed the renovate/pydantic-settings-2.x branch from b18c2ea to 3674158 Compare August 26, 2026 17:04
@renovate
renovate Bot force-pushed the renovate/pydantic-settings-2.x branch from 3674158 to d5b1907 Compare October 14, 2026 17:04
@renovate renovate Bot changed the title fix(deps): update dependency pydantic-settings to ~=2.15.0 fix(deps): update dependency pydantic-settings to ~=2.16.0 Oct 14, 2026
@renovate
renovate Bot force-pushed the renovate/pydantic-settings-2.x branch from d5b1907 to 97fec19 Compare October 20, 2026 13:29
@renovate renovate Bot changed the title fix(deps): update dependency pydantic-settings to ~=2.16.0 fix(deps): update dependency pydantic-settings to ~=2.16.1 Oct 20, 2026
@renovate renovate Bot changed the title fix(deps): update dependency pydantic-settings to ~=2.16.1 fix(deps): update dependency pydantic-settings to ~=2.16.2 Oct 28, 2026
@renovate
renovate Bot force-pushed the renovate/pydantic-settings-2.x branch from 97fec19 to 7df942b Compare October 28, 2026 17:36

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants