Leftovers isn't lazy enough

1) initialize seen to empty
2) get all posts not in seen
3) add posts to seen because the generator was iterated over lazily
4) wonder why it looks like there weren't any posts in seen

yeah... leftovers has to be lazy too.
This commit is contained in:
Cy 2020-06-01 02:11:47 +00:00 committed by Cy
parent 05605bf8ff
commit e76c758762
1 changed files with 8 additions and 5 deletions

View File

@ -33,8 +33,10 @@ def maketree(descendants):
yield lookup[rep], onelevel(subreps)
else:
yield lookup[rep], ()
leftovers = set(lookup.keys()) - seen
return onelevel(roots), (lookup[leftover] for leftover in leftovers)
def leftovers():
for leftover in set(lookup.keys()) - seen:
yield lookup[leftover]
return onelevel(roots), leftovers
# returns (status, gen[(status, gen[(status, ...), (status, ())]), ...])
@ -60,12 +62,13 @@ def unmaketree(tree):
def build(descendants):
herp, derp = maketree(descendants)
derp = tuple(derp)
pprint(("derp?", derp))
yield IN
yield from unmaketree(herp)
yield OUT
yield IN
derp = tuple(derp())
pprint("derp", derp)
for post in derp:
yield POST(derp)
pprint(("derp?", post))
yield POST(post)
yield OUT