What is the difference between @types.coroutine and @asyncio.coroutine decorators?
<p>Documentations say:</p>

<blockquote>
  <p>@asyncio.coroutine</p>
  
  <p>Decorator to mark generator-based coroutines. This enables the generator use yield from to call async def coroutines, and also
  enables the generator to be called by async def coroutines, for
  instance using an await expression.</p>
</blockquote>

<p>_</p>

<blockquote>
  <p>@types.coroutine(gen_func) </p>
  
  <p>This function transforms a generator
  function into a coroutine function which returns a generator-based
  coroutine. The generator-based coroutine is still a generator
  iterator, but is also considered to be a coroutine object and is
  awaitable. However, it may not necessarily implement the <code>__await__()</code>
  method.</p>
</blockquote>

<p>So is seems like purposes is the same - to flag a generator as a coroutine (what <code>async def</code>in Python3.5 and higher does with some features).</p>

<p>When need to use <code>asyncio.coroutine</code> when need to use <code>types.coroutine</code>, what is the diffrence?</p>