earwax.promises.staggered_promise module¶
Provides the StaggeredPromise class.
-
class
earwax.promises.staggered_promise.StaggeredPromise(func: Callable[[...], Generator[float, None, T]])¶ Bases:
earwax.promises.base.PromiseA promise that can suspend itself at will.
I found myself missing the MOO-style suspend() function, so thought I’d make the same capability available in earwax:
@StaggeredPromise.decorate def promise() -> StaggeredPromiseGeneratorType: game.output('Hello.') yield 2.0 game.output('World.') promise.run() game.run(window)
This class supports all the promise events found on
earwax.Promise, and also has aon_next()event, which will fire whenever a promise suspends:@promise.event def on_next(delay: float) -> None: print(f'I waited {delay}.')
Variables: - func – The function to run.
- generator – The generator returned by
self.func.
-
cancel() → None¶ Cancel this promise.
Cancels
self.generator, and sets the proper state.
-
classmethod
decorate(func: Callable[[...], Generator[float, None, T]]) → earwax.promises.staggered_promise.StaggeredPromise¶ Make an instance from a decorated function.
This function acts as a decorator method for returning
earwax.StaggeredPromiseinstances.Using this function seems to help mypy figure out what type your function is.
Parameters: func – The function to decorate.
-
do_next(dt: Optional[float]) → None¶ Advance execution.
Calls
next(self.generator), and then suspend for however long the function demands.If
StopIterationis raised, then the args from that exception are sent to theself.on_doneevent.If any other exception is raised, then that exception is passed along to the
self.on_errorevent.Parameters: dt – The time since the last run, as passed by
pyglet.clock.schedule_once.If this is the first time this method is called,
dtwill beNone.
-
on_next(delay: float) → None¶ Do something when execution is advanced.
This event is dispatched every time
nextis called onself.func.Parameters: delay – The delay that was requested by the function.
-
run(*args, **kwargs) → None¶ Run this promise.
Start
self.funcrunning, and set the proper state.Parameters: - args – The positional arguments passed to
self.func. - kwargs – The keyword arguments passed to
self.func.
- args – The positional arguments passed to