def iscoroutinefunction(func):
    '\n    Return True if func is a coroutine function (a function defined with async\n    def syntax, and doesn\'t contain yield), or a function decorated with\n    @asyncio.coroutine.\n\n    Note: copied and modified from Python 3.5\'s builtin couroutines.py to avoid\n    importing asyncio directly, which in turns also initializes the "logging"\n    module as a side-effect (see issue #8).\n    '
    return (inspect.iscoroutinefunction(func) or getattr(func, '_is_coroutine', False))
Return True if func is a coroutine function (a function defined with async
def syntax, and doesn't contain yield), or a function decorated with
@asyncio.coroutine.

Note: copied and modified from Python 3.5's builtin couroutines.py to avoid
importing asyncio directly, which in turns also initializes the "logging"
module as a side-effect (see issue #8).
def iscoroutinefunction(func):
    '\n    Return True if func is a coroutine function (a function defined with async\n    def syntax, and doesn\'t contain yield), or a function decorated with\n    @asyncio.coroutine.\n\n    Note: copied and modified from Python 3.5\'s builtin couroutines.py to avoid\n    importing asyncio directly, which in turns also initializes the "logging"\n    module as a side-effect (see issue #8).\n    '
    return (inspect.iscoroutinefunction(func) or getattr(func, '_is_coroutine', False))