From dccd26c0be1fec347247dce46c811461b9ef91a7 Mon Sep 17 00:00:00 2001 From: Roman Mogylatov Date: Tue, 26 Oct 2021 20:43:06 -0400 Subject: [PATCH] Add example --- .../configuration_pydantic_init.py | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 examples/providers/configuration/configuration_pydantic_init.py diff --git a/examples/providers/configuration/configuration_pydantic_init.py b/examples/providers/configuration/configuration_pydantic_init.py new file mode 100644 index 00000000..f904d9df --- /dev/null +++ b/examples/providers/configuration/configuration_pydantic_init.py @@ -0,0 +1,35 @@ +"""`Configuration` provider values loading example.""" + +import os + +from dependency_injector import containers, providers +from pydantic import BaseSettings, Field + +# Emulate environment variables +os.environ["AWS_ACCESS_KEY_ID"] = "KEY" +os.environ["AWS_SECRET_ACCESS_KEY"] = "SECRET" + + +class AwsSettings(BaseSettings): + + access_key_id: str = Field(env="aws_access_key_id") + secret_access_key: str = Field(env="aws_secret_access_key") + + +class Settings(BaseSettings): + + aws: AwsSettings = AwsSettings() + optional: str = Field(default="default_value") + + +class Container(containers.DeclarativeContainer): + + config = providers.Configuration(pydantic_settings=[Settings()]) + + +if __name__ == "__main__": + container = Container() + + assert container.config.aws.access_key_id() == "KEY" + assert container.config.aws.secret_access_key() == "SECRET" + assert container.config.optional() == "default_value"