def __len__(self): """len(:class:`Messages`) returns the number of contained messages .. note:: As this iterates over the messages, we will not be able to iterate over them again! So this will fail:: #THIS FAILS msgs = Database().create_query('').search_message() if len(msgs) > 0: #this 'exhausts' msgs # next line raises NotmuchError(STATUS.NOT_INITIALIZED)!!! for msg in msgs: print msg Most of the time, using the :meth:`Query.count_messages` is therefore more appropriate (and much faster). While not guaranteeing that it will return the exact same number than len(), in my tests it effectively always did so. """ if self._msgs is None: raise NotmuchError(STATUS.NOT_INITIALIZED) i=0 while nmlib.notmuch_messages_valid(self._msgs): nmlib.notmuch_messages_move_to_next(self._msgs) i += 1 self._msgs = None return i
def next(self): if self._msgs is None: raise NotmuchError(STATUS.NOT_INITIALIZED) if not nmlib.notmuch_messages_valid(self._msgs): self._msgs = None raise StopIteration msg = Message(Messages._get (self._msgs), self) nmlib.notmuch_messages_move_to_next(self._msgs) return msg
def next(self): if self._msgs is None: raise NotmuchError(STATUS.NOT_INITIALIZED) if not nmlib.notmuch_messages_valid(self._msgs): self._msgs = None raise StopIteration msg = Message(Messages._get(self._msgs), self) nmlib.notmuch_messages_move_to_next(self._msgs) return msg
def __nonzero__(self): """ :return: True if there is at least one more thread in the Iterator, False if not.""" return self._msgs is not None and \ nmlib.notmuch_messages_valid(self._msgs) > 0