For-in loops, https://docs.python.org/3/whatsnew/3.3.html#pep-380-syntax-for-delegating-to-a-subgenerator[``yield from``] and iterable unpacking only work with https://docs.python.org/3/glossary.html#term-iterable[iterable objects]. In order to be iterable, an object should have either an ``\_\_iter\_\_`` method or a ``\_\_getitem\_\_`` method implementing the https://docs.python.org/3/glossary.html#term-sequence[Sequence] semantic.
Note also that iterating over an https://docs.python.org/3/glossary.html#term-asynchronous-iterable[asynchronous iterable], i.e. an object having the ``\_\_aiter\_\_`` method, requires the use of https://docs.python.org/3/reference/compound_stmts.html#the-async-for-statement[``async for ... in``] instead of ``for ... in``.