Skip to content

pavelzw/pydantic-settings-sops

Repository files navigation

pydantic-settings-sops

CI conda-forge pypi-version python-version

SOPS extension for pydantic-settings.

This package allows you to read SOPS files into a pydantic-settings object.

You can install this package via

pip install pydantic-settings-sops # or pixi add pydantic-settings-sops

Example

To use pydantic-settings-sops, adjust your settings sources by defining a custom settings_customise_sources. For more information on pydantic-settings, please visit the official documentation.

If your settings are always encrypted with SOPS, you can use the following example:

from pydantic_settings import ( BaseSettings, PydanticBaseSettingsSource, SettingsConfigDict, ) from pydantic_settings_sops import SOPSConfigSettingsSource class SettingsExample(BaseSettings): model_config = SettingsConfigDict(yaml_file="secrets.yaml") foobar: str @classmethod def settings_customise_sources( cls, settings_cls: type[BaseSettings], init_settings: PydanticBaseSettingsSource, **other_settings: PydanticBaseSettingsSource, ) -> tuple[PydanticBaseSettingsSource, ...]: return init_settings, SOPSConfigSettingsSource(settings_cls), *other_settings.values()

If you need to handle JSON or YAML files that might be encrypted or not (i.e., encrypted in development but decrypted in production), you must use the specific source classes, SopsYamlSettingsSource or SopsJsonSettingsSource:

from pydantic_settings import ( BaseSettings, PydanticBaseSettingsSource, SettingsConfigDict, ) from pydantic_settings_sops import SopsYamlSettingsSource class SettingsExample(BaseSettings): model_config = SettingsConfigDict(yaml_file="secrets.yaml") foobar: str @classmethod def settings_customise_sources( cls, settings_cls: type[BaseSettings], init_settings: PydanticBaseSettingsSource, **other_settings: PydanticBaseSettingsSource, ) -> tuple[PydanticBaseSettingsSource, ...]: return init_settings, SopsYamlSettingsSource(settings_cls), *other_settings.values()

Installation

This project is managed by pixi. You can install the package in development mode using:

git clone https://github.com/pavelzw/pydantic-settings-sops cd pydantic-settings-sops pixi run pre-commit-install pixi run postinstall pixi run test

About

SOPS extension for pydantic-settings

Topics

Resources

License

Stars

Watchers

Forks

Contributors 4

  •  
  •  
  •  
  •  

Languages