Open
Description
Is there any way to pass config dict as **kwargs to my class?
There is 2 problem I try to solve:
- Too many args will lead to an additional manual labor of mapping config
- in example below
session_db
has a default, which become useless as if not provided in config it will beNone
.
from dependency_injector import containers, providers
class Client:
def __init__(
self,
api_id: int,
session_db: str | Path = "some default value",
):
self.api_id = api_id
self.session_db = session_db
class ApplicationContainer(containers.DeclarativeContainer):
config = providers.Configuration()
my_client = providers.Singleton(
Client,
config.client.api_id,
config.client.session_db,
)
container = ApplicationContainer()
container.config.from_dict(
{
"client": {
"api_id": "id",
},
},
)
my_client = container.my_client()
assert my_client.session_db == "some default value"
What I want is something like
class ApplicationContainer(containers.DeclarativeContainer):
config = providers.Configuration()
my_client = providers.Singleton(
Client,
**config.client
)