- tags_p = Message._get_tags(self._msg)
- if tags_p == None:
- raise NotmuchError(STATUS.NULL_POINTER)
- return Tags(tags_p, self)
-
- def add_tag(self, tag):
- """Add a tag to the given message
-
- Adds a tag to the current message. The maximal tag length is defined in
- the notmuch library and is currently 200 bytes.
-
- :param tag: String with a 'tag' to be added.
- :returns: STATUS.SUCCESS if the tag was successfully added.
- Raises an exception otherwise.
- :exception: :exc:`NotmuchError`. They have the following meaning:
-
- STATUS.NULL_POINTER
- The 'tag' argument is NULL
- STATUS.TAG_TOO_LONG
- The length of 'tag' is too long
- (exceeds Message.NOTMUCH_TAG_MAX)
- STATUS.READ_ONLY_DATABASE
- Database was opened in read-only mode so message cannot be
- modified.
- STATUS.NOT_INITIALIZED
- The message has not been initialized.
- """
- if self._msg is None:
- raise NotmuchError(STATUS.NOT_INITIALIZED)
-
- status = nmlib.notmuch_message_add_tag (self._msg, tag)
-
- if STATUS.SUCCESS == status:
- # return on success
- return status
-
- raise NotmuchError(status)
-
- def remove_tag(self, tag):
- """Removes a tag from the given message
-
- If the message has no such tag, this is a non-operation and
- will report success anyway.
-
- :param tag: String with a 'tag' to be removed.
- :returns: STATUS.SUCCESS if the tag was successfully removed or if
- the message had no such tag.
- Raises an exception otherwise.
- :exception: :exc:`NotmuchError`. They have the following meaning:
-
- STATUS.NULL_POINTER
- The 'tag' argument is NULL
- STATUS.TAG_TOO_LONG
- The length of 'tag' is too long
- (exceeds NOTMUCH_TAG_MAX)
- STATUS.READ_ONLY_DATABASE
- Database was opened in read-only mode so message cannot
- be modified.
- STATUS.NOT_INITIALIZED
- The message has not been initialized.
- """
- if self._msg is None:
- raise NotmuchError(STATUS.NOT_INITIALIZED)
-
- status = nmlib.notmuch_message_remove_tag(self._msg, tag)
-
- if STATUS.SUCCESS == status:
- # return on success
- return status
-
- raise NotmuchError(status)
-
- def remove_all_tags(self):
- """Removes all tags from the given message.
-
- See :meth:`freeze` for an example showing how to safely
- replace tag values.
-
- :returns: STATUS.SUCCESS if the tags were successfully removed.
- Raises an exception otherwise.
- :exception: :exc:`NotmuchError`. They have the following meaning:
-
- STATUS.READ_ONLY_DATABASE
- Database was opened in read-only mode so message cannot
- be modified.
- STATUS.NOT_INITIALIZED
- The message has not been initialized.
- """
- if self._msg is None:
- raise NotmuchError(STATUS.NOT_INITIALIZED)
-
- status = nmlib.notmuch_message_remove_all_tags(self._msg)
-
- if STATUS.SUCCESS == status:
- # return on success
- return status
-
- raise NotmuchError(status)