Skip to content

Providers - pass config dict as kwargs to provided class #881

@frenzyk

Description

@frenzyk

Is there any way to pass config dict as **kwargs to my class?
There is 2 problem I try to solve:

  1. Too many args will lead to an additional manual labor of mapping config
  2. in example below session_db has a default, which become useless as if not provided in config it will be None.
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 )

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions