"""`Configuration` provider dynamic item selector."""

import dataclasses

from dependency_injector import containers, providers


@dataclasses.dataclass
class Foo:
    option1: object
    option2: object


class Container(containers.DeclarativeContainer):

    config = providers.Configuration(default={
        'target': 'A',
        'items': {
            'A': {
                'option1': 60,
                'option2': 80,
            },
            'B': {
                'option1': 10,
                'option2': 20,
            },
        },
    })

    foo_factory = providers.Factory(
        Foo,
        option1=config.items[config.target].option1,
        option2=config.items[config.target].option2,
    )


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

    container.config.target.from_env('TARGET')
    foo = container.foo_factory()
    print(foo.option1, foo.option2)

    # $ TARGET=A python configuration_itemselector.py
    # 60 80
    # $ TARGET=B python configuration_itemselector.py
    # 10 20
