Coroutine

Coroutine provider creates a coroutine. Can be resolved only with using the async_resolve method.

Example

    import asyncio
    from typing import Tuple

    from injection import DeclarativeContainer, providers

    async def coroutine(arg1: int, arg2: int) -> Tuple[int, int]:
        return arg1, arg2

    class DIContainer(DeclarativeContainer):
        provider = providers.Coroutine(coroutine, arg1=1, arg2=2)

    arg1, arg2 = asyncio.run(DIContainer.provider.async_resolve())
    assert (arg1, arg2) == (1, 2)

    async def main() -> None:
        arg1, arg2 = await DIContainer.provider.async_resolve(arg1=500, arg2=600)
        assert (arg1, arg2) == (500, 600)

    asyncio.run(main())