# return the Directory, init it with the absolute path
return Directory(abs_dirpath, dir_p, self)
- def add_message(self, filename):
+ def add_message(self, filename, sync_maildir_flags=False):
"""Adds a new message to the database
- `filename` should be a path relative to the path of the open
+ :param filename: should be a path relative to the path of the open
database (see :meth:`get_path`), or else should be an absolute
filename with initial components that match the path of the
database.
notmuch database will reference the filename, and will not copy the
entire contents of the file.
- If the message contains Maildir flags, we will -depending on the
- notmuch configuration- sync those tags to initial notmuch tags.
+ :param sync_maildir_flags: If the message contains Maildir
+ flags, we will -depending on the notmuch configuration- sync
+ those tags to initial notmuch tags, if set to `True`. It is
+ `False` by default to remain consistent with the libnotmuch
+ API. You might want to look into the underlying method
+ :meth:`Message.maildir_flags_to_tags`.
:returns: On success, we return
if not status in [STATUS.SUCCESS, STATUS.DUPLICATE_MESSAGE_ID]:
raise NotmuchError(status)
- #construct Message(), sync initial tags from Maildir flags and return
+ #construct Message() and return
msg = Message(msg_p, self)
- msg.maildir_flags_to_tags()
+ #automatic sync initial tags from Maildir flags
+ if sync_maildir_flags:
+ msg.maildir_flags_to_tags()
return (msg, status)
def remove_message(self, filename):
raise NotmuchError(STATUS.NULL_POINTER)
return Tags(tags_p, self)
- def add_tag(self, tag, sync_maildir_flags=True):
+ def add_tag(self, tag, sync_maildir_flags=False):
"""Adds a tag to the given message
Adds a tag to the current message. The maximal tag length is defined in
:param sync_maildir_flags: If notmuch configuration is set to do
this, add maildir flags corresponding to notmuch tags. See
- :meth:`tags_to_maildir_flags`. Use False if you want to
- add/remove many tags on a message without having to
- physically rename the file every time. Do note, that this
- will do nothing when a message is frozen, as tag changes
- will not be committed to the database yet.
+ underlying method :meth:`tags_to_maildir_flags`. Use False
+ if you want to add/remove many tags on a message without
+ having to physically rename the file every time. Do note,
+ that this will do nothing when a message is frozen, as tag
+ changes will not be committed to the database yet.
:returns: STATUS.SUCCESS if the tag was successfully added.
Raises an exception otherwise.
self.tags_to_maildir_flags()
return STATUS.SUCCESS
- def remove_tag(self, tag, sync_maildir_flags=True):
+ def remove_tag(self, tag, sync_maildir_flags=False):
"""Removes a tag from the given message
If the message has no such tag, this is a non-operation and
:param tag: String with a 'tag' to be removed.
:param sync_maildir_flags: If notmuch configuration is set to do
this, add maildir flags corresponding to notmuch tags. See
- :meth:`tags_to_maildir_flags`. Use False if you want to
- add/remove many tags on a message without having to
- physically rename the file every time. Do note, that this
- will do nothing when a message is frozen, as tag changes
- will not be committed to the database yet.
+ underlying method :meth:`tags_to_maildir_flags`. Use False
+ if you want to add/remove many tags on a message without
+ having to physically rename the file every time. Do note,
+ that this will do nothing when a message is frozen, as tag
+ changes will not be committed to the database yet.
:returns: STATUS.SUCCESS if the tag was successfully removed or if
the message had no such tag.
- def remove_all_tags(self, sync_maildir_flags=True):
+ def remove_all_tags(self, sync_maildir_flags=False):
"""Removes all tags from the given message.
See :meth:`freeze` for an example showing how to safely
replace tag values.
+
:param sync_maildir_flags: If notmuch configuration is set to do
this, add maildir flags corresponding to notmuch tags. See
:meth:`tags_to_maildir_flags`. Use False if you want to
Also, if this filename is in a directory named "new", rename it
to be within the neighboring directory named "cur".
- Usually, you do not need to call this manually as
- tag changing methods should be implicitly calling it.
+ Do note that calling this method while a message is frozen might
+ not work yet, as the modified tags have not been committed yet
+ to the database.
:returns: a :class:`STATUS`. In short, you want to see
notmuch.STATUS.SUCCESS here. See there for details."""
is, the flags from the multiple filenames are combined with the
logical OR operator.)
- Usually, you do not need to call this manually as
- :meth:`Database.add_message` implicitly calls it.
+ As a convenience, you can set the sync_maildir_flags parameter in
+ :meth:`Database.add_message` to implicitly call this.
:returns: a :class:`STATUS`. In short, you want to see
notmuch.STATUS.SUCCESS here. See there for details."""