You may have to use the new yield from, available since Python 3.3, known as “delegated generator”.
If I understood the question correctly, I came to the same issue, and found an answer elsewhere.
I wanted to do something like this:
def f():
def g():
do_something()
yield x
…
yield y
do_some_other_thing()
yield a
…
g() # Was not working.
yield g() # Was not what was expected neither; yielded None.
…
yield b
I now use this instead:
yield from g() # Now it works, it yields x and Y.
I got the answer from this page: Python 3: Using “yield from” in Generators – Part 1 (simeonvisser.com).