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 =
    assert (arg1, arg2) == (1, 2)
    assert asyncio.iscoroutinefunction(container.coroutine_provider)


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.


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