yield obj
def _read_command_list(self):
- for retval in self._command_list:
- yield retval()
- self._command_list = None
+ try:
+ for retval in self._command_list:
+ yield retval()
+ finally:
+ self._command_list = None
self._fetch_nothing()
def _iterator_wrapper(self, iterator):
- self._iterating = True
- for item in iterator:
- yield item
- self._iterating = False
+ try:
+ for item in iterator:
+ yield item
+ finally:
+ self._iterating = False
def _wrap_iterator(self, iterator):
if not self.iterate:
return list(iterator)
+ self._iterating = True
return self._iterator_wrapper(iterator)
def _fetch_nothing(self):
def command_list_end(self):
if self._command_list is None:
raise CommandListError("Not in command list")
+ if self._iterating:
+ raise IteratingError("Already iterating over a command list")
self._write_command("command_list_end")
return self._fetch_command_list()