Add config itemselector example

This commit is contained in:
Roman Mogylatov 2020-08-03 17:40:01 -04:00
parent 804031ab26
commit 3b0ad64788

View File

@ -0,0 +1,47 @@
"""`Configuration` provider dynamic item selector.
Details: https://github.com/ets-labs/python-dependency-injector/issues/274
"""
import dataclasses
from dependency_injector import providers
@dataclasses.dataclass
class Foo:
option1: object
option2: object
config = providers.Configuration(default={
'target': 'A',
'items': {
'A': {
'option1': 60,
'option2': 80,
},
'B': {
'option1': 10,
'option2': 20,
},
},
})
foo = providers.Factory(
Foo,
option1=config.items[config.target].option1,
option2=config.items[config.target].option2,
)
if __name__ == '__main__':
config.target.from_env('TARGET')
f = foo()
print(f.option1, f.option2)
# $ TARGET=A python configuration_itemselector.py
# 60 80
# $ TARGET=B python configuration_itemselector.py
# 10 20