- .. note:: As this iterates over the tags, we will not be able
- to iterate over them again (as in retrieve them)! If
- the tags have been exhausted already, this will raise a
- :exc:`NotmuchError` STATUS.NOT_INITIALIZED on
- subsequent attempts.
- """
- if self._tags is None:
- raise NotmuchError(STATUS.NOT_INITIALIZED)
-
- i=0
- while nmlib.notmuch_tags_valid(self._msgs):
- nmlib.notmuch_tags_move_to_next(self._msgs)
- i += 1
- self._tags = None
- return i
-
- def __str__(self):
- """The str() representation of Tags() is a space separated list of tags
-
- .. note:: As this iterates over the tags, we will not be able
- to iterate over them again (as in retrieve them)! If
- the tags have been exhausted already, this will raise a
- :exc:`NotmuchError` STATUS.NOT_INITIALIZED on
- subsequent attempts.
+ If __nonzero__ is not implemented, "if Tags()"
+ will implicitly call __len__, using up our iterator, so it is
+ important that this function is defined.
+
+ :returns: True if the Tags() iterator has at least one more Tag
+ left."""
+ return self._valid(self._tags) > 0
+
+ def __unicode__(self):
+ """string representation of :class:`Tags`: a space separated list of tags
+
+ .. note::
+
+ As this iterates over the tags, we will not be able to iterate over
+ them again (as in retrieve them)! If the tags have been exhausted
+ already, this will raise a :exc:`NotInitializedError`on subsequent
+ attempts.