X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=bindings%2Fpython%2Fnotmuch%2Ftag.py;h=e123b0f317059f4429125482a3941f325af9d4f5;hp=cf1152a1e5747bc46ed0c3089fb6d60f1f973da4;hb=aeecafa694e8296411ad21cee1b7de094600babf;hpb=01cc4a31155dc71643fce1b619778493c1ff0dd7 diff --git a/bindings/python/notmuch/tag.py b/bindings/python/notmuch/tag.py index cf1152a1..e123b0f3 100644 --- a/bindings/python/notmuch/tag.py +++ b/bindings/python/notmuch/tag.py @@ -81,15 +81,26 @@ class Tags(object): def next(self): if self._tags is None: raise NotmuchError(STATUS.NOT_INITIALIZED) - - if not nmlib.notmuch_tags_valid(self._tags): + # No need to call nmlib.notmuch_tags_valid(self._tags); + # Tags._get safely returns None, if there is no more valid tag. + tag = Tags._get (self._tags) + if tag is None: self._tags = None raise StopIteration - - tag = Tags._get (self._tags) nmlib.notmuch_tags_move_to_next(self._tags) return tag + def __nonzero__(self): + """Implement bool(Tags) check that can be repeatedly used + + 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 nmlib.notmuch_tags_valid(self._tags) > 0 + def __len__(self): """len(:class:`Tags`) returns the number of contained tags