"""`Configuration` provider values loading example."""

import os

from dependency_injector import containers, providers


class Container(containers.DeclarativeContainer):

    config = providers.Configuration()


if __name__ == '__main__':
    container = Container()

    # Emulate environment variables
    os.environ['AWS_ACCESS_KEY_ID'] = 'KEY'
    os.environ['AWS_SECRET_ACCESS_KEY'] = 'SECRET'

    container.config.aws.access_key_id.from_env('AWS_ACCESS_KEY_ID')
    container.config.aws.secret_access_key.from_env('AWS_SECRET_ACCESS_KEY')
    container.config.optional.from_env('UNDEFINED', 'default_value')

    assert container.config.aws.access_key_id() == 'KEY'
    assert container.config.aws.secret_access_key() == 'SECRET'
    assert container.config.optional() == 'default_value'
