YamlBaseSettings#

pydantic model safir.pydantic.YamlBaseSettings#

Base class for Pydantic settings from a YAML file.

This class is intended to serve as the base class for application settings when the settings are primarily parsed from a YAML configuration file with optional overrides and secrets from environment variables. It enables camel case for validation, allowing all parameters to be specified in the camel-case format that is standard for Helm charts. It also forbids extra settings and disables settings sources other than the constructor (used when reading YAML files) and environment variables.

It is normally used in conjunction with ConfigDependency.

Parameters:
  • _case_sensitive (bool | None, default: None)

  • _nested_model_default_partial_update (bool | None, default: None)

  • _env_prefix (str | None, default: None)

  • _env_prefix_target (Literal['variable', 'alias', 'all'] | None, default: None)

  • _env_file (Path | str | Sequence[Path | str] | None, default: PosixPath('.'))

  • _env_file_encoding (str | None, default: None)

  • _env_file_depth (int | None, default: None)

  • _env_ignore_empty (bool | None, default: None)

  • _env_nested_delimiter (str | None, default: None)

  • _env_nested_max_split (int | None, default: None)

  • _env_parse_none_str (str | None, default: None)

  • _env_parse_enums (bool | None, default: None)

  • _cli_prog_name (str | None, default: None)

  • _cli_parse_args (bool | list[str] | tuple[str, ...] | None, default: None)

  • _cli_settings_source (CliSettingsSource[Any] | None, default: None)

  • _cli_parse_none_str (str | None, default: None)

  • _cli_hide_none_type (bool | None, default: None)

  • _cli_avoid_json (bool | None, default: None)

  • _cli_enforce_required (bool | None, default: None)

  • _cli_use_class_docs_for_groups (bool | None, default: None)

  • _cli_show_env_vars (bool | None, default: None)

  • _cli_exit_on_error (bool | None, default: None)

  • _cli_prefix (str | None, default: None)

  • _cli_flag_prefix_char (str | None, default: None)

  • _cli_implicit_flags (bool | Literal['dual', 'toggle'] | None, default: None)

  • _cli_ignore_unknown_args (bool | None, default: None)

  • _cli_kebab_case (bool | Literal['all', 'no_enums'] | None, default: None)

  • _cli_shortcuts (Mapping[str, str | list[str]] | None, default: None)

  • _secrets_dir (Path | str | Sequence[Path | str] | None, default: None)

  • _build_sources (tuple[tuple[PydanticBaseSettingsSource, ...], dict[str, Any]] | None, default: None)

Config:
  • env_prefix_target: str = all

  • alias_generator: AliasGenerator = AliasGenerator(alias=None, validation_alias=<function YamlBaseSettings.<lambda> at 0x77d36f716820>, serialization_alias=None)

  • validate_by_name: bool = True

classmethod from_file(path)#

Construct a settings object from a configuration file.

Parameters:

path (Path) – Path to the configuration file in YAML.

Returns:

The corresponding settings object.

Return type:

Self

classmethod settings_cached()#

Return the cached default settings instance for this settings class.

The instance is constructed on first use and reused afterwards. Subclasses are cached separately, so caching a class does not affect its parents or children.

Return type:

Self

classmethod settings_clear_cache()#

Remove the cached default settings instance for this settings class, if any.

Only the cache entry for this exact class is removed. Subclasses keep their own cached instances and must be cleared individually.

A settings_cached() call already in flight may still return the instance it was building, so clearing does not retroactively invalidate references other threads hold.

Return type:

None

classmethod settings_customise_sources(settings_cls, init_settings, env_settings, dotenv_settings, file_secret_settings)#

Override the sources of settings.

Deactivate .env and secret file support, since Phalanx doesn’t use them. Allow environment variables to override init parameters, since init parameters come from the YAML configuration file and we want environment variables to take precedent.

Parameters:
  • settings_cls (type[BaseSettings])

  • init_settings (PydanticBaseSettingsSource)

  • env_settings (PydanticBaseSettingsSource)

  • dotenv_settings (PydanticBaseSettingsSource)

  • file_secret_settings (PydanticBaseSettingsSource)

Return type:

tuple[PydanticBaseSettingsSource, ...]