Nick Coghlan wrote: > It ends up looking like this: > > def __call__(self, value=None): > """ Call a generator as a coroutine > > Returns the first argument supplied to StopIteration or > None if no argument was supplied. > Raises ContinueIteration with the value yielded as the > argument if the generator yields a value > """ > if not self.__started: > raise RuntimeError("Coroutine not started") > try: > if exc: > yield_val = self.throw(value, *exc) > else: > yield_val = self.send(value) > except (StopIteration), ex: > if ex.args: > return args[0] > else: > raise ContinueIteration(yield_val) Oops, I didn't finish fixing this after I added unwind_call(). Try this version instead: def __call__(self, value=None): """ Call a generator as a coroutine Returns the first argument supplied to StopIteration or None if no argument was supplied. Raises ContinueIteration with the value yielded as the argument if the generator yields a value """ try: yield_val = self.send(value) except (StopIteration), ex: if ex.args: return args[0] else: raise ContinueIteration(yield_val) Cheers, Nick. -- Nick Coghlan | ncoghlan at gmail.com | Brisbane, Australia --------------------------------------------------------------- http://boredomandlaziness.blogspot.com
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4