I have a Python generator that can call itself to get more elements to yield. It looks like this:
def gen(list): # ... if list: for x in gen
There's been some call for a yield from or the like that "passes through" all the values returned by a subgenerator. See PEP 380 for some ideas that have been bounced around. However, nothing has been implemented yet. Your first example is correct.
yield from