def fire(self, *events): ''' run calls bound to `events` **NOW** @param events: event labels ''' try: # clear scratch queue self._sclear() # queue global and local bound callables self._sxtend(self._events(*events)) # run event call chain until scratch queue is exhausted self.outextend(c() for c in iterexcept( self._scratch.popleft, IndexError, )) finally: # clear scratch queue self._sclear() return self
def commit(self): '''consume call chain until exhausted''' self.outextend(c() for c in iterexcept(self._cpopleft, IndexError)) return self