Plugins in PydaConf

PydaConf supports a pluggable architecture, allowing users to inject dynamic values into configurations from external sources such as environment variables, encrypted secrets, and files.

Built-in Plugins

PydaConf includes several built-in plugins:

Plugin Description
ENV Loads secrets from environment variables.
SEALED Handles encrypted secrets using a symmetric key.
FILE_CONTENT Reads content from a file (useful for mounted secrets in containers).

Using Plugins in Configuration Files

You can reference plugins in your configuration files using a PREFIX:///VALUE syntax.

Example: Environment Variables

api_key: ENV:///API_KEY

If the API_KEY environment variable is set, PydaConf will inject its value.

Example: Sealed Secrets

database_password: SEALED:///gAAAAABnp...

Decryption requires setting PYDACONF_SEALED_KEY as an environment variable.

Example: File Content

cert_content: FILE_CONTENT:///path/to/cert.pem

Registering Custom Plugins

You can develop and register your own local custom plugins.

from pydaconf.plugins.base import PluginBase
from collections.abc import Callable

class CustomPlugin(PluginBase):
    PREFIX = "CUSTOM"

    def run(self, value: str, on_update_callback: Callable[[str], None]) -> str:
        return f"Processed {value}"

To use the custom plugin:

provider = PydaConf[Config]()
provider.register_plugin(CustomPlugin)

Next Steps

Learn how to Develop and Package Plugin and extend PydaConf further!