Coroutine provider

Coroutine provider creates a coroutine.

import asyncio

from dependency_injector import containers, providers


async def coroutine(arg1, arg2):
    await asyncio.sleep(0.1)
    return arg1, arg2


class Container(containers.DeclarativeContainer):

    coroutine_provider = providers.Coroutine(coroutine, arg1=1, arg2=2)


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

    arg1, arg2 = asyncio.run(container.coroutine_provider())
    assert (arg1, arg2) == (1, 2)
    assert asyncio.iscoroutinefunction(container.coroutine_provider)

Note

The example works on Python 3.7+. For earlier versions use loop.run_until_complete().

Coroutine provider handles an injection of the dependencies the same way like a Factory provider.

Note

Coroutine provider returns True for asyncio.iscoroutinefunction() check.