List provider

List provider provides a list of values.

import dataclasses
from typing import List

from dependency_injector import containers, providers


@dataclasses.dataclass
class Module:
    name: str


@dataclasses.dataclass
class Dispatcher:
    modules: List[Module]


class Container(containers.DeclarativeContainer):

    dispatcher_factory = providers.Factory(
        Dispatcher,
        modules=providers.List(
            providers.Factory(Module, name="m1"),
            providers.Factory(Module, name="m2"),
        ),
    )


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

    dispatcher = container.dispatcher_factory()

    assert isinstance(dispatcher.modules, list)
    assert dispatcher.modules[0].name == "m1"
    assert dispatcher.modules[1].name == "m2"

    # Call "dispatcher = container.dispatcher_factory()" is equivalent to:
    # dispatcher = Dispatcher(
    #     modules=[
    #         Module(name="m1"),
    #         Module(name="m2"),
    #     ],
    # )

List provider handles positional arguments the same way as a Factory provider.

Note

Keyword argument are not supported.